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 <[email protected]>
> Date: Tue, 26 Feb 2008 12:39:40 -0600
> To: <[email protected]>
> 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]

Reply via email to