This is no good either. Action classes are not thread safe. Why not read the user manual. Theres a section "4.4.1 Action Class Design Guidelines"
http://jakarta.apache.org/struts/userGuide/building_controller.html#action_classes ----- Original Message ----- From: "Sergei P. Volin" <[EMAIL PROTECTED]> To: "Struts Users Mailing List" <[EMAIL PROTECTED]> Sent: Thursday, March 04, 2004 9:32 AM Subject: Re: ConcurrentModificationException > > Greetings, > > That is the question! Today morning I've found the reason of my troubles. It > was my negligence in how I assigned a value to the iterated list that I > placed in the object which I then stored in a session for JSP's iterator. I > declared the list in my action as a global variable, assigned a value to it > in the protected void method which is called by the action execute method > like this: > > public class MyAction extends Action { > protected ArrayList list = new ArrayList(); > ... > public ActionForward execute(...) ... { > list = new ArrayList(); > myMethod(...); > obj.setList(list) > session.setAttribute("buinessObj", obj); > ... > return mapping.findForward(forward); > } > protected void myMethod(...) { > ... > while (rs.next()) { > ... > list.add(el); > ... > } > } > } > > Now this piece of code looks like: > > public class MyAction extends Action { > protected ArrayList list = new ArrayList(); > ... > public ActionForward execute(...) ... { > list = new ArrayList(); > myMethod(...); > obj.setList(list) > session.setAttribute("buinessObj", obj); > ... > return mapping.findForward(forward); > } > protected void myMethod(...) { > ArrayList list = new ArrayList(); // new > ... > while (rs.next()) { > ... > list.add(el); > ... > } > this.list =list; // new > } > } > > It looks that with this code I rid off all my troubles now - no > ConcurrentModificationException, no doubling of list size. I made a dozen of > tests - no exceptions and the results were correct. > > Mr. Craig R. McClanahan! Am I right now with my code? Please, reply. > Thanks a lot, > > Sergei Volin. > > > ----- Original Message ----- > From: "Craig R. McClanahan" <[EMAIL PROTECTED]> > To: "Struts Users Mailing List" <[EMAIL PROTECTED]>; "Sergei P. > Volin" <[EMAIL PROTECTED]> > Cc: "Struts Users Mailing List" <[EMAIL PROTECTED]> > Sent: Thursday, March 04, 2004 1:08 AM > Subject: Re: ConcurrentModificationException > > > | > | Quoting "Sergei P. Volin" <[EMAIL PROTECTED]>: > | > | > > | > I know this and I do not add/remove elements to/from list at all. Just > as I > | > said - only reading elements from list. > | > Are jsps (Tomcat) thread safe? I'm really worry about that. > | > > | > | Using instance variables to store request-specific state information, in a > JSP > | or servlet (or in a Struts Action class), is *not* thread safe, because > there > | is only one instance of the corresponding class, shared by simultaneous > | requests. Using local variables, though, should be fine. > | > | Craig McClanahan > | > | > | --------------------------------------------------------------------- > | To unsubscribe, e-mail: [EMAIL PROTECTED] > | For additional commands, e-mail: [EMAIL PROTECTED] > | > | > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]

