Hello,
It seems that if I have two concurrent requests being made to the same
action, e.g mysite.com/fooAction, then struts resets the first action's
instance while that instance may still be in the interceptor.
E.g, if I have the following code in my interceptor:
action = ai.getAction();
String result = ai.invoke();
logger.debug("Orig action : " + action.toString() +" , now : " +
ai.getAction().toString() );
And if I make two concurrent requests to the same action (e.g using
javascript), then the line:
logger.debug("Orig action : " + action.toString() +" , now : " +
ai.getAction().toString() );
will sometimes produce two different `toString()` codes, showing that the
original action was in a different instance than the last action.
This is a big problem, because now, if I had any code in the interceptor,
which was setting certain things on my action, e.g doing the following:
MyAction action = (MyAction) ai.getAction();
Auth auth = new Auth ( action.getSession() );
action.setAuth(auth);
action.setCookiesMap( Util.getAllCookies() );
String result = ai.invoke();
then there is no guarantee that all those things which I've set on my
action are in fact going to be passed to the correct instance. I.e, when
`ai.invoke()` is called, it may in fact call a completely different
instance of the action, which has different cookies or other data set on
it. This could result in different users being given access to each other's
data.
Am I correct in all of this? If so, is there a solution to this problem?
Because this seems to completely defeat the purpose of interceptors.
Thanks in advance.