When the webserver restarts while an echo2 application is active with an
active Tree, the Echo2 application crashes when the page is reloaded. This
is caused by a nullPointerException in Tree, because the expandedStack and
expandedState fields in echopointng.Tree are transient, and thus not set
when the Tree is deserialized.
Stack trace is:
java.lang.NullPointerException
at echopointng.Tree.isExpanded(Tree.java:945)
at
echopointng.ui.syncpeer.TreeRenderer.renderExpandoCell(TreeRenderer.java:49
9)
at
echopointng.ui.syncpeer.TreeRenderer.renderTreeRow(TreeRenderer.java:754)
at
echopointng.ui.syncpeer.TreeRenderer.renderTreeRecursive(TreeRenderer.java:
691)
at echopointng.ui.syncpeer.TreeRenderer.renderTree(TreeRenderer.java:708)
at echopointng.ui.syncpeer.TreePeer.renderHtml(TreePeer.java:311)
at
echopointng.ui.syncpeer.AbstractEchoPointPeer.renderHtml(AbstractEchoPointP
eer.java:298)
at
nextapp.echo2.webcontainer.syncpeer.ContentPanePeer.renderChild(ContentPane
Peer.java:236)
at
nextapp.echo2.webcontainer.syncpeer.ContentPanePeer.renderHtml(ContentPaneP
eer.java:302)
at
nextapp.echo2.webcontainer.syncpeer.ContentPanePeer.renderAdd(ContentPanePe
er.java:165)
at
nextapp.echo2.webcontainer.syncpeer.SplitPanePeer.renderChild(SplitPanePeer
.java:341)
at
nextapp.echo2.webcontainer.syncpeer.SplitPanePeer.renderAdd(SplitPanePeer.j
ava:288)
at
nextapp.echo2.webcontainer.syncpeer.SplitPanePeer.renderChild(SplitPanePeer
.java:341)
at
nextapp.echo2.webcontainer.syncpeer.SplitPanePeer.renderAdd(SplitPanePeer.j
ava:288)
at
nextapp.echo2.webcontainer.syncpeer.SplitPanePeer.renderChild(SplitPanePeer
.java:341)
at
nextapp.echo2.webcontainer.syncpeer.SplitPanePeer.renderAdd(SplitPanePeer.j
ava:288)
at
nextapp.echo2.webcontainer.syncpeer.SplitPanePeer.renderChild(SplitPanePeer
.java:341)
at
nextapp.echo2.webcontainer.syncpeer.SplitPanePeer.renderAdd(SplitPanePeer.j
ava:288)
at
nextapp.echo2.webcontainer.syncpeer.ContentPanePeer.renderChild(ContentPane
Peer.java:238)
at
nextapp.echo2.webcontainer.syncpeer.ContentPanePeer.renderHtml(ContentPaneP
eer.java:302)
at
nextapp.echo2.webcontainer.syncpeer.ContentPanePeer.renderAdd(ContentPanePe
er.java:165)
at
nextapp.echo2.webcontainer.syncpeer.WindowPeer.renderRefresh(WindowPeer.jav
a:124)
at
nextapp.echo2.webcontainer.ContainerSynchronizeService.renderInit(Container
SynchronizeService.java:427)
at
nextapp.echo2.webrender.service.SynchronizeService.service(SynchronizeServi
ce.java:269)
at
nextapp.echo2.webrender.WebRenderServlet.process(WebRenderServlet.java:273)
at
nextapp.echo2.webrender.WebRenderServlet.doPost(WebRenderServlet.java:189)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicatio
nFilterChain.java:252)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterC
hain.java:173)
at
com.aci.hibernate.HibernateSessionFilter.doFilter(HibernateSessionFilter.ja
va:45)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicatio
nFilterChain.java:202)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterC
hain.java:173)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.j
ava:213)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.j
ava:178)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:12
6)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:10
5)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.jav
a: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.process
Connection(Http11BaseProtocol.java:664)
at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.ja
va:527)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerW
orkerThread.java:80)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.ja
va:684)
at java.lang.Thread.run(Unknown Source)
One solution is to check for if transient fields are null in methods like
Tree.isExpanded() and Tree.setExpandedState() and if they are null,
initialize them.
Nobody/Anonymous
None
None
Public