You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Brad Balmer <bb...@peapod.com> on 2003/01/22 20:25:58 UTC
Session Affinity Manager
We have multiple web applications running (therefore multiple .war
files) that share a single .jar file of common business logic and
database call code.
In order for the .jar code to know anything about the .war code (for
logging, etc) I wrote a Session Affinity Manager where the .war code can
call SAM.getSAM().setSession(HttpSession session) and the .jar code can
call SAM.getSAM().getSession() and get to my session object through a
ThreadLocal variable.
Anyway, in my application I need to call the setSession() piece each
time a request is to be sent to the web server. Now, I can add this
code to each and every .jsp and to every Action class, but I was
wondering if there was any other place that I could do this.
What I need to call, specifically, for each request (thread) is the
following:
HttpSession session = request.getSession(false);
SAM.getSAM().setSession(session);
Does anyone know a place in Struts where I can do this? I initially
thought of the processActionPerform() function inside the
RequestProcessor class, but would I have to re-write all of the existing
code for this function for each of my web applications?
Thanks.
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
RE: Session Affinity Manager
Posted by Joe Germuska <Jo...@Germuska.com>.
At 1:36 PM -0600 2003/01/22, Brad Balmer wrote:
>Right now we are using the 2.2 servlet spec which, as far as I know,
>doesn't support filters. (Unless there is another way that I'm
>missing).
It's a common pattern to extend org.apache.struts.action.Action into
an abstract base action which handles housekeeping. Something like
this:
public abstract class BaseAction extends Action
{
public ActionForward execute(mapping,form,req,resp) throws Exception
{
housekeepingMethod();
ActionForward result = doExecute(mapping,form,req,resp);
moreHousekeeping(); // if you need it.
return result;
}
public abstract ActionForward doExecute(mapping,form,req,resp);
}
If you ensure that you only use actions which extend your BaseAction,
you've got it all covered. We always extend from a local BaseAction
even before we know we need this or any other behavior; the local
BaseAction may be empty for a while but it prepares us for the nearly
inevitable event that we find some behavior which is convenient to
share among multiple actions.
Hope this helps,
Joe
>-----Original Message-----
>From: Robert Taylor [mailto:rtaylor@mulework.com]
>Sent: Wednesday, January 22, 2003 1:32 PM
>To: Struts Users Mailing List
>Subject: RE: Session Affinity Manager
>
>Why not use a filter?
>
>robert
>
>> -----Original Message-----
>> From: Brad Balmer [mailto:bbalmer@peapod.com]
>> Sent: Wednesday, January 22, 2003 2:26 PM
>> To: 'Struts Users Mailing List'
>> Subject: Session Affinity Manager
>>
>>
>> We have multiple web applications running (therefore multiple .war
>> files) that share a single .jar file of common business logic and
>> database call code.
>>
>> In order for the .jar code to know anything about the .war code (for
>> logging, etc) I wrote a Session Affinity Manager where the .war code
>can
>> call SAM.getSAM().setSession(HttpSession session) and the .jar code
>can
>> call SAM.getSAM().getSession() and get to my session object through a
>> ThreadLocal variable.
>>
>> Anyway, in my application I need to call the setSession() piece each
>> time a request is to be sent to the web server. Now, I can add this
>> code to each and every .jsp and to every Action class, but I was
>> wondering if there was any other place that I could do this.
>>
>> What I need to call, specifically, for each request (thread) is the
>> following:
>> HttpSession session = request.getSession(false);
>> SAM.getSAM().setSession(session);
>>
>> Does anyone know a place in Struts where I can do this? I initially
>> thought of the processActionPerform() function inside the
>> RequestProcessor class, but would I have to re-write all of the
>existing
>> code for this function for each of my web applications?
>>
>> Thanks.
>>
>>
>> --
>> To unsubscribe, e-mail:
>> <ma...@jakarta.apache.org>
>> For additional commands, e-mail:
><ma...@jakarta.apache.org>
>
>
>--
>To unsubscribe, e-mail:
><ma...@jakarta.apache.org>
>For additional commands, e-mail:
><ma...@jakarta.apache.org>
>
>
>--
>To unsubscribe, e-mail: <ma...@jakarta.apache.org>
>For additional commands, e-mail: <ma...@jakarta.apache.org>
--
--
Joe Germuska | "Big corporations here now believe we
will have war.
Joe@Germuska.com | Believe all would welcome it as relief to
suspense."
http://blog.germuska.com/ | telegram to President McKinley, 25 March 1898
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
RE: Session Affinity Manager
Posted by Brad Balmer <bb...@peapod.com>.
Right now we are using the 2.2 servlet spec which, as far as I know,
doesn't support filters. (Unless there is another way that I'm
missing).
-----Original Message-----
From: Robert Taylor [mailto:rtaylor@mulework.com]
Sent: Wednesday, January 22, 2003 1:32 PM
To: Struts Users Mailing List
Subject: RE: Session Affinity Manager
Why not use a filter?
robert
> -----Original Message-----
> From: Brad Balmer [mailto:bbalmer@peapod.com]
> Sent: Wednesday, January 22, 2003 2:26 PM
> To: 'Struts Users Mailing List'
> Subject: Session Affinity Manager
>
>
> We have multiple web applications running (therefore multiple .war
> files) that share a single .jar file of common business logic and
> database call code.
>
> In order for the .jar code to know anything about the .war code (for
> logging, etc) I wrote a Session Affinity Manager where the .war code
can
> call SAM.getSAM().setSession(HttpSession session) and the .jar code
can
> call SAM.getSAM().getSession() and get to my session object through a
> ThreadLocal variable.
>
> Anyway, in my application I need to call the setSession() piece each
> time a request is to be sent to the web server. Now, I can add this
> code to each and every .jsp and to every Action class, but I was
> wondering if there was any other place that I could do this.
>
> What I need to call, specifically, for each request (thread) is the
> following:
> HttpSession session = request.getSession(false);
> SAM.getSAM().setSession(session);
>
> Does anyone know a place in Struts where I can do this? I initially
> thought of the processActionPerform() function inside the
> RequestProcessor class, but would I have to re-write all of the
existing
> code for this function for each of my web applications?
>
> Thanks.
>
>
> --
> To unsubscribe, e-mail:
> <ma...@jakarta.apache.org>
> For additional commands, e-mail:
<ma...@jakarta.apache.org>
--
To unsubscribe, e-mail:
<ma...@jakarta.apache.org>
For additional commands, e-mail:
<ma...@jakarta.apache.org>
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
RE: Session Affinity Manager
Posted by Robert Taylor <rt...@mulework.com>.
Why not use a filter?
robert
> -----Original Message-----
> From: Brad Balmer [mailto:bbalmer@peapod.com]
> Sent: Wednesday, January 22, 2003 2:26 PM
> To: 'Struts Users Mailing List'
> Subject: Session Affinity Manager
>
>
> We have multiple web applications running (therefore multiple .war
> files) that share a single .jar file of common business logic and
> database call code.
>
> In order for the .jar code to know anything about the .war code (for
> logging, etc) I wrote a Session Affinity Manager where the .war code can
> call SAM.getSAM().setSession(HttpSession session) and the .jar code can
> call SAM.getSAM().getSession() and get to my session object through a
> ThreadLocal variable.
>
> Anyway, in my application I need to call the setSession() piece each
> time a request is to be sent to the web server. Now, I can add this
> code to each and every .jsp and to every Action class, but I was
> wondering if there was any other place that I could do this.
>
> What I need to call, specifically, for each request (thread) is the
> following:
> HttpSession session = request.getSession(false);
> SAM.getSAM().setSession(session);
>
> Does anyone know a place in Struts where I can do this? I initially
> thought of the processActionPerform() function inside the
> RequestProcessor class, but would I have to re-write all of the existing
> code for this function for each of my web applications?
>
> Thanks.
>
>
> --
> To unsubscribe, e-mail:
> <ma...@jakarta.apache.org>
> For additional commands, e-mail:
<ma...@jakarta.apache.org>
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>