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 Se...@wettschereck-partner.de on 2002/12/17 16:21:05 UTC
Deploying the client for session handling using SimpleSessionHand
ler
Hi there,
I got it!!! Its unbelievable, but I really got my Sessions working! I also
deploy my client now. Its rather easy, if you just know exactly how to.
I'm writing now a small HOWTO, because I got nearly crazy with the existing
documentation.
So now for everybody who probably like to try, here comes a small
explanation:
Note: The wsdd-files are not complete, the shown data is just an abridgement
of my wsdd-files.
- I do not use generated classes, like the ones from wsdl2java, but it
"should" work the same.
server:
- Write a small service that accesses the session and sets some variable
inside this session. I took a String that was extended each time it is
called by an "a" and then returns this String
- In your server-config file add the SimpleSessionHandler to request AND
response-flow of the service you want to use with sessions. That could look
like:
<handler name="session"
type="java:org.apache.axis.handlers.SimpleSessionHandler"/>
<service name="MyService" provider="java:RPC">
<requestFlow>
<handler type="session"/>
</requestFlow>
<responseFlow>
<handler type="session"/>
</responseFlow>
<parameter name="allowedMethods" value="*"/>
<parameter name="scope" value="session"/>
<parameter name="className" value="MyService"/>
</service>
client:
- Write a file named client-config.wsdd and put in a directory in your
classpath of the client. That could be the root of your client-application.
Also put in here SimpleSessionHandler in request an response-flow; the file
could look like:
<globalConfiguration>
<requestFlow>
<handler type="session"/>
</requestFlow>
<responseFlow>
<handler type="session"/>
</responseFlow>
</globalConfiguration>
<parameter name="scope" value="session"/>
<handler name="session"
type="java:org.apache.axis.handlers.SimpleSessionHandler"/>
- Ensure that on the client you use the same (just once instantiated)
service-object to create all your calls. That was a big mistake for me. I
did not take care about this
- After instantiating your service, set the MaintainSession to true before
your instantiate your calls from this service.
I think if you follow this, you should see in the SOAP-message (e.g. with
tcpmon) that the session ID is transferred in the sopaenv-header in the
response and request-message.
At least that works for me.
hope somebody can use it and wont get grey hair like me :-))
Greetings from Hamburg/Germany
-----Ursprüngliche Nachricht-----
Von: Klaus Thiele [mailto:kth@pi-ag.com]
Gesendet: Freitag, 13. Dezember 2002 17:09
An: axis-user@xml.apache.org
Betreff: Re: AW: Deploying the client
Hi Sebastian,
i'm new to axis an i'm currently working at this problem too.
java org.apache.axis.wsdl.WSDL2Java --deployScope Session writes
<parameter name="scope" value="Session"/>
to deploy.wsdd - but it seems that it hasn't any effect.
in my client i do
MyServiceLocator sl = new MyServiceLocator();
sl.setMaintainSession(true);
and then it works with session.
but how to enable this at server-side? it's not nice to set this at
client-side, i'm also testing with .NET and don't know how to enable this
there.
klaus
Am Freitag, 13. Dezember 2002 16:26 schrieb
Sebastian.Beyer@wettschereck-partner.de:
> Hi Pascal,
[...]
> But I have another question. I need to work with session. What I know
> is (or what I think I know): I need to define the scope of the service
> to session, and I have to invoke the SessionHandler during request and
> response flow. But: I think I have to define request and response-flow
> on both sides; the client and the server. But in the wsdl-file there
> is no entry for that flow-definitions I defined for the service on
> server-side. If I really have to tell the client-side axis to invoke
> my Handler (i.e. the SimpleSessionHandler) in request and response:
> How do I tell him without including a wsdd-file? Or do I have to
> define other stuff to get this working?
[...]
--
Klaus Thiele - Personal & Informatik AG
mailto:kth@pi-ag.com
"There's got to be more to life than compile-and-go."
Re: Deploying the client for session handling using SimpleSessionHand ler
Posted by Klaus Thiele <kt...@pi-ag.com>.
Hi Sebastian,
i played a little bit around with this technique but i don't
know where it is good for.
the only difference i see is the sessionid in the soap-header instead of
"cookie: jsessionid=..." in the http-header and an SimpleSession-object instead
of an AxisHttpSession-object in my service.
for what can i use it?
tia
klaus
ps:
with each method-call, a additional
"<ns1:sessionID...."
is added to the soap-header - bug? (axis_1.1beta)
Am Dienstag, 17. Dezember 2002 16:21 schrieb Sebastian.Beyer@wettschereck-partner.de:
> Hi there,
>
> I got it!!! Its unbelievable, but I really got my Sessions working! I also
> deploy my client now. Its rather easy, if you just know exactly how to.
> I'm writing now a small HOWTO, because I got nearly crazy with the existing
> documentation.
>
> So now for everybody who probably like to try, here comes a small
> explanation:
> Note: The wsdd-files are not complete, the shown data is just an
> abridgement of my wsdd-files.
> - I do not use generated classes, like the ones from wsdl2java, but it
> "should" work the same.
>
> server:
> - Write a small service that accesses the session and sets some variable
> inside this session. I took a String that was extended each time it is
> called by an "a" and then returns this String
> - In your server-config file add the SimpleSessionHandler to request AND
> response-flow of the service you want to use with sessions. That could look
> like:
>
> <handler name="session"
> type="java:org.apache.axis.handlers.SimpleSessionHandler"/>
> <service name="MyService" provider="java:RPC">
> <requestFlow>
> <handler type="session"/>
> </requestFlow>
> <responseFlow>
> <handler type="session"/>
> </responseFlow>
> <parameter name="allowedMethods" value="*"/>
> <parameter name="scope" value="session"/>
> <parameter name="className" value="MyService"/>
> </service>
>
> client:
> - Write a file named client-config.wsdd and put in a directory in your
> classpath of the client. That could be the root of your client-application.
> Also put in here SimpleSessionHandler in request an response-flow; the file
> could look like:
>
> <globalConfiguration>
> <requestFlow>
> <handler type="session"/>
> </requestFlow>
> <responseFlow>
> <handler type="session"/>
> </responseFlow>
> </globalConfiguration>
> <parameter name="scope" value="session"/>
> <handler name="session"
> type="java:org.apache.axis.handlers.SimpleSessionHandler"/>
>
> - Ensure that on the client you use the same (just once instantiated)
> service-object to create all your calls. That was a big mistake for me. I
> did not take care about this
> - After instantiating your service, set the MaintainSession to true before
> your instantiate your calls from this service.
>
> I think if you follow this, you should see in the SOAP-message (e.g. with
> tcpmon) that the session ID is transferred in the sopaenv-header in the
> response and request-message.
> At least that works for me.
>
> hope somebody can use it and wont get grey hair like me :-))
[...]
--
Klaus Thiele - Personal & Informatik AG
mailto:kth@pi-ag.com
"There's got to be more to life than compile-and-go."