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.
|