Ok, that is what we do,
You can place this in your Axis-Client and call the Methods to set and get
your session!
/*************************************************************************
* This method sets the SessionId for the next call. It use the
* SimpleSessionHandler for this challenge.
*
* @param myService - Is the Service we use (Locator).
* @param myId - SessionID
************************************************************************/
static public void setSessionId(Service myService, Long myId) {
AxisEngine engine = myService.getEngine();
engine.setOption(SimpleSessionHandler.SESSION_ID, myId);
}
/*************************************************************************
* This method gets the SessionId from the SimpleSessionHandler.
*
* @param myService - Is the Service we use (Locator).
*
* @return sesssionId
************************************************************************/
static public Long getSessionId(Service myService) throws
AxisFault {
AxisEngine engine = myService.getEngine();
return
(Long)engine.getOption(SimpleSessionHandler.SESSION_ID);
}
Tomi
-----Urspr�ngliche Nachricht-----
Von: Ryan Stutsman [mailto:[EMAIL PROTECTED]
Gesendet: Freitag, 23. April 2004 23:58
An: [EMAIL PROTECTED]
Betreff: RE: Sessions across several services with Client
What you describe is exactly what I have done; however, what I'm asking
is...
How do I then, take that sessionID in response from the login method of
one service and put it into the request header of say getPerson from the
person service.
I can't for the life of me figure out how to 1) get the sessionID from
the header on the Axis client and 2) get the sessionID back into the
Axis client's request header.
I did this in PHP with a nuSOAP client easily because it has a method
for getting and setting header tags.
On Fri, 2004-04-23 at 16:52, Yakulis, Ross (Ross) wrote:
> I am not sure I fully follow your question:
> "but how do I do this with the Axis client".
> Specifically how are you differentiating "axis client"
> from other clients?
>
> I have done something similar use SOAP headers to pass a session from
> on axis web service to another. The first web service logs
> on and creates the session token that is returned in the
> SOAPHeader, then that token is propagated to other services. I did
> not use the java sessions and did my own session control on the server
side.
>
> Ross
>
> -----Original Message-----
> From: Ryan Stutsman [mailto:[EMAIL PROTECTED]
> Sent: Friday, April 23, 2004 2:48 PM
> To: [EMAIL PROTECTED]
> Subject: Sessions across several services with Client
>
>
> Hello,
>
> I have an Axis app server which has several web services. They all
> share a common session (using the SimpleSessionHandler with the
> sessionID in the SOAP headers right now). e.g. You start a session on
> the user service it'll follow you to the person service, etc, etc.
>
> Now, I've gotten a few clients to work with this fine, but how do I do
> this with the Axis client?
>
> I can't seem to figure out how to SET the sessionID in the request
> header. I want to override the automatic sessionID with the ID that I
> have from the other service.
>
> Since there's no MessageContext and locator.getEngine() returns null I'm
> not sure how to attack it.
>
> Thanks.