ConversationID is not set correctly when using Conversational with WS
---------------------------------------------------------------------

                 Key: TUSCANY-1854
                 URL: https://issues.apache.org/jira/browse/TUSCANY-1854
             Project: Tuscany
          Issue Type: Bug
    Affects Versions: Java-SCA-1.0
         Environment: Windows XP
            Reporter: bjoern


When unsing the @Conversational with webservices on serverside the 
@conversationID is not filled with the vlaue of the SOAP-Header but is filled 
with a newly generated.

The information from the User-List I collected with Simon:


Hi,

I logged the SOAP messages that go form the WS-Client to the WS-Server and I 
found out something strange:

On client-side a ConverstionID is generated 
(5756de5a-904e-4834-aaf4-6249d74b702e) and passed using the SOAP-header To the 
server-side. I expected that the anootated variable

> @ConversationID
> public String lConversationID;

Is filled with this value (5756de5a-904e-4834-aaf4-6249d74b702e) but it seams 
to get a differend id (194e6a05-8b80-42e4-a380-5e43fffcdb14).

As long as the conversation is up the ID send by the client stays the same 
(5756de5a-904e-4834-aaf4-6249d74b702e) but on server side I get a differend ID 
for every call.

SOAP LOGFILE:

        <soapenv:Envelope
                xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";>
                <soapenv:Header>
                        <To xmlns="http://www.w3.org/2005/08/addressing";>
                                <wsa:Address
                                        
xmlns:wsa="http://www.w3.org/2005/08/addressing";>
                                        http://localhost:8082/SOULSessionService
                                </wsa:Address>
                                <wsa:ReferenceParameters
                                        
xmlns:wsa="http://www.w3.org/2005/08/addressing";>
                                        <axis2ns1:ConversationID
                                                
xmlns:axis2ns1="http://tuscany.apache.org/xmlns/sca/1.0";>
                                                
5756de5a-904e-4834-aaf4-6249d74b702e
                                        </axis2ns1:ConversationID>
                                </wsa:ReferenceParameters>
                        </To>
                </soapenv:Header>
                <soapenv:Body>
                        <_ns_:getSessionID 
xmlns:_ns_="http://SOULSessionService";>
                                <_ns_:getName></_ns_:getName>
                        </_ns_:getSessionID>
                </soapenv:Body>
        </soapenv:Envelope>
        <soapenv:Envelope
                xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";>
                <soapenv:Body>
                        <_ns_:getSessionIDResponse
                                xmlns:_ns_="http://SOULSessionService";>
                                <_ns_:getNameReturn>
                                        194e6a05-8b80-42e4-a380-5e43fffcdb14
                                </_ns_:getNameReturn>
                        </_ns_:getSessionIDResponse>
                </soapenv:Body>
        </soapenv:Envelope>
        <soapenv:Envelope
                xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";>
                <soapenv:Header>
                        <To xmlns="http://www.w3.org/2005/08/addressing";>
                                <wsa:Address
                                        
xmlns:wsa="http://www.w3.org/2005/08/addressing";>
                                        http://localhost:8082/SOULSessionService
                                </wsa:Address>
                                <wsa:ReferenceParameters
                                        
xmlns:wsa="http://www.w3.org/2005/08/addressing";>
                                        <axis2ns2:ConversationID
                                                
xmlns:axis2ns2="http://tuscany.apache.org/xmlns/sca/1.0";>
                                                
5756de5a-904e-4834-aaf4-6249d74b702e
                                        </axis2ns2:ConversationID>
                                </wsa:ReferenceParameters>
                        </To>
                </soapenv:Header>
                <soapenv:Body>
                        <_ns_:getSessionID 
xmlns:_ns_="http://SOULSessionService";>
                                <_ns_:getName></_ns_:getName>
                        </_ns_:getSessionID>
                </soapenv:Body>
        </soapenv:Envelope>
        <soapenv:Envelope
                xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";>
                <soapenv:Body>
                        <_ns_:getSessionIDResponse
                                xmlns:_ns_="http://SOULSessionService";>
                                <_ns_:getNameReturn>
                                        4002d850-bc7c-47b0-b866-99d1f3bfdfad
                                </_ns_:getNameReturn>
                        </_ns_:getSessionIDResponse>
                </soapenv:Body>
        </soapenv:Envelope>

        

Greetings
Björn
 

-----Ursprüngliche Nachricht-----
Von: Simon Laws [mailto:[EMAIL PROTECTED]
Gesendet: Dienstag, 16. Oktober 2007 18:38
An: [EMAIL PROTECTED]
Betreff: Re: Problems with Conversational and Webservices

On 10/16/07, Dietrich, Björn <[EMAIL PROTECTED]> wrote:
>
> Hi,
>
> I have a problem with coversational and webservice binding.
> I have a Service which is conversational and uses the @ConversationID 
> to get a ConversationID. I have a function getSessionID to read this 
> conversationID.
> I use this function to get the ID on client-side and print it out.
>
> With POJO-binding the ConversationID stays the same no mather how 
> often I call the getSessionID.
>
> SOULSessionServiceClient.composite
>
> <composite xmlns=http://www.osoa.org/xmlns/sca/1.0 targetNamespace= 
> http://SOULSessionServicexmlns:hw="http://SOULSessionService";
> name="SOULSessionServiceClient">
>
>     <component name="SOULSessionServiceClient">
>
>         <implementation.java class="
> de.cenit.SOUL.ServiceRuntime.SOULSessionService" />
>
>     </component>
>
> </composite>
>
>
> OUTPUT:
> SOULSESSIONSERVICECALLED:fc7e8541-b164-4cb7-af41-11a69a082a07
>
> GETSTATE
>
> Called getSessionID
>
> SessionID:fc7e8541-b164-4cb7-af41-11a69a082a07
>
> SOULSESSIONSERVICECALLED:fc7e8541-b164-4cb7-af41-11a69a082a07
>
> Called getSessionID
>
> SessionID:fc7e8541-b164-4cb7-af41-11a69a082a07
>
>
>
> If I use the same client with WebService-binding I get a different 
> ConversationID for each call.
>
>
>
> <composite xmlns=http://www.osoa.org/xmlns/sca/1.0 < 
> http://www.osoa.org/xmlns/sca/1.0> targetNamespace= 
> http://SOULSessionService <http://SOULSessionService> xmlns:hw="
> http://SOULSessionService"; name="SOULSessionServiceClient">
>
>         <component name="SOULSessionServiceClient">
>
>             <implementation.java class="
> de.cenit.SOUL.ServiceRuntime.SOULSessionServiceComponent" />
>
>         </component>
>
>         <reference name="SOULSessionService"
> promote="SOULSessionServiceClient/helloWorldService">
>
>             <interface.java interface="
> de.cenit.SOUL.ServiceRuntime.SOULSessionServiceComponent" />
>
>             <binding.ws wsdlElement="
> http://SOULSessionService#wsdl.port(HelloWorldService/HelloWorldSoapPort)"
> />
>
>         </reference>
>
> </composite>
>
> OUTPUT:
>
> GETSTATE
>
> Called getSessionID
>
> SessionID:ff70883f-4441-447e-9b40-7d47052a69d9
>
> Called getSessionID
>
> SessionID:eacfebd2-6e27-4747-aefe-c2be119efa33
>
>
>
> Service Interface:
> @Remotable
>
> @Service
>
> @Conversational
>
> //@Scope("CONVERSATION")
>
> public interface ISOULSessionService extends ISOULService {
>
>         //public String exec(String name);
>
>         public String getName(String name);
>
>         //public String exec(SOULParameters name);
>
>         //public String exec(DataObject name);
>
>
>
>         public String getSessionID(String name);
>
>
>
>         public DataObject exec(DataObject name) throws SOULException;
>
>
>
>         public DataObject storeState(DataObject pObject);
>
>
>
>         public DataObject getState(DataObject pObject) ;
>
> }
>
>
>
>
>
> Service Implementation:
>
> @Scope("CONVERSATION")
> @Service(ISOULSessionService.class)
> public class SOULSessionService implements ISOULSessionService {
>
>
> @ConversationID
> public String lConversationID;
>
>
>
> public SOULSessionService()
> {
>
> }
> public String getName(String name)
> {
>   System.out.println("ConverstationID:"+lConversationID);
>   return "de.cenit.SOUL.ServiceRuntime.SOULSessionService
> ";//this.getClass().toString();
> }
>
>     public DataObject exec(DataObject name) {
>      System.out.println("SOULSESSIONSERVICECALLED:"+lConversationID);
>         return  name;
>     }
>
>
>     public String getSessionID(String name) {
>         System.out.println("Called getSessionID");
>         return lConversationID;
>     }
>
>
>
> }
>
>
>
>
> WSDL-file:
>
>
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <!--
>
> * Licensed to the Apache Software Foundation (ASF) under one
>
> * or more contributor license agreements. See the NOTICE file
>
> * distributed with this work for additional information
>
> * regarding copyright ownership. The ASF licenses this file
>
> * to you under the Apache License, Version 2.0 (the
>
> * "License"); you may not use this file except in compliance
>
> * with the License. You may obtain a copy of the License at
>
> *
>
> * http://www.apache.org/licenses/LICENSE-2.0
>
> *
>
> * Unless required by applicable law or agreed to in writing,
>
> * software distributed under the License is distributed on an
>
> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>
> * KIND, either express or implied. See the License for the
>
> * specific language governing permissions and limitations
>
> * under the License.
>
> -->
>
> <wsdl:definitions targetNamespace="http://SOULSessionService"; xmlns:tns="
> http://SOULSessionService";
>
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; xmlns:wsdlsoap="
> http://schemas.xmlsoap.org/wsdl/soap/";
>
> xmlns:xsd="http://www.w3.org/2001/XMLSchema";
>
> xmlns:ns0="http://de_cenit_SOUL_ServiceRuntime";
>
> xmlns:ns1="http://de_cenit_SOUL_ServiceRuntime/xsd";
>
> xmlns:sca="http://www.osoa.org/xmlns/sca/1.0";
>
> name="SOULSessionService">
>
> <wsdl:types>
>
> <schema elementFormDefault="qualified" targetNamespace="
> http://SOULSessionService";
>
> xmlns="http://www.w3.org/2001/XMLSchema";>
>
>
>
> <complexType name="Exception">
>
> <sequence>
>
> <element minOccurs="0" name="Exception" nillable="true"
> type="xsd:anyType"/>
>
> </sequence>
>
> </complexType>
>
> <element name="SOULException">
>
> <complexType>
>
> <sequence>
>
> <element minOccurs="0" name="SOULException" nillable="true"
> type="ns1:SOULException"/>
>
> </sequence>
>
> </complexType>
>
> </element>
>
> <element name="exec">
>
> <complexType>
>
> <sequence>
>
> <element name="name" type="xsd:anyType" />
>
> </sequence>
>
> </complexType>
>
> </element>
>
> <element name="execResponse">
>
> <complexType>
>
> <sequence>
>
> <element name="execReturn" type="xsd:anyType" />
>
> </sequence>
>
> </complexType>
>
> </element>
>
>
>
> <element name="getName">
>
> <complexType>
>
> <sequence>
>
> <element name="getName" type="xsd:string" />
>
> </sequence>
>
> </complexType>
>
> </element>
>
> <element name="getNameResponse">
>
> <complexType>
>
> <sequence>
>
> <element name="getNameReturn" type="xsd:string" />
>
> </sequence>
>
> </complexType>
>
> </element>
>
> <element name="getSessionID">
>
> <complexType>
>
> <sequence>
>
> <element name="getName" type="xsd:string" />
>
> </sequence>
>
> </complexType>
>
> </element>
>
> <element name="getSessionIDResponse">
>
> <complexType>
>
> <sequence>
>
> <element name="getNameReturn" type="xsd:string" />
>
> </sequence>
>
> </complexType>
>
> </element>
>
> <element name="getState">
>
> <complexType>
>
> <sequence>
>
> <element name="getState" type="xsd:anyType" />
>
> </sequence>
>
> </complexType>
>
> </element>
>
> <element name="getStateResponse">
>
> <complexType>
>
> <sequence>
>
> <element name="execReturn" type="xsd:anyType" />
>
> </sequence>
>
> </complexType>
>
> </element>
>
> <element name="storeState">
>
> <complexType>
>
> <sequence>
>
> <element name="name" type="xsd:anyType" />
>
> </sequence>
>
> </complexType>
>
> </element>
>
> <element name="storeStateResponse">
>
> <complexType>
>
> <sequence>
>
> <element name="execReturn" type="xsd:anyType" />
>
> </sequence>
>
> </complexType>
>
> </element>
>
> <!-- NOT NEEDED -->
>
> <complexType name="Name">
>
> <sequence>
>
> <element name="first" type="xsd:anyType" />
>
> <element name="last" type="xsd:string" />
>
> </sequence>
>
> </complexType>
>
> <xsd:complexType name="LogonDataType">
>
> <xsd:sequence>
>
> <xsd:element name="Field"
>
> type="tns:LogonDataFieldType" maxOccurs="unbounded" />
>
> </xsd:sequence>
>
> <xsd:attribute name="SystemID" type="xsd:string" />
>
> </xsd:complexType>
>
> <xsd:complexType name="LogonDataFieldType">
>
> <xsd:attribute name="key" type="xsd:string" />
>
> <xsd:attribute name="value" type="xsd:string" />
>
> </xsd:complexType>
>
> </schema>
>
> <schema elementFormDefault="qualified" targetNamespace="
> http://de_cenit_SOUL_ServiceRuntime";
>
> xmlns="http://www.w3.org/2001/XMLSchema";>
>
>
>
> <complexType name="Exception">
>
> <sequence>
>
> <element minOccurs="0" name="Exception" nillable="true"
> type="xsd:anyType"/>
>
> </sequence>
>
> </complexType>
>
> <element name="SOULException">
>
> <complexType>
>
> <sequence>
>
> <element minOccurs="0" name="SOULException" nillable="true"
> type="ns1:SOULException"/>
>
> </sequence>
>
> </complexType>
>
> </element>
>
> </schema>
>
> <schema xmlns:ax21="http://de_cenit_SOUL_ServiceRuntime/xsd";
> attributeFormDefault="qualified" elementFormDefault="qualified"
> targetNamespace="http://de_cenit_SOUL_ServiceRuntime/xsd"; xmlns="
> http://www.w3.org/2001/XMLSchema";>
>
> <complexType name="SOULException">
>
> <complexContent>
>
> <extension base="ns0:Exception">
>
> <sequence/>
>
> </extension>
>
> </complexContent>
>
> </complexType>
>
> </schema>
>
> </wsdl:types>
>
> <wsdl:message name="execRequest">
>
> <wsdl:part element="tns:exec" name="parameters" />
>
> </wsdl:message>
>
> <wsdl:message name="execResponse">
>
> <wsdl:part element="tns:execResponse" name="parameters" />
>
> </wsdl:message>
>
>
>
> <wsdl:message name="getNameRequest">
>
> <wsdl:part element="tns:getName" name="parameters" />
>
> </wsdl:message>
>
> <wsdl:message name="getNameResponse">
>
> <wsdl:part element="tns:getNameResponse" name="parameters" />
>
> </wsdl:message>
>
> <wsdl:message name="getSessionIDRequest">
>
> <wsdl:part element="tns:getSessionID" name="parameters" />
>
> </wsdl:message>
>
> <wsdl:message name="getSessionIDResponse">
>
> <wsdl:part element="tns:getSessionIDResponse" name="parameters" />
>
> </wsdl:message>
>
> <wsdl:message name="SOULException">
>
> <wsdl:part name="parameters" element="ns0:SOULException"/>
>
> </wsdl:message>
>
> <wsdl:message name="getStateRequest">
>
> <wsdl:part name="parameters" element="tns:getState" />
>
> </wsdl:message>
>
> <wsdl:message name="getStateResponse">
>
> <wsdl:part name="paparametersrt1" element="tns:getStateResponse" />
>
> </wsdl:message>
>
>
>
> <wsdl:message name="storeState">
>
> <wsdl:part name="parameters" element="tns:storeState" />
>
> </wsdl:message>
>
> <wsdl:message name="storeStateResponse">
>
> <wsdl:part name="parameters" element="tns:storeStateResponse" />
>
> </wsdl:message>
>
> <wsdl:portType name="HelloWorld" sca:requires="conversational">
>
> <wsdl:operation name="exec">
>
> <wsdl:input message="tns:execRequest" name="execRequest" />
>
> <wsdl:output message="tns:execResponse" name="execResponse" />
>
> <wsdl:fault message="tns:SOULException" name="SOULException"/>
>
> </wsdl:operation>
>
> <wsdl:operation name="getName">
>
> <wsdl:input message="tns:getNameRequest" name="getNameRequest" />
>
> <wsdl:output message="tns:getNameResponse" name="getNameResponse" />
>
> </wsdl:operation>
>
> <wsdl:operation name="getSessionID">
>
> <wsdl:input message="tns:getSessionIDRequest" name="getSessionIDRequest"
> />
>
> <wsdl:output message="tns:getSessionIDResponse"
> name="getSessionIDResponse" />
>
> </wsdl:operation>
>
> <wsdl:operation name="getState">
>
> <wsdl:input message="tns:getStateRequest" name="getStateRequest"/>
>
> <wsdl:output message="tns:getStateResponse" name="getStateResponse" />
>
> </wsdl:operation>
>
> <wsdl:operation name="storeState">
>
> <wsdl:input message="tns:storeStateRequest" name="storeStateRequest"/>
>
> <wsdl:output message="tns:storeStateResponse" 
> name="storeStateResponse" />
>
> </wsdl:operation>
>
> </wsdl:portType>
>
> <wsdl:binding name="HelloWorldSoapBinding" type="tns:HelloWorld">
>
> <wsdlsoap:binding style="document" transport="
> http://schemas.xmlsoap.org/soap/http"; />
>
> <wsdl:operation name="exec">
>
> <wsdlsoap:operation soapAction="" />
>
> <wsdl:input name="execRequest">
>
> <wsdlsoap:body use="literal" />
>
> </wsdl:input>
>
> <wsdl:output name="execResponse">
>
> <wsdlsoap:body use="literal" />
>
> </wsdl:output>
>
> <wsdl:fault name="SOULException">
>
> <wsdlsoap:fault use="literal" name="SOULException"/>
>
> </wsdl:fault>
>
> </wsdl:operation>
>
> <wsdl:operation name="getName">
>
> <wsdlsoap:operation soapAction="" />
>
> <wsdl:input name="getNameRequest">
>
> <wsdlsoap:body use="literal" />
>
> </wsdl:input>
>
> <wsdl:output name="getNameResponse">
>
> <wsdlsoap:body use="literal" />
>
> </wsdl:output>
>
> </wsdl:operation>
>
> <wsdl:operation name="getSessionID">
>
> <wsdlsoap:operation soapAction="" />
>
> <wsdl:input name="getSessionIDRequest">
>
> <wsdlsoap:body use="literal" />
>
> </wsdl:input>
>
> <wsdl:output name="getSessionIDResponse">
>
> <wsdlsoap:body use="literal" />
>
> </wsdl:output>
>
> </wsdl:operation>
>
> <wsdl:operation name="getState">
>
> <wsdlsoap:operation soapAction="" />
>
> <wsdl:input name="getStateRequest">
>
> <wsdlsoap:body use="literal" />
>
> </wsdl:input>
>
> <wsdl:output name="getStateResponse">
>
> <wsdlsoap:body use="literal" />
>
> </wsdl:output>
>
> </wsdl:operation>
>
> <wsdl:operation name="storeState">
>
> <wsdlsoap:operation soapAction="" />
>
> <wsdl:input name="storeStateRequest">
>
> <wsdlsoap:body use="literal" />
>
> </wsdl:input>
>
> <wsdl:output name="storeStateResponse">
>
> <wsdlsoap:body use="literal" />
>
> </wsdl:output>
>
> </wsdl:operation>
>
> </wsdl:binding>
>
> <wsdl:service name="HelloWorldService">
>
> <wsdl:port binding="tns:HelloWorldSoapBinding" 
> name="HelloWorldSoapPort">
>
> <wsdlsoap:address location="http://localhost:8080/SOULSessionService"; 
> />
>
> </wsdl:port>
>
> </wsdl:service>
>
> </wsdl:definitions>
>
> TestClient:
>
>
>
> package de.cenit.tests;
>
> import static org.junit.Assert.*;
>
> import org.junit.Test;
>
>
>
> import commonj.sdo.DataObject;
> import commonj.sdo.helper.XMLHelper;
>
> import de.cenit.SOUL.ServiceRuntime.ISOULService;
> import de.cenit.SOUL.ServiceRuntime.SDOTools;
> import de.cenit.SOUL.ServiceRuntime.SOULServiceProvider;
> import de.cenit.SOUL.ServiceRuntime.ISOULSessionService;
> import de_cenit_SOUL_ServiceRuntime.SOULException;
>
> public class SOULSessionServiceTest {
>
> @Test
> public void testExec() {
>
>   SOULServiceProvider lServiceProvider=new SOULServiceProvider();
>
>
> SOULServiceProvider lSOULServiceProvider=new SOULServiceProvider();
>
>       ISOULSessionService SessionService 
> =lSOULServiceProvider.getService 
> ("SOULSessionServiceClient",ISOULSessionService.class);
>
>
>
>       DataObject name = 
> SDOTools.loadSDOFromFile("LogonData","LogonData");
>
>
>        DataObject value =null;
> try {
>    SessionService.exec((DataObject)name);
>
>    System.out.println("GETSTATE");
>     System.out.println("SessionID:"+SessionService.getSessionID(""));
>    SessionService.exec((DataObject)name);
>    System.out.println("SessionID:"+SessionService.getSessionID(""));
>       ISOULSessionService SessionService2 
> =lSOULServiceProvider.getService 
> ("SOULSessionServiceClient",ISOULSessionService.class);
>
>     SessionService2.exec((DataObject)name);
>     System.out.println("SessionID:"+SessionService2.getSessionID(""));
>
> } catch (SOULException e) {
>    String lmsgString=e.getMessage();
>   System.out.println("MSG:"+lmsgString);
>
>   String ldoString=e.getDOString();
>   System.out.println("SDO:"+ldoString);
>
> }
>
> }
>
> }
>
>
>
>
>
>
> CENIT AG Systemhaus, Industriestrasse 52-54, 70565 Stuttgart, Tel.: 
> +49
> 711 7825-30, Fax: +49 711 7825-4000, Internet: www.cenit.de
> Geschaeftsstellen: Berlin, Duesseldorf, Frankfurt, Hamburg, Hannover, 
> Muenchen, Saarbruecken
> Vorstandsmitglieder: Kurt Bengel, Christian Pusch
> Aufsichtsratsmitglieder: Falk Engelmann (Vorsitzender des 
> Aufsichtsrats), Hubert Leypoldt, Dr. Dirk Lippold
> Bankverbindungen: Deutsche Bank (BLZ 600 700 70) Kto. 1661 040, 
> Commerzbank (BLZ 600 400 71) Kto. 532 015 500, BW-Bank (BLZ 600 501 01) Kto.
> 2 403 313
> Registergericht: Amtsgericht Stuttgart
> Handelsregister: HRB Nr. 19117
> Umsatzsteuer: ID-Nr. DE 147 862 777



Hi Bjorn

Let me ask a question or two to make sure that I understand you scenario.

1/ Without Web Services
-----------------------

(A)SOULSessionServiceTest  ---Java---> (B)SOULSessionServiceClient
                                                             impl = 
SOULSessionService


2/ With Web Services
--------------------


(A)SOULSessionServiceTest  ---Java---> (B)SOULSessionServiceClient
---WebService---> (C)HelloWorldService
                                                               impl = 
SOULSessionServiceComponent

You observe that in case 1 the conversationId recorded at B is the same every 
time you call SOULSessionServiceClient through the same proxy.

You observe that in case 2 the conversationId recorded at B is different every 
time you call SOULSessionServiceClient through the same proxy

Is it possible to share with the implementation of SOULSessionServiceComponent, 
or at least it @Scope configuration?

Where does the WSDL you included get used?

Regards

Simon


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


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

Reply via email to