As others have pointed out, 99.9% of this kind of a problem comes from using class-level instance variables (also called member variables) to store information that is specific to a particular request. This fails because there is only one instance of the Action, so the instance variables are shared across multiple requests.
Actions must be designed in a thread-safe manner. In particular, you should never use instance variables in an Action class, unless you SPECIFICALLY intend to share that variable across multiple users. Variables local to the perform() or execute() method are not shared, so that is where you should store things specific to a particular request. Craig On Mon, 28 Oct 2002, Dan Bunea wrote: > Date: Mon, 28 Oct 2002 10:14:21 +0200 > From: Dan Bunea <[EMAIL PROTECTED]> > Reply-To: Struts Users Mailing List <[EMAIL PROTECTED]> > To: [EMAIL PROTECTED] > Cc: 'Craig R. McClanahan' <[EMAIL PROTECTED]> > Subject: Huge action instance synchronization problem > > > My problem: I have a search action. When 2 (or more) users submit the > search form simultaniously, because the seach usually takes about 1-2 > seconds, the same action instance is rethrieved to complete the search > and sessions are combined like this: the action makes the search for the > first session but does not finish until the second search is performed > and because the resultset is divided into pages and this divisation is > stored into session, both pages with results are put in the second > session, and the second user shall be dispalyed the correct results but > the first shall have null pointer exception because in his session there > is no object representing the divisation of the resultset on pages. > > The problem in my opinion is because the same action instance performs > the same task for the 2 users and so the sessions are combined, which is > a huge problem, because like this every method of an action (dispatch > action) that takes a while to complete shall have the same problem. > > Please advise me how to solve this problem. > Thank you , > Dan Bunea > > PS Dear Craig , I am sorry to bother you but this problem is very > urgent, as the project is in final stages and this is a potentially huge > problem. > I have read that each action is instantiated only once in the > RequestProcessor and for each request the action is rethrieved and its > methods executed, but I have also read that this is not synchronized. > > -- To unsubscribe, e-mail: <mailto:struts-user-unsubscribe@;jakarta.apache.org> For additional commands, e-mail: <mailto:struts-user-help@;jakarta.apache.org>

