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]

Reply via email to