I created a service assembly that includes two service units - a HTTP service unit and an ODE service unit. The HTTP service unit merely proxies requests coming into the ODE service unit.
After I successfully deployed those two service units into ServiceMix, I have the following URLs available http://localhost:8080/ode/processes/MSResponderService/ http://localhost:8080/ode/processes/MSMainExecuteService/ http://localhost:8080/ode/processes/MSMainService/ But when I invoke the ODE by sending the following soap request to http://localhost:8080/ode/processes/MSMainExecuteService (as instructed by the readme.txt came along with the magic session), I got an error saying that "Error in deployment descriptor for process unknown partner link responderPartnerLink". Please help me making the magic session sample work. I need this to assess how ODE can be used to correlate requests with sessions. Thank you. ------------------------------- <soap request> ------------------------------------- <soapenv:Envelope xmlns:soapenv=" http://schemas.xmlsoap.org/soap/envelope/" xmlns:unit="http://ode/bpel/unit-test.wsdl"> <soapenv:Header/> <soapenv:Body> <unit:execute>fire!</unit:execute> </soapenv:Body> </soapenv:Envelope> ------------------------------- deploy.xml------------------------------------- <deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03" xmlns:main="http://ode/bpel/unit-test " xmlns:mws="http://ode/bpel/unit-test.wsdl" xmlns:resp="http://ode/bpel/responder"> <process name="main:MagicSessionMain"> <provide partnerLink="executePartnerLink"> <service name="mws:MSMainExecuteService" port="MSExecutePort"/> </provide> <provide partnerLink="responderPartnerLink"> <service name="mws:MSMainService" port="MSMainPort"/> </provide> <invoke partnerLink="responderPartnerLink"> <service name="mws:MSResponderService" port="MSResponderPort"/> </invoke> </process> <process name="resp:MagicSessionResponder"> <type>resp:MagicSessionResponder</type> <provide partnerLink="mainPartnerLink"> <service name="mws:MSResponderService" port="MSResponderPort"/> </provide> <invoke partnerLink="mainPartnerLink"> <service name="mws:MSMainService" port="MSMainPort"/> </invoke> </process> </deploy> -------------------------------- main.wsdl------------------------------------ <?xml version="1.0" encoding="utf-8" ?> <!-- example copied from https://svn.apache.org/viewvc/ode/trunk/distro/src/examples-war/MagicSession/ --> <wsdl:definitions targetNamespace="http://ode/bpel/unit-test.wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://ode/bpel/unit-test.wsdl" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:smix="http://servicemix.org/wsdl/jbi/" xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"> <types> <xsd:element name="result" type="xsd:string"/> <xsd:element name="execute" type="xsd:string"/> <xsd:element name="callback" type="xsd:string"/> <xsd:element name="doubleCallback" type="xsd:string"/> <xsd:element name="tripleCallback" type="xsd:string"/> <xsd:element name="initiate" type="xsd:string"/> <xsd:element name="doubleCall" type="xsd:string"/> <xsd:element name="tripleCall" type="wsa:EndpointReference"/> </types> <wsdl:message name="ExecuteMessage"> <wsdl:part name="payload" element="tns:execute"/> </wsdl:message> <wsdl:message name="CallbackMessage"> <wsdl:part name="payload" element="tns:callback"/> </wsdl:message> <wsdl:message name="DoubleCallbackMessage"> <wsdl:part name="payload" element="tns:doubleCallback"/> </wsdl:message> <wsdl:message name="TripleCallbackMessage"> <wsdl:part name="payload" element="tns:tripleCallback"/> </wsdl:message> <wsdl:message name="ResultMessage"> <wsdl:part name="ack" element="tns:result"/> </wsdl:message> <wsdl:message name="InitiateMessage"> <wsdl:part name="payload" element="tns:initiate"/> </wsdl:message> <wsdl:message name="DoubleCallMessage"> <wsdl:part name="payload" element="tns:doubleCall"/> </wsdl:message> <wsdl:message name="TripleCallMessage"> <wsdl:part name="payload" element="wsa:EndpointReference"/> </wsdl:message> <wsdl:portType name="MSExecutePortType"> <wsdl:operation name="execute"> <wsdl:input message="tns:ExecuteMessage" name="Execute"/> <wsdl:output message="tns:ResultMessage" name="Result"/> </wsdl:operation> </wsdl:portType> <wsdl:portType name="MSMainPortType"> <wsdl:operation name="callback"> <wsdl:input message="tns:CallbackMessage" name="Callback"/> </wsdl:operation> <wsdl:operation name="doubleCallback"> <wsdl:input message="tns:DoubleCallbackMessage" name="DoubleCallback"/> </wsdl:operation> <wsdl:operation name="tripleCallback"> <wsdl:input message="tns:TripleCallbackMessage" name="TripleCallback"/> </wsdl:operation> </wsdl:portType> <wsdl:portType name="MSResponderPortType"> <wsdl:operation name="initiate"> <wsdl:input message="tns:InitiateMessage" name="Callback"/> </wsdl:operation> <wsdl:operation name="doubleCall"> <wsdl:input message="tns:DoubleCallMessage" name="DoubleCallback"/> </wsdl:operation> <wsdl:operation name="EndpointReference"> <wsdl:input message="tns:TripleCallMessage" name="EndpointReference"/> </wsdl:operation> </wsdl:portType> <!-- <wsdl:binding name="MSExecuteBinding" type="tns:MSExecutePortType"> <soap:binding style="document" transport=" http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="execute"> <soap:operation soapAction="" style="document"/> <wsdl:input> <soap:body namespace="http://ode/bpel/unit-test.wsdl" use="literal"/> </wsdl:input> <wsdl:output> <soap:body namespace="http://ode/bpel/unit-test.wsdl" use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:binding name="MSMainBinding" type="tns:MSMainPortType"> <soap:binding style="document" transport=" http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="callback"> <soap:operation soapAction="" style="document"/> <wsdl:input> <soap:body namespace="http://ode/bpel/unit-test.wsdl" use="literal"/> </wsdl:input> </wsdl:operation> <wsdl:operation name="doubleCallback"> <soap:operation soapAction="" style="document"/> <wsdl:input> <soap:body namespace="http://ode/bpel/unit-test.wsdl" use="literal"/> </wsdl:input> </wsdl:operation> <wsdl:operation name="tripleCallback"> <soap:operation soapAction="" style="document"/> <wsdl:input> <soap:body namespace="http://ode/bpel/unit-test.wsdl" use="literal"/> </wsdl:input> </wsdl:operation> </wsdl:binding> <wsdl:binding name="MSResponderBinding" type="tns:MSResponderPortType"> <soap:binding style="document" transport=" http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="initiate"> <soap:operation soapAction="" style="document"/> <wsdl:input> <soap:body namespace="http://ode/bpel/unit-test.wsdl" use="literal"/> </wsdl:input> </wsdl:operation> <wsdl:operation name="doubleCall"> <soap:operation soapAction="" style="document"/> <wsdl:input> <soap:body namespace="http://ode/bpel/unit-test.wsdl" use="literal"/> </wsdl:input> </wsdl:operation> <wsdl:operation name="EndpointReference"> <soap:operation soapAction="" style="document"/> <wsdl:input> <soap:body namespace="http://ode/bpel/unit-test.wsdl" use="literal"/> </wsdl:input> </wsdl:operation> </wsdl:binding> <wsdl:service name="MSMainExecuteService"> <wsdl:port name="MSExecutePort" binding="tns:MSExecuteBinding"> <soap:address location=" http://localhost:8080/ode/processes/MSMainExecuteService"/> </wsdl:port> </wsdl:service> <wsdl:service name="MSMainService"> <wsdl:port name="MSMainPort" binding="tns:MSMainBinding"> <soap:address location=" http://localhost:8080/ode/processes/MSMainService"/> </wsdl:port> </wsdl:service> <wsdl:service name="MSResponderService"> <wsdl:port name="MSResponderPort" binding="tns:MSResponderBinding"> <soap:address location=" http://localhost:8080/ode/processes/MSResponderService"/> </wsdl:port> </wsdl:service> --> <plnk:partnerLinkType name="ResponderPartnerLinkType"> <plnk:role name="responder" portType="tns:MSResponderPortType"/> <plnk:role name="main" portType="tns:MSMainPortType"/> </plnk:partnerLinkType> <plnk:partnerLinkType name="ExecutePartnerLinkType"> <plnk:role name="executor" portType="tns:MSExecutePortType"/> </plnk:partnerLinkType> </wsdl:definitions> ------------------------------ main.bpel-------------------------------------- <?xml version="1.0" encoding="utf-8" ?> <process name="MagicSessionMain" targetNamespace="http://ode/bpel/unit-test" xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:tns="http://ode/bpel/unit-test" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:test="http://ode/bpel/unit-test.wsdl"> <import location="Main.wsdl" namespace="http://ode/bpel/unit-test.wsdl" importType="http://schemas.xmlsoap.org/wsdl/" /> <partnerLinks> <partnerLink name="responderPartnerLink" partnerLinkType="test:ResponderPartnerLinkType" myRole="main" partnerRole="responder" initializePartnerRole="yes"/> <partnerLink name="executePartnerLink" partnerLinkType="test:ExecutePartnerLinkType" myRole="executor"/> </partnerLinks> <variables> <variable name="dummy" messageType="test:ExecuteMessage"/> <variable name="dummy2" messageType="test:InitiateMessage"/> <variable name="dummy3" messageType="test:CallbackMessage"/> <variable name="dummy4" messageType="test:DoubleCallMessage"/> <variable name="dummy5" messageType="test:DoubleCallbackMessage"/> <variable name="eprmessage" messageType="test:TripleCallMessage"/> <variable name="myepr" messageType="test:TripleCallbackMessage"/> <variable name="result" messageType="test:ResultMessage"/> </variables> <sequence> <!-- Start message --> <receive name="start" partnerLink="executePartnerLink" portType="test:MSExecutePortType" operation="execute" createInstance="yes" variable="dummy"/> <!-- Initializing message, starting the responder process with the magic session and expecting a callback --> <assign> <copy> <from>123</from> <to variable="dummy2" part="payload"/> </copy> </assign> <invoke name="initiate" partnerLink="responderPartnerLink" portType="test:MSResponderPortType" operation="initiate" inputVariable="dummy2"/> <receive name="callback" partnerLink="responderPartnerLink" portType="test:MSMainPortType" operation="callback" variable="dummy3"/> <!-- Initializing message, calling our partner again with magic session (double invocation) --> <assign> <copy> <from>123</from> <to variable="dummy4" part="payload"/> </copy> </assign> <invoke name="get-endpoint" partnerLink="responderPartnerLink" portType="test:MSResponderPortType" operation="doubleCall" inputVariable="dummy4"/> <receive name="doubleCallback" partnerLink="responderPartnerLink" portType="test:MSMainPortType" operation="doubleCallback" variable="dummy5"/> <!-- Sending our endpoint explicitly to have our partner calling us back using it (demonstrating assignment) --> <assign> <copy> <from partnerLink="responderPartnerLink" endpointReference="myRole"/> <to variable="eprmessage" part="payload"/> </copy> </assign> <invoke name="eprPassing" partnerLink="responderPartnerLink" portType="test:MSResponderPortType" operation="EndpointReference" inputVariable="eprmessage"/> <receive name="tripleCallback" partnerLink="responderPartnerLink" portType="test:MSMainPortType" operation="tripleCallback" variable="myepr"/> <!-- Done. --> <assign> <copy> <from>'OK'</from> <to variable="result" part="ack"/> </copy> </assign> <reply name="end" partnerLink="executePartnerLink" portType="test:MSExecutePortType" operation="execute" variable="result"/> </sequence> </process> -------------------------------- Responder.bpel---------------------------------- <?xml version="1.0" encoding="utf-8" ?> <!-- example copied from https://svn.apache.org/viewvc/ode/trunk/distro/src/examples-war/MagicSession/ --> <process name="MagicSessionResponder" targetNamespace="http://ode/bpel/responder" xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:tns="http://ode/bpel/responder" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:resp="http://ode/bpel/unit-test.wsdl"> <import location="Main.wsdl" namespace="http://ode/bpel/unit-test.wsdl" importType="http://schemas.xmlsoap.org/wsdl/" /> <partnerLinks> <partnerLink name="mainPartnerLink" partnerLinkType="resp:ResponderPartnerLinkType" myRole="responder" partnerRole="main" initializePartnerRole="yes"/> </partnerLinks> <variables> <variable name="dummy2" messageType="resp:InitiateMessage"/> <variable name="dummy3" messageType="resp:CallbackMessage"/> <variable name="dummy4" messageType="resp:DoubleCallMessage"/> <variable name="dummy5" messageType="resp:DoubleCallbackMessage"/> <variable name="eprmessage" messageType="resp:TripleCallMessage"/> <variable name="dummy6" messageType="resp:TripleCallbackMessage"/> </variables> <sequence> <!-- Starting process and first callback --> <receive name="start" partnerLink="mainPartnerLink" variable="dummy2" portType="resp:MSResponderPortType" operation="initiate" createInstance="yes"/> <assign> <copy> <from>123</from> <to variable="dummy3" part="payload"/> </copy> </assign> <invoke name="callback" partnerLink="mainPartnerLink" portType="resp:MSMainPortType" operation="callback" inputVariable="dummy3"/> <!-- Second callback --> <receive name="doubleCall" partnerLink="mainPartnerLink" variable="dummy4" portType="resp:MSResponderPortType" operation="doubleCall"/> <assign> <copy> <from>123</from> <to variable="dummy5" part="payload"/> </copy> </assign> <invoke name="doubleCallback" partnerLink="mainPartnerLink" portType="resp:MSMainPortType" operation="doubleCallback" inputVariable="dummy5"/> <!-- Callback on the epr explicitly provided by partner in the message (demonstrating assignment) --> <receive name="eprPassing" partnerLink="mainPartnerLink" variable="eprmessage" portType="resp:MSResponderPortType" operation="EndpointReference"/> <assign> <copy> <from variable="eprmessage" part="payload"/> <to partnerLink="mainPartnerLink"/> </copy> <copy> <from>123</from> <to variable="dummy6" part="payload"/> </copy> </assign> <invoke name="tripleCallback" partnerLink="mainPartnerLink" portType="resp:MSMainPortType" operation="tripleCallback" inputVariable="dummy6"/> </sequence> </process> -- Simon S.
