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]