I was experimenting with a local subclass of ActionContext which
added itself to a ThreadLocal in the constructor, so that I could in
theory get access to the ActionContext from classes which don't get
it passed in. (I wanted to use it in a TilesController, for example,
or maybe in a JSTL function.)
Anyway, my view-level code isn't seeing the value, so I guess that
means that requestDispatcher.forward() spawns a new thread. This
makes sense, but I hadn't thought of it that way.
The problem here is that making the ActionContext available to the
View is problematic, since ActionContext.release() is going to be
called asynchronously from the view processing -- so even putting the
context in the request is problematic.
That said, I've maintained a design for my subclasses of
ActionContext so that you can always safely make one as a wrapper to
the ServletContext, Request, and Response -- the ActionContext itself
has no state. This works pretty well, and I was able to do it in the
TilesController and also in a DWR remote object (and DWR doesn't even
use Struts for request processing). Perhaps we should just document
this fact and advise people accordingly -- "if you extend
ActionContextBase, be careful not to add any instance variables, or
you may lose this functionality.)"
Just thought I'd share...
Joe
--
Joe Germuska
[EMAIL PROTECTED]
http://blog.germuska.com
"Narrow minds are weapons made for mass destruction" -The Ex
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]