If it is only for a single request, I'd recommend using the
ActionContext, e.g. ActionContext.getContext().put(key,value)  Then,
the servlet container won't try to serialize the objects between
instances in a cluster.

Don

On 12/18/06, Jon Wilmoth <[EMAIL PROTECTED]> wrote:
I'm fairly new to the S2 model and assumed the same IoC benefits applied to 
interceptors that apply to actions (i.e. my interceptor didn't need to know 
about a session if it was SessionAware).  However, I might have been 
overjealous with the whole IoC concept.  ;)  I have changed my interceptors to 
use the http session to exchange data between themselves dependency injection.

----- Original Message ----
From: Don Brown <[EMAIL PROTECTED]>
To: Struts Users Mailing List <user@struts.apache.org>; Jon Wilmoth <[EMAIL 
PROTECTED]>
Sent: Monday, December 18, 2006 11:46:36 AM
Subject: Re: S2 - Proper way interceptors to interact w/Session


On 12/18/06, Jon Wilmoth <[EMAIL PROTECTED]> wrote:
> I'm working on a custom S2 Interceptor and I'm not sure what the best way to interact 
with the session and/or other Interceptors for that matter is.  First the session.  I read 
http://struts.apache.org/2.x/docs/how-do-we-get-access-to-the-session.html and I tried 
applying the concept of using a SessionAware dependency injection on my custom interceptor 
(i.e. public class MyCustomInterceptor extends AbstractInterceptor implements SessionAware). 
 I added the "servlet-config" interceptor to my interceptor stack prior to my 
custom interceptor.  Unfortunately, the ServletConfigInterceptor class only injects 
dependencies on the action.  This seems me that the only *current* way for an interceptor to 
interact with the session is through ServletActionContext.getRequest().getSession();
>

Yep, ServletActionContext.getRequest().getSession() is currently the
best way to do this.

> Along the same train-of-thought, I'm also working on another custom 
interceptor that uses the output of a previous custom interceptor to do it's work. 
 After coming to the realization above I thought I might be able to use the 
ActionInvocation to get ahold of the downstream interceptors and check to see if 
they implemented a dependency injection interface similar to SessionAware.  
Unfortunately, one can only access the action via the ActionInvocation.  Is the 
lack of access to other interceptors within an interceptor intentional?  Is it bad 
to try and spread the notion of dependency injection on actions to interceptors?
>
> <interceptor-stack name="baseStack">
>  ...
>  <interceptor-ref name="createSession"/>
>  <!-- populate SessionAware, XyzAware actions -->
>     <interceptor-ref name="servlet-config"/>
>     <!-- Custom interceptor to populate CurrentUserAware actions [and downstream 
interceptors?] -->
>     <interceptor-ref name="currentUser"/>
>     <!-- Custom interceptor to load currentUser's preferences...implements 
CurrentUserAware -->
>     <interceptor-ref name="userPrefs"/>
>     ...
> </interceptor-stack>

Hmm...do we really need to add IoC to interceptors?  What benefit
would this provide over storing and retrieving objects from the
ActionContext?

Don
>
> ---------------------------------------------------------------------
> 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]

---------------------------------------------------------------------
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