Hi, I have been trying to get a long-running "counter" process up and running on ODE, but have run into timeout errors when I make repeated calls to the process. Specifically, my process has a receive to initiate the process, and then another receive in a while loop that increments the counter. The initial call, and the first call to the increment operation appear to work fine. Subsequent calls to the increment operation, however, simply time out, and nothing is returned.
Initially I was working with my own process, but then decided to try out a sample "counter" process (which I found here: http://svn.apache.org/repos/asf/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestCounter/) to 1) make sure that this process executed properly, and then 2) try and figure out what was going wrong with my own code. To my surprise, this process exhibited the same behaviour* (timeouts on increment calls after the first one), which makes me think that either I'm passing the wrong parameters into the process, or that there's a problem with my ODE setup. To test out whether the problem was with all correlation-based processes, I wrote another process that has a sequence of different correlated receive operations, and this one works fine. However, calling different operations within a loop (using a pick within a while loop, for instance) results in the same timeout problem. Thus, it seems that the problem is with calling receive(s) multiple times within a loop (while, do-while, for-each, etc.) I am running Apache Tomcat 5.5.27 on Unix, and using ODE 1.3.3. For what it's worth, I'm using NetBeans to write my BPEL processes, but I haven't had problems with other processes I've written, so I don't think it's a NetBeans issue. I've attached the code for my counter process, as well as the code for the working sequential correlation process. I also pasted my SOAP calls to the counter process (generated using SoapUI) so that you can see what I've tried there. I suspect that either there is something wrong with my Apache/ODE setup or I am misunderstanding something fundamental about how correlation sets work -- I'm relatively new to BPEL and web services, so this is a definite possibility :) Thanks in advance for any help you can provide. Dave Chodos * When doing one last test this morning, I found that the counter process is now timing out on the first attempt to call getAndIncrement, rather than the second, like it was doing last night. Not sure what to make of this... However, it is definitely not working as expected :( *** call to init operation *** <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:coun="http://example.com/bpel/counter"> <soapenv:Header/> <soapenv:Body> <coun:init> <name>testProc</name> <alias>testProcAlias</alias> </coun:init> </soapenv:Body> </soapenv:Envelope> *** call to getAndIncrement operation *** <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:coun="http://example.com/bpel/counter"> <soapenv:Header/> <soapenv:Body> <coun:getAndIncrement> <name>testProc</name> <alias>testProcAlias</alias> </coun:getAndIncrement> </soapenv:Body> </soapenv:Envelope>
<?xml version="1.0" encoding="UTF-8"?> <deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03" xmlns:pns="http://enterprise.netbeans.org/bpel/SimpleTest/SimpleTest" xmlns:wns="http://j2ee.netbeans.org/wsdl/SimpleTest"> <process name="pns:SimpleTest"> <active>true</active> <provide partnerLink="PartnerLink1"> <service name="wns:SimpleTestService" port="SimpleTestPort"/> </provide> </process> </deploy>
<?xml version="1.0" encoding="UTF-8"?> <definitions name="SimpleTest" targetNamespace="http://j2ee.netbeans.org/wsdl/SimpleTest" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://j2ee.netbeans.org/wsdl/SimpleTest" xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:bpws="http://docs.oasis-open.org/wsbpel/2.0/varprop"> <types/> <message name="SimpleTestOperationRequest"> <part name="InputPart1" type="xsd:string"/> </message> <message name="SimpleTestOperationResponse"> <part name="OutputPart1" type="xsd:string"/> </message> <message name="SimpleTestStartOpRequest"> <part name="part1" type="xsd:string"/> </message> <message name="SimpleTestStartOpResponse"> <part name="part1" type="xsd:string"/> </message> <message name="SimpleTestThirdOpRequest"> <part name="part1" type="xsd:string"/> </message> <message name="SimpleTestThirdOpResponse"> <part name="part1" type="xsd:string"/> </message> <message name="SimpleTestFourthOpRequest"> <part name="part1" type="xsd:string"/> </message> <message name="SimpleTestFourthOpResponse"> <part name="part1" type="xsd:string"/> </message> <portType name="SimpleTestPortType"> <operation name="SimpleTestOperation"> <input name="input1" message="tns:SimpleTestOperationRequest"/> <output name="output1" message="tns:SimpleTestOperationResponse"/> </operation> <operation name="SimpleTestStartOp"> <input name="input2" message="tns:SimpleTestStartOpRequest"/> <output name="output2" message="tns:SimpleTestStartOpResponse"/> </operation> <operation name="SimpleTestThirdOp"> <input name="input3" message="tns:SimpleTestThirdOpRequest"/> <output name="output3" message="tns:SimpleTestThirdOpResponse"/> </operation> <operation name="SimpleTestFourthOp"> <input name="input4" message="tns:SimpleTestFourthOpRequest"/> <output name="output4" message="tns:SimpleTestFourthOpResponse"/> </operation> </portType> <binding name="SimpleTestBinding" type="tns:SimpleTestPortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="SimpleTestOperation"> <soap:operation/> <input name="input1"> <soap:body use="literal" namespace="http://j2ee.netbeans.org/wsdl/SimpleTest"/> </input> <output name="output1"> <soap:body use="literal" namespace="http://j2ee.netbeans.org/wsdl/SimpleTest"/> </output> </operation> <operation name="SimpleTestStartOp"> <soap:operation/> <input name="input2"> <soap:body use="literal" namespace="http://j2ee.netbeans.org/wsdl/SimpleTest"/> </input> <output name="output2"> <soap:body use="literal" namespace="http://j2ee.netbeans.org/wsdl/SimpleTest"/> </output> </operation> <operation name="SimpleTestThirdOp"> <soap:operation/> <input name="input3"> <soap:body use="literal" namespace="http://j2ee.netbeans.org/wsdl/SimpleTest"/> </input> <output name="output3"> <soap:body use="literal" namespace="http://j2ee.netbeans.org/wsdl/SimpleTest"/> </output> </operation> <operation name="SimpleTestFourthOp"> <soap:operation/> <input name="input4"> <soap:body use="literal" namespace="http://j2ee.netbeans.org/wsdl/SimpleTest"/> </input> <output name="output4"> <soap:body use="literal" namespace="http://j2ee.netbeans.org/wsdl/SimpleTest"/> </output> </operation> </binding> <service name="SimpleTestService"> <port name="SimpleTestPort" binding="tns:SimpleTestBinding"> <soap:address location="http://hypatia.cs.ualberta.ca:8585/ode/processes/SimpleTestService"/> </port> </service> <plnk:partnerLinkType name="SimpleTest"> <!-- A partner link type is automatically generated when a new port type is added. Partner link types are used by BPEL processes. In a BPEL process, a partner link represents the interaction between the BPEL process and a partner service. Each partner link is associated with a partner link type. A partner link type characterizes the conversational relationship between two services. The partner link type can have one or two roles.--> <plnk:role name="SimpleTestPortTypeRole" portType="tns:SimpleTestPortType"/> </plnk:partnerLinkType> <bpws:property name="InstanceID" type="xsd:string"/> <bpws:propertyAlias propertyName="tns:InstanceID" messageType="tns:SimpleTestStartOpRequest" part="part1"/> <bpws:propertyAlias propertyName="tns:InstanceID" messageType="tns:SimpleTestStartOpResponse" part="part1"/> <bpws:propertyAlias propertyName="tns:InstanceID" messageType="tns:SimpleTestOperationRequest" part="InputPart1"/> <bpws:propertyAlias propertyName="tns:InstanceID" messageType="tns:SimpleTestThirdOpRequest" part="part1"/> <bpws:propertyAlias propertyName="tns:InstanceID" messageType="tns:SimpleTestFourthOpRequest" part="part1"/> </definitions>
<?xml version="1.0" encoding="UTF-8"?> <definitions name="SimpleTest" targetNamespace="http://j2ee.netbeans.org/wsdl/SimpleTest" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://j2ee.netbeans.org/wsdl/SimpleTest" xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:bpws="http://docs.oasis-open.org/wsbpel/2.0/varprop"> <types/> <message name="SimpleTestOperationRequest"> <part name="InputPart1" type="xsd:string"/> </message> <message name="SimpleTestOperationResponse"> <part name="OutputPart1" type="xsd:string"/> </message> <message name="SimpleTestStartOpRequest"> <part name="part1" type="xsd:string"/> </message> <message name="SimpleTestStartOpResponse"> <part name="part1" type="xsd:string"/> </message> <message name="SimpleTestThirdOpRequest"> <part name="part1" type="xsd:string"/> </message> <message name="SimpleTestThirdOpResponse"> <part name="part1" type="xsd:string"/> </message> <portType name="SimpleTestPortType"> <operation name="SimpleTestOperation"> <input name="input1" message="tns:SimpleTestOperationRequest"/> <output name="output1" message="tns:SimpleTestOperationResponse"/> </operation> <operation name="SimpleTestStartOp"> <input name="input2" message="tns:SimpleTestStartOpRequest"/> <output name="output2" message="tns:SimpleTestStartOpResponse"/> </operation> <operation name="SimpleTestThirdOp"> <input name="input3" message="tns:SimpleTestThirdOpRequest"/> <output name="output3" message="tns:SimpleTestThirdOpResponse"/> </operation> </portType> <binding name="SimpleTestBinding" type="tns:SimpleTestPortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="SimpleTestOperation"> <soap:operation/> <input name="input1"> <soap:body use="literal" namespace="http://j2ee.netbeans.org/wsdl/SimpleTest"/> </input> <output name="output1"> <soap:body use="literal" namespace="http://j2ee.netbeans.org/wsdl/SimpleTest"/> </output> </operation> <operation name="SimpleTestStartOp"> <soap:operation/> <input name="input2"> <soap:body use="literal" namespace="http://j2ee.netbeans.org/wsdl/SimpleTest"/> </input> <output name="output2"> <soap:body use="literal" namespace="http://j2ee.netbeans.org/wsdl/SimpleTest"/> </output> </operation> <operation name="SimpleTestThirdOp"> <soap:operation/> <input name="input3"> <soap:body use="literal" namespace="http://j2ee.netbeans.org/wsdl/SimpleTest"/> </input> <output name="output3"> <soap:body use="literal" namespace="http://j2ee.netbeans.org/wsdl/SimpleTest"/> </output> </operation> </binding> <service name="SimpleTestService"> <port name="SimpleTestPort" binding="tns:SimpleTestBinding"> <soap:address location="http://hypatia.cs.ualberta.ca:8585/ode/processes/SimpleTestService"/> </port> </service> <plnk:partnerLinkType name="SimpleTest"> <!-- A partner link type is automatically generated when a new port type is added. Partner link types are used by BPEL processes. In a BPEL process, a partner link represents the interaction between the BPEL process and a partner service. Each partner link is associated with a partner link type. A partner link type characterizes the conversational relationship between two services. The partner link type can have one or two roles.--> <plnk:role name="SimpleTestPortTypeRole" portType="tns:SimpleTestPortType"/> </plnk:partnerLinkType> <bpws:property name="InstanceID" type="xsd:string"/> <bpws:propertyAlias propertyName="tns:InstanceID" messageType="tns:SimpleTestStartOpRequest" part="part1"> </bpws:propertyAlias> <bpws:propertyAlias propertyName="tns:InstanceID" messageType="tns:SimpleTestOperationRequest" part="InputPart1"> </bpws:propertyAlias> <bpws:propertyAlias propertyName="tns:InstanceID" messageType="tns:SimpleTestThirdOpRequest" part="part1"> </bpws:propertyAlias> </definitions>
