We are doing testing in our application using the struts-menu implementation using the velocity templates rendering an Xtree (like this example: http://demo.raibledesigns.com/struts-menu/velocity-xtree.jsp). When we test simulating 20 concurrent users on the system we enounter a java.util.ConcurrentModificationException error (see below). Any thoughts on how to fix this?
 

2006-03-03 09:07:51,375 - VelocimacroProxy.render() : exception VM = #displayMenu() : java.util.ConcurrentModificationException

            at java.util.AbstractList$Itr.checkForComodification(AbstractList.java(Inlined Compiled Code))

            at java.util.AbstractList$Itr.next(AbstractList.java(Compiled Code))

            at org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:203)

            at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:152)

            at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java(Compiled Code))

            at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java(Compiled Code))

            at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java(Compiled Code))

            at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:210)

            at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:152)

            at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java(Compiled Code))

            at org.apache.velocity.Template.merge(Template.java(Compiled Code))

            at net.sf.navigator.displayer.VelocityMenuDisplayer.displayComponents(VelocityMenuDisplayer.java(Compiled Code))

            at net.sf.navigator.displayer.VelocityMenuDisplayer.display(VelocityMenuDisplayer.java:99)

            at net.sf.navigator.taglib.DisplayMenuTag.doStartTag(DisplayMenuTag.java:130)

            at com.ibm._jsp._side_5F_secure._jspx_meth_menu_displayMenu_3(_side_5F_secure.java:180)

            at com.ibm._jsp._side_5F_secure._jspx_meth_menu_useMenuDisplayer_0(_side_5F_secure.java:230)

            at com.ibm._jsp._side_5F_secure._jspService(_side_5F_secure.java:104)

            at com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:88)

            at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)

            at com.ibm.ws.cache.servlet.ServletWrapper.serviceProxied(ServletWrapper.java:242)

            at com.ibm.ws.cache.servlet.CacheHook.handleFragment(CacheHook.java:326)

            at com.ibm.ws.cache.servlet.CacheHook.handleServlet(CacheHook.java:211)

            at com.ibm.ws.cache.servlet.ServletWrapper.service(ServletWrapper.java:224)

            at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1221)

            at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:630)

            at com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest(GenericServletWrapper.java:117)

            at com.ibm.ws.jsp.webcontainerext.JSPExtensionServletWrapper.handleRequest(JSPExtensionServletWrapper.java:173)

            at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.include(WebAppRequestDispatcher.java:579)

            at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:1034)

            at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:475)

            at org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:101)

            at org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:137)

            at org.apache.struts.taglib.tiles.InsertTag.doInclude(InsertTag.java:758)

            at org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:890)

            at org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:460)

            at com.ibm._jsp._base_5F_summary._jspx_meth_tiles_get_2(_base_5F_summary.java:575)

            at com.ibm._jsp._base_5F_summary._jspService(_base_5F_summary.java:292)

            at com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:88)

            at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)

            at com.ibm.ws.cache.servlet.ServletWrapper.serviceProxied(ServletWrapper.java:242)

            at com.ibm.ws.cache.servlet.CacheHook.handleFragment(CacheHook.java:326)

            at com.ibm.ws.cache.servlet.CacheHook.handleServlet(CacheHook.java:211)

            at com.ibm.ws.cache.servlet.ServletWrapper.service(ServletWrapper.java:224)

            at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1221)

            at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:630)

            at com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest(GenericServletWrapper.java:117)

            at com.ibm.ws.jsp.webcontainerext.JSPExtensionServletWrapper.handleRequest(JSPExtensionServletWrapper.java:173)

            at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:262)

            at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1056)

            at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:261)

            at org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesRequestProcessor.java:237)

            at org.apache.struts.tiles.TilesRequestProcessor.internalModuleRelativeForward(TilesRequestProcessor.java:339)

            at org.apache.struts.action.RequestProcessor.processForward(RequestProcessor.java:553)

            at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:211)

            at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)

            at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)

            at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)

            at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)

            at com.ibm.ws.cache.servlet.ServletWrapper.serviceProxied(ServletWrapper.java:242)

            at com.ibm.ws.cache.servlet.CacheHook.handleFragment(CacheHook.java:326)

            at com.ibm.ws.cache.servlet.CacheHook.handleServlet(CacheHook.java:211)

            at com.ibm.ws.cache.servlet.ServletWrapper.service(ServletWrapper.java:224)

            at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1221)

            at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:630)

            at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:262)

            at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1056)

            at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:261)

            at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:388)

            at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:316)

            at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:231)

            at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)

            at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)

            at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)

            at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)

            at com.ibm.ws.cache.servlet.ServletWrapper.serviceProxied(ServletWrapper.java:242)

            at com.ibm.ws.cache.servlet.CacheHook.handleFragment(CacheHook.java:326)

            at com.ibm.ws.cache.servlet.CacheHook.handleServlet(CacheHook.java:211)

            at com.ibm.ws.cache.servlet.ServletWrapper.service(ServletWrapper.java:224)

            at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1221)

            at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:630)

            at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:2872)

            at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:220)

            at com.ibm.ws.webcontainer.VirtualHost.handleRequest(VirtualHost.java:204)

            at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1779)

            at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:77)

            at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:466)

            at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:405)

            at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:104)

            at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java(Compiled Code))

            at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java(Compiled Code))

            at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:941)

            at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1028)

            at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1394)

 

Reply via email to