Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 1.8.2-EE-GA_P02
-
Fix Version/s: EE-1.8.2.GA_P03
-
Component/s: ICE-Components
-
Labels:None
-
Environment:Jetty 6.1.25
Description
Apr 7, 2011 1:52:47 PM com.icesoft.faces.webapp.http.servlet.SessionDispatcher notifySessionShutdown
Apr 7, 2011 1:52:47 PM com.icesoft.faces.webapp.http.servlet.SessionDispatcher$Monitor shutdown
INFO: Session already invalidated.
However on Jetty 6.1.25, a SEVERE: java.lang.IllegalStateException is also thrown even the log level is set at WARN. Although there appears to be no functional impact, the logging can be cause for concern. The attached test application will cause this exception to occur on Jetty. Simply drop the test case in the webapps folder in Jetty and the click login/logout button in the application.
-
- tabs.rtf
- 7.07 MB
- Migration
-
Hide
- sc9993.war
- 7.07 MB
- Tyler Johnson
-
- META-INF/MANIFEST.MF 0.0 kB
- WEB-INF/lib/backport-util-concurrent.jar 319 kB
- WEB-INF/lib/commons-digester.jar 140 kB
- inc/scripts.js 0.1 kB
- WEB-INF/lib/icefaces-comps.jar 3.16 MB
- test.jspx 0.9 kB
- ICEfacesPage1.xhtml 1 kB
- WEB-INF/lib/jsf-impl-1.2.jar 837 kB
- WEB-INF/lib/commons-discovery.jar 75 kB
- logout.jsp 0.3 kB
- WEB-INF/classes/com/.../test/TestBean.java 1 kB
- WEB-INF/lib/jsf-api-1.2.jar 355 kB
- WEB-INF/lib/commons-beanutils.jar 226 kB
- WEB-INF/classes/com/.../test/TestBean.class 2 kB
- logout.jspx 0.8 kB
- WEB-INF/faces-config.xml 0.8 kB
- WEB-INF/classes/.DS_Store 6 kB
- WEB-INF/classes/.../test/SessionCleaner.java 1 kB
- WEB-INF/lib/commons-fileupload.jar 56 kB
- index.jsp 0.1 kB
- WEB-INF/lib/icefaces.jar 1.21 MB
- WEB-INF/web.xml 4 kB
- WEB-INF/lib/commons-lang.jar 240 kB
- WEB-INF/classes/.../SessionCleaner.class 1 kB
- WEB-INF/lib/commons-logging.jar 52 kB
- WEB-INF/lib/icefaces-facelets.jar 596 kB
- WEB-INF/lib/commons-collections.jar 558 kB
Activity
- All
- Comments
- History
- Activity
- Remote Attachments
- Subversion
Assigning to Tyler for additional instructions on how to reproduce.
Please include the full stack trace in the comments here.
I have reproduced this on Mac OS X as well, it's just highly transient. Exceptions during session shutdown do not need to be logged to "info" or "error" since there is no action to be taken by the application administrator, Exceptions at this time are normal due to network errors and timing conditions, and the Exception does not indicate any functional impact.
The following Exception is also observed:
java.lang.RuntimeException: wrapped Exception: java.lang.IllegalStateException
at com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:211)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at com.icesoft.faces.webapp.xmlhttp.BlockingServlet.service(BlockingServlet.java:55)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:440)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:398)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
at org.mortbay.jetty.nio.SelectChannelConnector$RetryContinuation.run(SelectChannelConnector.java:525)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Since Jetty uses Exception processing to implement continuations, it will not be possible to simply consume the above Exception. Also, an IllegalStateException could occur within application code and should be reported. If the root cause of the above can be determined, it should be possible eliminate it from the logs as well.
The root cause of the above exception is due to an Exception being thrown during checkSession(). The Excpetion prevents further processing during an expired session.
java.lang.IllegalStateException
at org.mortbay.jetty.servlet.AbstractSessionManager$Session.setAttribute(AbstractSessionManager.java:1054)
at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.checkSession(SessionDispatcher.java:137)
at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:87)
at com.icesoft.faces.webapp.http.servlet.SessionVerifier.service(SessionVerifier.java:58)
at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:55)
at com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:186)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at com.icesoft.faces.webapp.xmlhttp.BlockingServlet.service(BlockingServlet.java:55)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:440)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:398)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
at org.mortbay.jetty.nio.SelectChannelConnector$RetryContinuation.run(SelectChannelConnector.java:525)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Logging changes were low risk, however the SessionExpiredException propagation could have functional impact.
Test
(Restricted to icesoft-internal-developers group)
I have deployed the sample .war file to Jetty 6.1.25 and only see the following upon logout:
logout
sessionDestroyed 1v6kw2z2wha5s1g2ayteukryd6: Wed Apr 27 11:36:23 MDT 2011
sessionDestroyed: end
sessionCreated 14c7mktbxs0px1saunrramq0ox: Wed Apr 27 11:36:23 MDT 2011
Does the Exception only occur occasionally?