Hi ; SessionContext is the one which keep transport dependent session data , and that will be only created if the service is deployed in transport session.
Thanks Deepal Sanjiva Weerawarana wrote: >Hmmmm. I think your getSessionContext() should be modified to do >messageContext.getServiceContext(). Can you see whether that works? > >I'm not sure what sessionContext is .. have to look around :(. > >Sanjiva. > >On Fri, 2007-01-26 at 13:59 -0500, Zhou, Sam wrote: > > >>Hi, >> >> >> >>I developed the following sample code using Axis 2 with session >>management. The service is very simple, it has a single method called >>plusone(). Whenever you call plusone() with session enabled, it will >>return counter++. The counter is initialized to 0 in init() and stored >>in session. >> >> >> >>I believe the server side code works fine, because after I deployed >>MySessionService.aar, if I use my browser to refresh >> >>http://localhost:8080/axis2/rest/MySessionService/plusone >> >> >> >>It will return 1, 2, 3, 4, 5, 6, etc. >> >> >> >>However, in my Stub client test code, even if I coded >> >> >> >>stub._getServiceClient().getOptions().setManageSession(true); >> >> >> >>All the 3 direct stub.plusone() calls only return 1, 1, 1 instead of >>1, 2, 3. >> >> >> >>Attached are source codes in zip file. If you want to regenerate codes >>from scratch, please use README.TXT. All the codes should work fine in >>Eclipse 3.2.1 except I removed libraries of Axis2 and JUnit. >> >> >> >>Please note I set the session scope to transport session in >>service.xml. >> >> >> >>I really appreciate if somebody could tell me what part in my code is >>wrong and why the session doesn't work for Stub. I can email you the >>source code if you need it. I cannot attach to axis-user group, it is >>regarded as spam. >> >> >> >>Thanks a lot, >> >> >>Sam. >> >>=========== MySessionServiceTest.java ===================== >>package com.compuware.axis2.gen; >> >>public class MySessionServiceTest extends junit.framework.TestCase { >> >> public void testplusone() throws java.lang.Exception { >> >> com.compuware.axis2.gen.MySessionServiceStub stub = new >>com.compuware.axis2.gen.MySessionServiceStub( >> "http://localhost:8080/axis2/services/MySessionService/plusone"); >> stub._getServiceClient().getOptions().setManageSession(true); >> >> System.out.println("plusone()=" + stub.plusone().get_return()); >> System.out.println("plusone()=" + stub.plusone().get_return()); >> System.out.println("plusone()=" + stub.plusone().get_return()); >> >> } >> >> public org.apache.axis2.databinding.ADBBean getTestObject( >> java.lang.Class type) throws Exception { >> return (org.apache.axis2.databinding.ADBBean) type.newInstance(); >> } >>} >> >>============ MySessionServiceSkeleton.java =========== >>package com.compuware.axis2.gen; >> >>import org.apache.axis2.context.*; >>import com.compuware.axis2.xsd.*; >>import org.apache.axis2.transport.http.*; >> >>public class MySessionServiceSkeleton implements >> MySessionServiceSkeletonInterface { >> >> private static String PROP_COUNTER = "property.counter"; >> >> public com.compuware.axis2.xsd.PlusoneResponse plusone() { >> printMessage("plusone()", "begin"); >> >> SessionContext sessionContext = getSessionContext(); >> >> int counter = 1 + ((Integer) >>sessionContext.getProperty(PROP_COUNTER)).intValue(); >> sessionContext.setProperty(PROP_COUNTER, new Integer(counter)); >> >> printMessage("plusone()", "sessionContext="+sessionContext+", >>counter="+counter); >> >> PlusoneResponse response = new PlusoneResponse(); >> >> response.set_return(counter); >> return response; >> >> } >> >> public void init(ServiceContext serviceContext) { >> printMessage("init()", "begin"); >> >> SessionContext sessionContext = getSessionContext(); >> sessionContext.setProperty(PROP_COUNTER, new Integer(0)); >> >> printMessage("init()", "sessionContext="+sessionContext+", reset >>counter to 1 in session"); >> } >> >> public void destroy(ServiceContext serviceContext) { >> printMessage("destroy()", "begin"); >> >> SessionContext sessionContext = getSessionContext(); >> sessionContext.getProperties().remove(PROP_COUNTER); >> >> printMessage("destroy()", "sessionContext="+sessionContext+", remove >>counter from session"); >> } >> >> private SessionContext getSessionContext() { >> MessageContext messageContext = MessageContext >> .getCurrentMessageContext(); >> SessionContext sessionContext = messageContext.getSessionContext(); >> >> return sessionContext; >> } >> >> private void printMessage(String method, String message) { >> System.out.println(method+"::"+message); >> } >>} >> >> >> >> >>============ services.xml ===================== >><!-- This file was auto-generated from WSDL --> >> >><!-- by the Apache Axis2 version: #axisVersion# #today# --> >> >><serviceGroup> >> >><service name="MySessionService" scope="transportsession"> >> >><messageReceivers> >> >><messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" >>class="com.compuware.axis2.gen.MySessionServiceMessageReceiverInOut"/> >> >></messageReceivers> >> >><parameter locked="false" >>name="ServiceClass">com.compuware.axis2.gen.MySessionServiceSkeleton</parameter> >> >><operation name="plusone" mep="http://www.w3.org/2004/08/wsdl/in-out"> >> >><actionMapping>urn:plusone</actionMapping> >> >><outputActionMapping>http://axis2.compuware.com/MySessionServicePortType/plusoneResponse</outputActionMapping> >> >></operation> >> >></service> >> >></serviceGroup> >> >> >> >> >> >>============ MySessionService.wsdl ====================== >><wsdl:definitions xmlns:axis2="http://axis2.compuware.com" >>xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" >>xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" >>xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" >>xmlns:ns="http://axis2.compuware.com/xsd" >>xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" >>xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" >>targetNamespace="http://axis2.compuware.com"><wsdl:types><xs:schema >>xmlns:xs="http://www.w3.org/2001/XMLSchema" >>attributeFormDefault="qualified" elementFormDefault="qualified" >>targetNamespace="http://axis2.compuware.com/xsd"> >> >><xs:element name="plusoneResponse"> >> >><xs:complexType> >> >><xs:sequence> >> >><xs:element name="return" nillable="true" type="xs:int" /> >> >></xs:sequence> >> >></xs:complexType> >> >></xs:element> >> >></xs:schema></wsdl:types><wsdl:message >>name="plusoneMessage" /><wsdl:message >>name="plusoneResponseMessage"><wsdl:part name="part1" >>element="ns:plusoneResponse" /></wsdl:message><wsdl:portType >>name="MySessionServicePortType"><wsdl:operation >>name="plusone"><wsdl:input >>xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" >>message="axis2:plusoneMessage" >>wsaw:Action="urn:plusone" /><wsdl:output >>xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" >>message="axis2:plusoneResponseMessage" >>wsaw:Action="http://axis2.compuware.com/MySessionServicePortType/plusoneResponse" >> /></wsdl:operation></wsdl:portType><wsdl:binding >>name="MySessionServiceSOAP11Binding" >>type="axis2:MySessionServicePortType"><soap:binding >>transport="http://schemas.xmlsoap.org/soap/http" style="document" >>/><wsdl:operation name="plusone"><soap:operation soapAction="urn:plusone" >>style="document" /><wsdl:input><soap:body use="literal" >>/></wsdl:input><wsdl:output><soap:body use="literal" >>/></wsdl:output></wsdl:operation></wsdl:binding><wsdl:binding >>name="MySessionServiceSOAP12Binding" >>type="axis2:MySessionServicePortType"><soap12:binding >>transport="http://schemas.xmlsoap.org/soap/http" style="document" >>/><wsdl:operation name="plusone"><soap12:operation soapAction="urn:plusone" >>style="document" /><wsdl:input><soap12:body use="literal" >>/></wsdl:input><wsdl:output><soap12:body use="literal" >>/></wsdl:output></wsdl:operation></wsdl:binding><wsdl:service >>name="MySessionService"><wsdl:port name="MySessionServiceSOAP11port_http" >>binding="axis2:MySessionServiceSOAP11Binding"><soap:address >>location="http://localhost:8080/axis2/services/MySessionService" >>/></wsdl:port><wsdl:port name="MySessionServiceSOAP12port_http" >>binding="axis2:MySessionServiceSOAP12Binding"><soap12:address >>location="http://localhost:8080/axis2/services/MySessionService" >>/></wsdl:port></wsdl:service></wsdl:definitions> >> >> >> >> >> >> >> >> >> >> >> >> >>The contents of this e-mail are intended for the named addressee only. >>It contains information that may be confidential. Unless you are the >>named addressee or an authorized designee, you may not copy or use it, >>or disclose it to anyone else. If you received it in error please >>notify us immediately and then destroy it. >> >> -- Thanks, Deepal ................................................................ "The highest tower is built one brick at a time" --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
