According to my experience Web Service are stateless.

On Fri, Feb 26, 2010 at 1:16 PM, jamie <[email protected]> wrote:

>  Hi Everyone
>
> Thanks for your suggestions regarding multiple classes. I've decided to use
> multiple web services for each section of the API, however, I cannot get
> services within the servicegroup to
> share properties.
>
> In the Test web service that controls the login. Once the user has logged
> in successfully, I call the newSession object that sets the
> Config object to a property.
>
> private void newSession() throws AxisFault {
>         if(mc!=null) {
>               ServiceGroupContext sgc = mc.getServiceGroupContext();
>               if (sgc != null) {
>                   sgc.setProperty("config", config);
>               }
>         }
>  }
>
> In the services.xml, I set the scope of each of the services to
> "transportsession":
>
> <service name="Test2" scope="transportsession">
>     <Description>
>         MailArchiva search API
>     </Description>
>     <messageReceivers>
>         <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only";
> class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
>         <messageReceiver  mep="http://www.w3.org/2004/08/wsdl/in-out";
> class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
>     </messageReceivers>
>     <parameter name="ServiceClass"
> locked="false">com.test.Test2</parameter>
> </service>
>
> <service name="Test1" scope="transportsession">
>     <Description>
>       Test API
>     </Description>
>     <messageReceivers>
>         <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only";
> class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
>         <messageReceiver  mep="http://www.w3.org/2004/08/wsdl/in-out";
> class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
>     </messageReceivers>
>     <parameter name="ServiceClass"
> locked="false">com.test.Test1</parameter>
> </service>
>
> In the Test2 service implementation, I have a getConfig() object which is
> called by each of the methods to set the internal application configuration
> object
>
>
>     private Config getConfig() throws AxisFault {
>         MessageContext mc = MessageContext.getCurrentMessageContext();
>         if(mc.getServiceGroupContext()!=null) {
>              Config config =
> (Config)mc.getServiceGroupContext().getProperty("config");
>              if (config!=null) {
>                  return config;
>              }
>         }
>         throw new AxisFault("not logged in");
>     }
>
>
> When the web service client calls the above, getProperty("config") always
> returns null. Thus,
> there is no sharing taking place.
>
> In the web service client, I do the following:
>
> test1Stub = new Test1Stub(url+"/MailArchiva");
> test1Stub._getServiceClient().getOptions().setManageSession(true);
>
> Am I missing something important here? Anyone know why the session is not
> applied across all servicegroups?
>
> Thanks
>
> Jamie
>
>

Reply via email to