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]

Reply via email to