I believe this exception occurs when you try and modify an ArrayList while iterating over said list. ArrayList is not thread safe.
Regards, Randy Burgess Sr. Web Applications Developer Nuvox Communications > From: Othon Reyes Sanchez <[EMAIL PROTECTED]> > Reply-To: Struts Users Mailing List <user@struts.apache.org> > Date: Tue, 26 Feb 2008 12:39:40 -0600 > To: <user@struts.apache.org> > Subject: java.util.ConcurrentModificationException at IteratorComponent > > I get the following exception when i do some stress test with jmeter. >> java.util.ConcurrentModificationException >> at java.util.AbstractList$Itr.checkForComodification(Unknown Source) >> at java.util.AbstractList$Itr.next(Unknown Source) >> at org.apache.struts2.components.IteratorComponent.end( > IteratorComponent.java:246) >> at org.apache.struts2.views.jsp.IteratorTag.doAfterBody( > IteratorTag.java:68) >> at > org.apache.jsp.jupiters2.archivo.jsp.expediente.frmPrestamo_jsp._jspx_meth_s_0 > 05fiterator_005f0 > (frmPrestamo_jsp.java:1595) >> at > org.apache.jsp.jupiters2.archivo.jsp.expediente.frmPrestamo_jsp._jspx_meth_s_0 > 05fform_005f0 > (frmPrestamo_jsp.java:640) >> at > org.apache.jsp.jupiters2.archivo.jsp.expediente.frmPrestamo_jsp._jspService > (frmPrestamo_jsp.java:186) >> at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java > :98) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) >> at org.apache.jasper.servlet.JspServletWrapper.service( > JspServletWrapper.java:328) >> at org.apache.jasper.servlet.JspServlet.serviceJspFile( > JspServlet.java:315) >> at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) >> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( > ApplicationFilterChain.java:269) >> at org.apache.catalina.core.ApplicationFilterChain.doFilter( > ApplicationFilterChain.java:188) >> at org.apache.catalina.core.ApplicationDispatcher.invoke( > ApplicationDispatcher.java:691) >> at org.apache.catalina.core.ApplicationDispatcher.processRequest( > ApplicationDispatcher.java:469) >> at org.apache.catalina.core.ApplicationDispatcher.doForward( > ApplicationDispatcher.java:403) >> at org.apache.catalina.core.ApplicationDispatcher.forward( > ApplicationDispatcher.java:301) >> at org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute( > ServletDispatcherResult.java:139) >> at org.apache.struts2.dispatcher.StrutsResultSupport.execute( > StrutsResultSupport.java:178) >> at com.opensymphony.xwork2.DefaultActionInvocation.executeResult( > DefaultActionInvocation.java:348) >> at com.opensymphony.xwork2.DefaultActionInvocation.invoke( > DefaultActionInvocation.java:253) >> at > com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept( > DefaultWorkflowInterceptor.java:221) >> at > com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept( > MethodFilterInterceptor.java:86) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:224) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:223) >> at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile( > UtilTimerStack.java:455) >> at com.opensymphony.xwork2.DefaultActionInvocation.invoke( > DefaultActionInvocation.java:221) >> at > com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept( > ValidationInterceptor.java:150) >> at > org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIn > tercept > (AnnotationValidationInterceptor.java:48) >> at > com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept( > MethodFilterInterceptor.java:86) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:224) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:223) >> at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile( > UtilTimerStack.java:455) >> at com.opensymphony.xwork2.DefaultActionInvocation.invoke( > DefaultActionInvocation.java:221) >> at > com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept( > ConversionErrorInterceptor.java:123) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:224) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:223) >> at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile( > UtilTimerStack.java:455) >> at com.opensymphony.xwork2.DefaultActionInvocation.invoke( > DefaultActionInvocation.java:221) >> at > com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept( > ParametersInterceptor.java:167) >> at > com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept( > MethodFilterInterceptor.java:86) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:224) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:223) >> at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile( > UtilTimerStack.java:455) >> at com.opensymphony.xwork2.DefaultActionInvocation.invoke( > DefaultActionInvocation.java:221) >> at > com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept( > StaticParametersInterceptor.java:105) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:224) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:223) >> at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile( > UtilTimerStack.java:455) >> at com.opensymphony.xwork2.DefaultActionInvocation.invoke( > DefaultActionInvocation.java:221) >> at org.apache.struts2.interceptor.CheckboxInterceptor.intercept( > CheckboxInterceptor.java:83) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:224) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:223) >> at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile( > UtilTimerStack.java:455) >> at com.opensymphony.xwork2.DefaultActionInvocation.invoke( > DefaultActionInvocation.java:221) >> at org.apache.struts2.interceptor.FileUploadInterceptor.intercept( > FileUploadInterceptor.java:207) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:224) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:223) >> at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile( > UtilTimerStack.java:455) >> at com.opensymphony.xwork2.DefaultActionInvocation.invoke( > DefaultActionInvocation.java:221) >> at > com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept( > ModelDrivenInterceptor.java:74) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:224) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:223) >> at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile( > UtilTimerStack.java:455) >> at com.opensymphony.xwork2.DefaultActionInvocation.invoke( > DefaultActionInvocation.java:221) >> at > com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept( > ScopedModelDrivenInterceptor.java:127) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:224) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:223) >> at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile( > UtilTimerStack.java:455) >> at com.opensymphony.xwork2.DefaultActionInvocation.invoke( > DefaultActionInvocation.java:221) >> at > org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept( > ProfilingActivationInterceptor.java:107) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:224) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:223) >> at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile( > UtilTimerStack.java:455) >> at com.opensymphony.xwork2.DefaultActionInvocation.invoke( > DefaultActionInvocation.java:221) >> at > org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept( > DebuggingInterceptor.java:206) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:224) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:223) >> at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile( > UtilTimerStack.java:455) >> at com.opensymphony.xwork2.DefaultActionInvocation.invoke( > DefaultActionInvocation.java:221) >> at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept > (ChainingInterceptor.java:115) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:224) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:223) >> at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile( > UtilTimerStack.java:455) >> at com.opensymphony.xwork2.DefaultActionInvocation.invoke( > DefaultActionInvocation.java:221) >> at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept( > I18nInterceptor.java:143) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:224) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:223) >> at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile( > UtilTimerStack.java:455) >> at com.opensymphony.xwork2.DefaultActionInvocation.invoke( > DefaultActionInvocation.java:221) >> at > com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept( > PrepareInterceptor.java:121) >> at > com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept( > MethodFilterInterceptor.java:86) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:224) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:223) >> at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile( > UtilTimerStack.java:455) >> at com.opensymphony.xwork2.DefaultActionInvocation.invoke( > DefaultActionInvocation.java:221) >> at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept > (ServletConfigInterceptor.java:170) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:224) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:223) >> at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile( > UtilTimerStack.java:455) >> at com.opensymphony.xwork2.DefaultActionInvocation.invoke( > DefaultActionInvocation.java:221) >> at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept( > AliasInterceptor.java:123) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:224) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:223) >> at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile( > UtilTimerStack.java:455) >> at com.opensymphony.xwork2.DefaultActionInvocation.invoke( > DefaultActionInvocation.java:221) >> at > com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept( > ExceptionMappingInterceptor.java:176) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:224) >> at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling( > DefaultActionInvocation.java:223) >> at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile( > UtilTimerStack.java:455) >> at com.opensymphony.xwork2.DefaultActionInvocation.invoke( > DefaultActionInvocation.java:221) >> at org.apache.struts2.impl.StrutsActionProxy.execute( > StrutsActionProxy.java:50) >> at org.apache.struts2.dispatcher.Dispatcher.serviceAction( > Dispatcher.java:504) >> at org.apache.struts2.dispatcher.FilterDispatcher.doFilter( > FilterDispatcher.java:419) >> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( > ApplicationFilterChain.java:215) >> at org.apache.catalina.core.ApplicationFilterChain.doFilter( > ApplicationFilterChain.java:188) >> at org.apache.catalina.core.StandardWrapperValve.invoke( > StandardWrapperValve.java:210) >> at org.apache.catalina.core.StandardContextValve.invoke( > StandardContextValve.java:174) >> at org.apache.catalina.core.StandardHostValve.invoke( > StandardHostValve.java:127) >> at org.apache.catalina.valves.ErrorReportValve.invoke( > ErrorReportValve.java:117) >> at org.apache.catalina.core.StandardEngineValve.invoke( > StandardEngineValve.java:108) >> at org.apache.catalina.connector.CoyoteAdapter.service( > CoyoteAdapter.java:151) >> at org.apache.coyote.http11.Http11Processor.process( > Http11Processor.java:870) >> at > org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processCon > nection > (Http11BaseProtocol.java:665) >> at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket( > PoolTcpEndpoint.java:528) >> at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt( > LeaderFollowerWorkerThread.java:81) >> at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run( > ThreadPool.java:685) >> at java.lang.Thread.run(Unknown Source) >> I tried with different test plans and with different number of > threads/users in my test but basically i get this exception since 50 users. >> I do the following in my test paln: >> Enter to the page >> Lookup for some data with an autocompleter >> Input another data in a textbox >> insert the previous information in a list that is a property of the action > related to the page( in my code ia have an action per page) >> The list is displayed in a <table> in my page using <s:iterator> >> Delete the item recently added to the list. >> By the way my action is in the session. >> Maybe the problem is my code, so please i want your opinion about this > situation. I have made another stress test in webapps without struts2 and i > never had this exception. This email and any attachments ("Message") may contain legally privileged and/or confidential information. If you are not the addressee, or if this Message has been addressed to you in error, you are not authorized to read, copy, or distribute it, and we ask that you please delete it (including all copies) and notify the sender by return email. Delivery of this Message to any person other than the intended recipient(s) shall not be deemed a waiver of confidentiality and/or a privilege. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]