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]

Reply via email to