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]