You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Dorner Thomas <th...@edmb.debis.com> on 2004/07/01 09:27:56 UTC

AW: Session timeout? (SimpleSessionHandler)

Hi Günter,

do it on the Server, for example in your Impl

//Es wird die Session geholt und der SessionTimeout auf 10 minuten gesetzt.
MessageContext mctx = MessageContext.getCurrentContext();

Session ses =  mctx.getSession();
ses.setTimeout(600);


Tomi



-----Ursprüngliche Nachricht-----
Von: Günter Ladwig [mailto:gladwig@gmx.de]
Gesendet: Mittwoch, 30. Juni 2004 14:28
An: axis-user@ws.apache.org
Betreff: Re: Session timeout? (SimpleSessionHandler)


Hi!

I didn't get any response to the message below. Is there really no one 
who knows how to set the timeout? Or is there some other workaround?

Thanks in advance.

Günter

Günter Ladwig wrote:
> Hi,
> 
> I'm having some problems with SOAP sessions (SimpleSessionHandler). The 
> web service I'm trying to develop has an initialize() method which needs 
> to be called once before subsequent calls to learnFromURL(). Because of 
> this the object needs to be persistent, which is why I decided to use 
> sessions. As the client is an Axis client I used SimpleSessionHandler. 
> My server-config.wsdd contains this:
> 
>  <handler name="session" 
> type="java:org.apache.axis.handlers.SimpleSessionHandler" />
>  <service name="TextToOntoServer" provider="java:RPC">
>   <requestFlow>
>    <handler type="session" />
>   </requestFlow>
>   <responseFlow>
>    <handler type="session"/>
>   </responseFlow>
>   <parameter name="allowedMethods" value="learn,learnFromURL,initialize"/>
>   <parameter name="scope" value="session" />
>   <parameter name="className" 
> value="edu.unika.aifb.ttoServer.TextToOntoServer"/>
>  </service>
> 
> The client-config.wsdd contains basically the same and in principal the 
> session work, but I think the timeout is too short. The first call to 
> initialize() takes up to 20 seconds to complete, which doesn't seem to 
> be a problem. But learnFromURL() may take up to two minutes or more to 
> complete. Here are excerpts from the client-server conversation:
> 
> Client calls initialize():
> <soapenv:Envelope 
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
> xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>  <soapenv:Body>
>   <initialize 
> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
>  </soapenv:Body>
> 
> Server response (Session ID included):
> [...]
>  <soapenv:Header>
>   <ns1:sessionID soapenv:mustUnderstand="0" xsi:type="xsd:long" 
>
xmlns:ns1="http://xml.apache.org/axis/session">5539813838419223788</ns1:sess
ionID> 
> 
>  </soapenv:Header>
> [...]
> 
> Now the client calls learnFromURL() and passes the correct Session ID 
> and the server response (about 2 minutes later) still contains the 
> correct session ID. But the response to the next call contains a 
> different session ID (the client still passed the correct session ID to 
> the server):
> 
> [...]
>  <soapenv:Header>
>   <ns1:sessionID soapenv:mustUnderstand="0" xsi:type="xsd:long" 
>
xmlns:ns1="http://xml.apache.org/axis/session">-7502308238410131107</ns1:ses
sionID> 
> 
>  </soapenv:Header>
> [...]
> 
> It seems to be that during the first call to learnFromURL() Axis loses 
> the session, perhaps thinking it is inactive as there has been no 
> activity for some time. Therefore it replys with another session ID to 
> the second call to learnFromURL().
> 
> So, is there a way to avoid this? There are two methods in 
> SimpleSessionHandler, which may be useful here: setReapPeriodicity and 
> setDefaultSessionTimeout. But how and where do I call these methods? 
> Neither the web service nor my client have any session code, I only made 
> changes to server-config.wsdd and added a client-config.wsdd.
> 
> Thanks in advance.
> 
> Günter
> 
> 
>