Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.1
-
None
-
None
-
jetty-6.1.3 jetspeed-2.1
Description
I'm trying to deploy my jetspeed-2 based portal to jetty-6.
My portal deploys successfully and working fine, but a get ConcurrentModificationException when i pressing logout link.
Here is a stack trace:
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
at java.util.HashMap$KeyIterator.next(Unknown Source)
at org.mortbay.jetty.servlet.AbstractSessionManager$Session.doInvalidate(AbstractSessionManager.java:921)
at org.mortbay.jetty.servlet.AbstractSessionManager$Session.invalidate(AbstractSessionManager.java:902)
at org.apache.jetspeed.login.LogoutServlet.doGet(LogoutServlet.java:38)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1098)
at org.apache.jetspeed.engine.servlet.XXSUrlAttackFilter.doFilter(XXSUrlAttackFilter.java:51)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
at org.mortbay.jetty.Server.handle(Server.java:285)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:821)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:208)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:368)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
I think this issue is a result of the recursive Session.invalidate() invocation by
org.apache.jetspeed.container.session.PortalSessionMonitorImpl.invalidateSession()
org.apache.jetspeed.container.session.PortalSessionsManagerImpl.portalSessionDestroyed(PortalSessionMonitor)
org.mortbay.jetty.servlet.AbstractSessionManager.Session.unbindValue(String, Object)
I mean that Session.invalidate() calls Session.unbindValue() which calls above-listed stack and PortalSessionMonitorImpl.invalidateSession() calls Session.invalidate() again.
Steps how to deploy jetspeed to jetty
1. Install jetty-6.1.3
2. Download attached file jetspeed-jetty-deploy-files.zip from attachment
3. Unzip this file to jetty.home
4. Copy shared jetspeed libs to jetty.home/lib/
5. Copy jetspeed webapp folder to jetty.home/webapps-jetspeed/
6. Copy j2-admin.war to jetty.home/webapps-jetspeed/
7 Open jetty.home/etc/jetty-jetspeed.xml and change c:/tmp/j2 to your path to derby database
8. start jetty with command java -jar start.jar etc/jetty-jetspeed.xml
9. Copy jetspeed-layouts to deploy/local folder of jetspeed
10. Wait for layouts deployment.
10. Restart jetty server (Stop it and start with java -jar start.jar etc/jetty-jetspeed.xml)