James Neff wrote:
> Andrew,
>
> Thank you for responding to my e-mail however I still cannot get
> sessions to work on my Axis2 setup.
>
> I added the code you provided to the method like this:
>
> public int TestSessionMethod() {
> SessionContext sessionContext =
> MessageContext.getCurrentMessageContext().getSessionContext();
> int myCounter = 0;
> myCounter = 1 +
> Integer.parseInt((String)sessionContext.getProperty("thisCounter").toString());
>
> sessionContext.setProperty("thisCounter", myCounter );
> return myCounter ;
> }
>
>
> When I call this method from my Mozilla web browser:
>
> http://localhost:8080/axis2/services/MyService/TestSessionMethod
>
> The method is working correctly and I get returned a soap message
> containing an incrementing result. I've confirmed the session working
> (versus application) by opening IE and calling the same method. The
> results from IE are as expected : 1, 2, 3 ... etc.
>
> I cannot get this method working from an RPC client though. Here is my
> code from my jsp client:
>
> <%
> returnValue = "-99";
>
> try {
>
> MyServiceStub stub = new MyServiceStub();
> stub._getServiceClient().getOptions().setManageSession(true);
> MyServiceStub.TestSessionMethod myServicerequest = new
> MyServiceStub.TestSessionMethod();
> TestSessionMethodResponse myServiceResponse =
> stub.TestSessionMethod(myServicerequest);
> returnValue = String.valueOf(myServiceResponse.get_return());
> }
> catch (Exception e) {
> returnValue = "Exception: " + e;
> } out.println(returnValue);
> %>
>
> The result is always : 1, 1, 1, ... etc.
It looks like you're creating a new client each time you call the
service, so each call would be in a separate session. What happens if
you invoke the service multiple times with the same client object?
> I added to my Web Service class a constructor:
>
> public MyService() {
> System.out.println("MyService.constructing!");
>
> int testCounter = 0;
> SessionContext sessionContext =
> MessageContext.getCurrentMessageContext().getSessionContext();
> sessionContext.setProperty("thisCounter", testCounter);
> }
>
>
> And when I go to /logs/catalina.out I see :
>
> MyService.constructing!
>
> for as many times as I call the method from my RPC client.
That's what I would expect. If you store session information in the
SessionContext, then that wouldn't matter.
> Also, the session does work when I use "application" for the scope. But
> when I try "transportsession" or "soapsession" in the "scope" attribute
> of services.xml it always acts like "request" scope.
If you use "application", then you wouldn't get a separate counter for
each session. Every user would be incrementing the same counter. If
that's what you want, then do that. If you really want to store
separate variables for each session, then your server's already doing
the right thing with "transportsession", according to your web browser
test. You just need to change your client.
Andrew
> What else am I missing to get sessions working for Axis2?
>
> Thank you in advance,
> James
>
>
>
>
>
> Andrew Martin wrote:
>> Store session information like this:
>> MessageContext.getCurrentMessageContext().getSessionContext().setProperty(key,
>>
>> val)
>> Retrieve it like this:
>> MessageContext.getCurrentMessageContext().getSessionContext().getProperty(key)
>>
>>
>> Andrew
>>
>> James Neff wrote:
>>
>>> in my services.xml I have the attribute scope="TransportSession".
>>>
>>> In my client I have this:
>>>
>>> myServiceStub stub = new myServiceStub();
>>> myServiceStub.MyMethod myServiceRequest = new myServiceStub .MyMethod();
>>> myServiceRequest .setParameter(parameterValue);
>>> stub._getServiceClient().getOptions().setManageSession(true);
>>>
>>> But the session is not keeping.
>>>
>>> It looks like the myService is getting instantiated for each call, and
>>> not being held in a session.
>>>
>>> What am I doing wrong?
>>>
>>> Thanks in advance,
>>> Jim
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>
>>
>>
>
>
--
Andrew Martin
Computer Programmer
Regenstrief Institute, Inc.
410 West 10th Street, Suite 2000
Indianapolis, IN 46202-3012
Phone: (317) 423-5542
Fax: (317) 423-5695
[EMAIL PROTECTED]
Confidentiality Notice: The contents of this message and any files
transmitted with it may contain confidential and/or privileged
information and are intended solely for the use of the named
addressee(s). Additionally, the information contained herein may have
been disclosed to you from medical records with confidentiality
protected by federal and state laws. Federal regulations and State laws
prohibit you from making further disclosure of such information without
the specific written consent of the person to whom the information
pertains or as otherwise permitted by such regulations. A general
authorization for the release of medical or other information is not
sufficient for this purpose.
If you have received this message in error, please notify the sender by
return e-mail and delete the original message. Any retention,
disclosure, copying, distribution or use of this information by anyone
other than the intended recipient is strictly prohibited.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]