do you know a collection that is thread safe?
On Tue, Feb 26, 2008 at 12:42 PM, Randy Burgess <[EMAIL PROTECTED]> wrote: > 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] > >