| Author |
Message |
![[Post New]](/JForum/templates/default/images/icon_minipost_new.gif) 04/01/2007 13:26:53
|
gector
Joined: 15/12/2006 00:00:00
Messages: 27
Offline
|
I'm getting a nullpointer exception when my user session times out on the HTML tree page. Is there a way I can get the navigationTree.jspx to return to the login page after timing out?
Here's the exception and the code:
[list]
14:17:16,767 ERROR [PersistentFacesServlet] Exception executing lifecycle or setting up persistent context. null
java.lang.NullPointerException
at com.icesoft.faces.component.tree.TreeRenderer.encodeNode(TreeRenderer.java:359)
at com.icesoft.faces.component.tree.TreeRenderer.encodeParentAndChildNodes(TreeRenderer.java:284)
at com.icesoft.faces.component.tree.TreeRenderer.encodeChildren(TreeRenderer.java:237)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:524)
at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:341
)
at com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:97)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:524)
at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:341
)
at com.icesoft.faces.renderkit.dom_html_basic.GridRenderer.encodeChildren(GridRenderer.java:197)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:524)
at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:531)
at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:535)
at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:535)
at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:535)
at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:535)
at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:521)
at com.icesoft.faces.application.D2DViewHandler.renderView(D2DViewHandler.java:149)
at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:384)
at com.icesoft.faces.webapp.xmlhttp.PersistentFacesServlet.service(PersistentFacesServlet.java:394)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.jboss.seam.servlet.SeamExceptionFilter.doFilter(SeamExceptionFilter.java:46)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java
:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
at java.lang.Thread.run(Thread.java:595)
14:17:16,814 ERROR [SeamExceptionFilter] uncaught exception handled by Seam
javax.servlet.ServletException
at com.icesoft.faces.webapp.xmlhttp.PersistentFacesServlet.service(PersistentFacesServlet.java:437)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.jboss.seam.servlet.SeamExceptionFilter.doFilter(SeamExceptionFilter.java:46)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java
:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
at java.lang.Thread.run(Thread.java:595)
14:17:16,814 ERROR [[Persistent Faces Servlet]] Servlet.service() for servlet Persistent Faces Servlet threw exception
java.lang.NullPointerException
at com.icesoft.faces.component.tree.TreeRenderer.encodeNode(TreeRenderer.java:359)
at com.icesoft.faces.component.tree.TreeRenderer.encodeParentAndChildNodes(TreeRenderer.java:284)
at com.icesoft.faces.component.tree.TreeRenderer.encodeChildren(TreeRenderer.java:237)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:524)
at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:341
)
at com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:97)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:524)
at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:341
)
at com.icesoft.faces.renderkit.dom_html_basic.GridRenderer.encodeChildren(GridRenderer.java:197)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:524)
at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:531)
at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:535)
at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:535)
at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:535)
at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:535)
at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:521)
at com.icesoft.faces.application.D2DViewHandler.renderView(D2DViewHandler.java:149)
at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:384)
at com.icesoft.faces.webapp.xmlhttp.PersistentFacesServlet.service(PersistentFacesServlet.java:394)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.jboss.seam.servlet.SeamExceptionFilter.doFilter(SeamExceptionFilter.java:46)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java
:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
at java.lang.Thread.run(Thread.java:595)
[/list]
Code:
faces-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<faces-config>
<managed-bean>
<managed-bean-name>panelStack</managed-bean-name>
<managed-bean-class>gov.dot.marad.util.web.PanelStackBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>item</managed-bean-name>
<managed-bean-class>gov.dot.marad.util.web.PanelSelectUserObject</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<navigation-rule>
<from-view-id>/userLogin.jspx</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/treeNavigation.jspx</to-view-id>
<redirect/>
</navigation-case>
<navigation-case>
<from-outcome>failure</from-outcome>
<to-view-id>/userLogin.jspx</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/treeNavigation.jspx</from-view-id>
<navigation-case>
<from-outcome>*</from-outcome>
<to-view-id>/userLogin.jspx</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
<!-- A phase listener is needed by all Seam applications -->
<lifecycle>
<phase-listener>
org.jboss.seam.jsf.SeamPhaseListener
</phase-listener>
</lifecycle>
</faces-config>
Code:
treeNavigation.jspx
<f:view xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ice="http://www.icesoft.com/icefaces/component">
<ice:outputDeclaration doctypeRoot="HTML"
doctypePublic="-//W3C//DTD HTML 4.01 Transitional//EN"
doctypeSystem="http://www.w3.org/TR/html4/loose.dtd"/>
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1"></meta>
<title>Tree Component Tutorial</title>
<link href="./xmlhttp/css/xp/xp.css" rel="stylesheet"
type="text/css"/>
</head>
<body>
<h2>Tree Selection Example</h2>
<ice:form>
<ice:panelGrid columns="2" cellspacing="5">
<!-- first column, for tree navigation -->
<ice:panelGroup style="border: 1px solid gray; height: 300px;">
<!--
This is a very links tree comprising of only text nodes. The
expand and contract images are rendered because the "imageDir"
attribute on the tree component has been set to a known path.
-->
<ice:tree id="tree"
value="#{navTree.model}"
var="item"
hideRootNode="false"
hideNavigation="false"
imageDir="./xmlhttp/css/xp/css-images/">
<ice:treeNode>
<f:facet name="icon">
<ice:panelGroup style="display: inline">
<h:graphicImage value="#{item.userObject.icon}"/>
</ice:panelGroup>
</f:facet>
<f:facet name="content">
<ice:panelGroup style="display: inline">
<h:commandLink
actionListener="#{item.userObject.selectPanelStackPanel}"
value="#{item.userObject.text}"/>
</ice:panelGroup>
</f:facet>
</ice:treeNode>
</ice:tree>
</ice:panelGroup>
<!-- Second column, for panel stack -->
<ice:panelGroup style="border: 1px solid gray; width:350px " >
<ice:panelStack selectedPanel="#{panelStack.selectedPanel}"
styleClass="">
<!-- splash panel -->
<ice:panelGroup id="splash">
<h3>Splash Page</h3>
<p>Click on the tree nodes to change the slected panel in
the panel stack component. </p>
</ice:panelGroup>
<!-- ICEfaces panel -->
<ice:panelGroup id="icefaces">
<h3>ICEfaces</h3>
<p>The industry's first standards-compliant AJAX based
solution for rapidly creating all Java rich web
applications that are easily maintained, extended,
and scaled, at very low cost.</p>
</ice:panelGroup>
<!-- ICEbrowser panel -->
<ice:panelGroup id="icebrowser">
<h3>ICEbrowser</h3>
<p>The most widely distributed Java browser in the world
for rendering web content into Java enterprise
applications.</p>
</ice:panelGroup>
<!-- ICEpdf panel -->
<ice:panelGroup id="icepdf">
<h3>ICEpdf</h3>
<p>The leading Java PDF document rendering and viewing
solution designed to be easily integrated into Java
enterprise applications.</p>
</ice:panelGroup>
</ice:panelStack>
</ice:panelGroup>
</ice:panelGrid>
</ice:form>
</body>
</html>
</f:view>
Thanks,
JR
|
|
|
 |
![[Post New]](/JForum/templates/default/images/icon_minipost_new.gif) 15/02/2007 14:33:47
|
philip.breau

Joined: 08/05/2006 00:00:00
Messages: 2675
Offline
|
Hi,
How are you ending the session? If the HttpSession was invalidated, I don't think you could get that high up the stack trace. I think this particular NPE at com.icesoft.faces.component.tree.TreeRenderer.encodeNode(TreeRenderer.java:359)
is coming from the following line:
boolean isBranchNode = !userObject.isLeaf();
Are you manually nulling any UserObjects in the tree?
Thanks,
Philip
|
. |
|
|
 |
![[Post New]](/JForum/templates/default/images/icon_minipost_new.gif) 15/02/2007 15:37:15
|
gector
Joined: 15/12/2006 00:00:00
Messages: 27
Offline
|
I think it is an EJB3 problem but, here's the Stateful Bean:
Code:
package gov.dot.marad.business.ejb;
import gov.dot.marad.persistence.ejb.model.Project;
import gov.dot.marad.util.web.PanelSelectUserObject;
import javax.ejb.Remove;
import javax.ejb.Stateful;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Destroy;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Logger;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.core.FacesMessages;
import org.jboss.seam.log.Log;
/**
* <p/>
* A basic backing bean for a ice:tree component. The only instance variable
* needed is a DefaultTreeModel Object which is bound to the icefaces tree
* component in the jspx code.</p>
* <p/>
* The tree created by this backing bean is used to control the selected
* panel in a ice:panelStack.
* </p>
*/
@Stateful
@Scope(ScopeType.SESSION)
@Name("navTree")
public class NavigationTreeAction implements NavigationTree {
@PersistenceContext
private EntityManager em;
@In(create = true)
private transient FacesMessages facesMessages;
@Logger
private Log log;
// tree default model, used as a value for the tree component
private DefaultTreeModel model;
// default node icons for xp thme
private static final String XP_BRANCH_CONTRACTED_ICON = "./xmlhttp/css/xp/css-images/tree_folder_open.gif";
private static final String XP_BRANCH_EXPANDED_ICON = "./xmlhttp/css/xp/css-images/tree_folder_close.gif";
private static final String XP_BRANCH_LEAF_ICON = "./xmlhttp/css/xp/css-images/tree_document.gif";
public NavigationTreeAction() {
// create root node with its children expanded
DefaultMutableTreeNode rootTreeNode = new DefaultMutableTreeNode();
PanelSelectUserObject rootObject = new PanelSelectUserObject(rootTreeNode);
rootObject.setText("ICEsoft Products");
rootObject.setDisplayPanel("splash");
rootObject.setExpanded(true);
rootObject.setBranchContractedIcon(XP_BRANCH_CONTRACTED_ICON);
rootObject.setBranchExpandedIcon(XP_BRANCH_EXPANDED_ICON);
rootObject.setLeafIcon(XP_BRANCH_LEAF_ICON);
rootTreeNode.setUserObject(rootObject);
// model is accessed by by the ice:tree component
model = new DefaultTreeModel(rootTreeNode);
// add a node to sue ICEfaces information
DefaultMutableTreeNode branchNode = new DefaultMutableTreeNode();
PanelSelectUserObject branchObject = new PanelSelectUserObject(branchNode);
branchObject.setText("ICEfaces");
branchObject.setDisplayPanel("icefaces");
branchObject.setBranchContractedIcon(XP_BRANCH_CONTRACTED_ICON);
branchObject.setBranchExpandedIcon(XP_BRANCH_EXPANDED_ICON);
branchObject.setLeafIcon(XP_BRANCH_LEAF_ICON);
branchNode.setUserObject(branchObject);
rootTreeNode.add(branchNode);
// add a node to sue ICEbrowser information
branchNode = new DefaultMutableTreeNode();
branchObject = new PanelSelectUserObject(branchNode);
branchObject.setText("ICEbrowser");
branchObject.setDisplayPanel("icebrowser");
branchObject.setBranchContractedIcon(XP_BRANCH_CONTRACTED_ICON);
branchObject.setBranchExpandedIcon(XP_BRANCH_EXPANDED_ICON);
branchObject.setLeafIcon(XP_BRANCH_LEAF_ICON);
branchNode.setUserObject(branchObject);
rootTreeNode.add(branchNode);
// add a node to sue ICEpdf information
branchNode = new DefaultMutableTreeNode();
branchObject = new PanelSelectUserObject(branchNode);
branchObject.setText("ICEpdf");
branchObject.setDisplayPanel("icepdf");
branchObject.setBranchContractedIcon(XP_BRANCH_CONTRACTED_ICON);
branchObject.setBranchExpandedIcon(XP_BRANCH_EXPANDED_ICON);
branchObject.setLeafIcon(XP_BRANCH_LEAF_ICON);
branchNode.setUserObject(branchObject);
rootTreeNode.add(branchNode);
// add some more sub children
for (int k = 0; k < 2; k++) {
DefaultMutableTreeNode subBranchNode = new DefaultMutableTreeNode();
PanelSelectUserObject subBranchObject = new PanelSelectUserObject(subBranchNode);
subBranchObject.setText("sub-node-" + k);
branchObject.setDisplayPanel("sub-node-" + k);
subBranchObject.setBranchContractedIcon(XP_BRANCH_CONTRACTED_ICON);
subBranchObject.setBranchExpandedIcon(XP_BRANCH_EXPANDED_ICON);
subBranchObject.setLeafIcon(XP_BRANCH_LEAF_ICON);
subBranchNode.setUserObject(subBranchObject);
subBranchObject.setLeaf(true);
branchNode.add(subBranchNode);
}
}
/**
* Gets the tree's default model.
*
* @return tree model.
*/
public DefaultTreeModel getModel() {
return model;
}
@Destroy
@Remove
public void destroy() {
}
}
It's what happens after the page times out.
I'm not sure how to affect the timeout that's built in.
JR
|
|
|
 |
![[Post New]](/JForum/templates/default/images/icon_minipost_new.gif) 15/02/2007 17:16:08
|
philip.breau

Joined: 08/05/2006 00:00:00
Messages: 2675
Offline
|
Hi JR,
Have you made sure that your timeouts for the http session *and* the sfsb are the same? Check out this Seam wiki topic: http://wiki.jboss.org/wiki/Wiki.jsp?page=JbossTimeoutSettingForSeam
Thanks,
Philip
|
. |
|
|
 |
![[Post New]](/JForum/templates/default/images/icon_minipost_new.gif) 20/02/2007 08:53:49
|
gector
Joined: 15/12/2006 00:00:00
Messages: 27
Offline
|
Philip,
That seems to be the cure for that problem.
Thanks,
JR
|
|
|
 |
|
|