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.
-- 
Sanjiva Weerawarana, Ph.D.
Founder & Director; Lanka Software Foundation; http://www.opensource.lk/
Founder, Chairman & CEO; WSO2, Inc.; http://www.wso2.com/
Director; Open Source Initiative; http://www.opensource.org/
Member; Apache Software Foundation; http://www.apache.org/
Visiting Lecturer; University of Moratuwa; http://www.cse.mrt.ac.lk/


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to