You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by Kevin TierOne <ke...@gmail.com> on 2008/03/20 17:21:25 UTC

scope=transportsession, new SessionContext instance for each request

Hello,

I am trying to work out a very simple example with
scope=transportsession.  The purpose of this exercise is to save an
attribute on the session for use when the server receives several
requests from the same client.

The following code returns a different SessionContext instance every
time the service is called.  Thus when I use session.getProperty(),
null is always returned even if I have called setProperty() in a
previous request.

        public class EchoMessageReceiverInOut extends
org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver{


        private static final String ATTR_KEY="CUSTOM_ATTRIBUTE";
        public void
invokeBusinessLogic(org.apache.axis2.context.MessageContext
msgContext, org.apache.axis2.context.MessageContext newMsgContext)
        throws org.apache.axis2.AxisFault{

        try {

        SessionContext sessionContext = msgContext.getSessionContext();

        String id=null;
        if (sessionContext!=null)
        {
          id=(String)sessionContext.getProperty(ATTR_KEY);
          if (id==null){
            id="85";
            sessionContext.setProperty(ATTR_KEY, id);
          }
        }

        // get the implementation class for the Web Service
        Object obj = getTheImplementationObject(msgContext);

Is there any other configuration that I am required to add, possibly
on the client side?

Is there another (better) way to save an attribute for the session?

I'm using axis2-1.3 (latest release) and tomcat 5.5.

This is what my service.xml looks like:

<serviceGroup>
    <service scope="transportsession" name="Echo">
        <messageReceivers>
            <messageReceiver mep="http://www.w3.org/ns/wsdl/in-out"
class="org.example.www.echo.EchoMessageReceiverInOut"/>
        </messageReceivers>
        <parameter
name="ServiceClass">org.example.www.echo.EchoSkeleton</parameter>
...

Thanks for your help,
Kevin

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


Re: scope=transportsession, new SessionContext instance for each request

Posted by Kevin TierOne <ke...@gmail.com>.
Good question.  Looks like the problem was on the client side.  I was
using the following to setup the client:

    Options options = new Options();
    options.setAction(command);
    options.setTo(new EndpointReference(endpoint));
    serviceClient.setOptions(options);


Adding the setMangedSession() call as follows fixes the problem.

    Options options = new Options();
    options.setAction(command);
    options.setTo(new EndpointReference(endpoint));
    options.setManageSession(true);
    serviceClient.setOptions(options);

Thanks again!

On Thu, Mar 20, 2008 at 12:43 PM, Deepal jayasinghe <de...@gmail.com> wrote:
> Hi Kevin ,
>  Do you sure you send the correct cookies
>
>  Thank you!
>  -Deepal
>
>
> > Hello,
>  >
>  > I am trying to work out a very simple example with
>  > scope=transportsession.  The purpose of this exercise is to save an
>  > attribute on the session for use when the server receives several
>  > requests from the same client.
>  >
>  > The following code returns a different SessionContext instance every
>  > time the service is called.  Thus when I use session.getProperty(),
>  > null is always returned even if I have called setProperty() in a
>  > previous request.
>  >
>  >         public class EchoMessageReceiverInOut extends
>  > org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver{
>  >
>  >
>  >         private static final String ATTR_KEY="CUSTOM_ATTRIBUTE";
>  >         public void
>  > invokeBusinessLogic(org.apache.axis2.context.MessageContext
>  > msgContext, org.apache.axis2.context.MessageContext newMsgContext)
>  >         throws org.apache.axis2.AxisFault{
>  >
>  >         try {
>  >
>  >         SessionContext sessionContext = msgContext.getSessionContext();
>  >
>  >         String id=null;
>  >         if (sessionContext!=null)
>  >         {
>  >           id=(String)sessionContext.getProperty(ATTR_KEY);
>  >           if (id==null){
>  >             id="85";
>  >             sessionContext.setProperty(ATTR_KEY, id);
>  >           }
>  >         }
>  >
>  >         // get the implementation class for the Web Service
>  >         Object obj = getTheImplementationObject(msgContext);
>  >
>  > Is there any other configuration that I am required to add, possibly
>  > on the client side?
>  >
>  > Is there another (better) way to save an attribute for the session?
>  >
>  > I'm using axis2-1.3 (latest release) and tomcat 5.5.
>  >
>  > This is what my service.xml looks like:
>  >
>  > <serviceGroup>
>  >     <service scope="transportsession" name="Echo">
>  >         <messageReceivers>
>  >             <messageReceiver mep="http://www.w3.org/ns/wsdl/in-out"
>  > class="org.example.www.echo.EchoMessageReceiverInOut"/>
>  >         </messageReceivers>
>  >         <parameter
>  > name="ServiceClass">org.example.www.echo.EchoSkeleton</parameter>
>  > ...
>  >
>  > Thanks for your help,
>  > Kevin
>  >
>  > ---------------------------------------------------------------------
>  > To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
>  > For additional commands, e-mail: axis-dev-help@ws.apache.org
>  >
>  >
>  >
>
>
>  ---------------------------------------------------------------------
>  To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
>  For additional commands, e-mail: axis-dev-help@ws.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


Re: scope=transportsession, new SessionContext instance for each request

Posted by Deepal jayasinghe <de...@gmail.com>.
Hi Kevin ,
Do you sure you send the correct cookies

Thank you!
-Deepal
> Hello,
>
> I am trying to work out a very simple example with
> scope=transportsession.  The purpose of this exercise is to save an
> attribute on the session for use when the server receives several
> requests from the same client.
>
> The following code returns a different SessionContext instance every
> time the service is called.  Thus when I use session.getProperty(),
> null is always returned even if I have called setProperty() in a
> previous request.
>
>         public class EchoMessageReceiverInOut extends
> org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver{
>
>
>         private static final String ATTR_KEY="CUSTOM_ATTRIBUTE";
>         public void
> invokeBusinessLogic(org.apache.axis2.context.MessageContext
> msgContext, org.apache.axis2.context.MessageContext newMsgContext)
>         throws org.apache.axis2.AxisFault{
>
>         try {
>
>         SessionContext sessionContext = msgContext.getSessionContext();
>
>         String id=null;
>         if (sessionContext!=null)
>         {
>           id=(String)sessionContext.getProperty(ATTR_KEY);
>           if (id==null){
>             id="85";
>             sessionContext.setProperty(ATTR_KEY, id);
>           }
>         }
>
>         // get the implementation class for the Web Service
>         Object obj = getTheImplementationObject(msgContext);
>
> Is there any other configuration that I am required to add, possibly
> on the client side?
>
> Is there another (better) way to save an attribute for the session?
>
> I'm using axis2-1.3 (latest release) and tomcat 5.5.
>
> This is what my service.xml looks like:
>
> <serviceGroup>
>     <service scope="transportsession" name="Echo">
>         <messageReceivers>
>             <messageReceiver mep="http://www.w3.org/ns/wsdl/in-out"
> class="org.example.www.echo.EchoMessageReceiverInOut"/>
>         </messageReceivers>
>         <parameter
> name="ServiceClass">org.example.www.echo.EchoSkeleton</parameter>
> ...
>
> Thanks for your help,
> Kevin
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-dev-help@ws.apache.org
>
>
>   


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org