Hi Matthieu, Thank you for your response. To better troubleshoot this problem, I went and created test process samples that would easily reproduce the problem.
In this sample, there are 5 files: The first 2 files implement the WSFaultThrower process that just throws a fault. The next 2 files implement the WSFaultInvoker process that invokes the WSFaultThrower process. This process then should catch the fault thrown by WSFaultThrower and then rethrow a new fault to the client. WSFaultThrower.wsdl WSFaultThrower.bpel WSFaultInvoker.wsdl WSFaultInvoker.bpel deploy.xml I could reproduce the problem by creating soap-ui projects that could invoke both services separately. When I invoke FaultThrower service, it just throws a standard soap fault to me. But when I invoke WSFaultInvoker, it just times out instead of throwing a fault as well. Please let me know if I am doing something wrong. Thanks, Dalys --- On Wed, 10/22/08, Matthieu Riou <[EMAIL PROTECTED]> wrote: > From: Matthieu Riou <[EMAIL PROTECTED]> > Subject: Re: Fault exchange between bpel processes > To: [email protected], [EMAIL PROTECTED] > Date: Wednesday, October 22, 2008, 10:20 AM > On Tue, Oct 21, 2008 at 9:57 PM, Dalys Sebastian > <[EMAIL PROTECTED]>wrote: > > > Hi everyone, > > > > I have 2 bpel processes running within the same folder > under > > WEB-INF/processes. My first bpel calls my second bpel > via an invoke activity > > and the second bpel throws a soap standard fault. But, > my first bpel process > > cannot catch it. > > > > In my first bpel, I have set: > > <ext:failureHandling > xmlns:ext="http://ode.apache.org/activityRecovery"> > > > <ext:faultOnFailure>true</ext:faultOnFailure> > > </ext:failureHandling> > > > > I tested the operation of my second bpel via soap-ui > and I can see that it > > correctly returns a soap-fault. The soap-fault looks > exactly like the > > specifications and is a standard soap fault. > > > > But, when the same operation of the second bpel is > called by my first bpel, > > the fault cannot be caught by the first bpel. I have a > catchAll inserted in > > the invoke activity to catch the fault. Could anyone > please help out? (I am > > using ode 1.2) > > > > Could you provide your whole deployment so I can have a > look at it and > eventually reproduce the problem? > > Thanks, > Matthieu > > > > > > Thanks, > > Dalys > > > > > > > > > > __________________________________________________ > > Do You Yahoo!? > > Tired of spam? Yahoo! Mail has the best spam > protection around > > http://mail.yahoo.com > >
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:prop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:fault="http://test.fault.ode.bpel.com" targetNamespace="http://test.fault.ode.bpel.com"> <wsdl:types> <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://test.fault.ode.bpel.com"> <xs:element name="throwFaultRequest"> <xs:complexType> <xs:sequence> <xs:element name="input" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="throwFaultResponse"> <xs:complexType> <xs:sequence> <xs:element name="status" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="TestFault"> <xs:complexType> <xs:sequence> <xs:element name="type" type="xs:string"/> <xs:element name="detail" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> </wsdl:types> <wsdl:message name="throwFaultRequest"> <wsdl:part name="parameters" element="fault:throwFaultRequest"/> </wsdl:message> <wsdl:message name="throwFaultResponse"> <wsdl:part name="parameters" element="fault:throwFaultResponse"/> </wsdl:message> <wsdl:message name="TestFault"> <wsdl:part name="parameters" element="fault:TestFault"/> </wsdl:message> <wsdl:portType name="ThrowFaultPortType"> <wsdl:operation name="throwFault"> <wsdl:input message="fault:throwFaultRequest" wsaw:Action="fault:throwFaultRequest"/> <wsdl:output message="fault:throwFaultResponse" wsaw:Action="fault:throwFaultResponse"/> <wsdl:fault message="fault:TestFault" name="fault:TestFault" wsaw:Action="fault:TestFault"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="ThrowFaultBinding" type="fault:ThrowFaultPortType"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <wsdl:operation name="throwFault"> <soap:operation soapAction="fault:throwFault" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> <wsdl:fault name="fault:TestFault"> <soap:fault use="literal" name="fault:TestFault"/> </wsdl:fault> </wsdl:operation> </wsdl:binding> <wsdl:service name="ThrowFaultService"> <wsdl:port name="ThrowFaultHttpSoap11" binding="fault:ThrowFaultBinding"> <soap:address location="http://localhost:8080/BioSP/processes/ThrowFaultService"/> </wsdl:port> </wsdl:service> <plnk:partnerLinkType name="ThrowFault"> <plnk:role name="throwfault" portType="fault:ThrowFaultPortType"/> </plnk:partnerLinkType> </wsdl:definitions>
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:prop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:faultinv="http://test.fault.invoke.ode.bpel.com" targetNamespace="http://test.fault.invoke.ode.bpel.com"> <wsdl:types> <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://test.fault.invoke.ode.bpel.com"> <xs:element name="verifyOperationSupported"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="operationName" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="verifyOperationSupportedResponse"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="return" type="xs:boolean"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="faultInvokeRequest"> <xs:complexType> <xs:sequence> <xs:element name="input" maxOccurs="unbounded" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="faultInvokeResponse"> <xs:complexType> <xs:sequence> <xs:element name="status" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="FaultInvokeFault"> <xs:complexType> <xs:sequence> <xs:element name="type" type="xs:string"/> <xs:element name="detail" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> </wsdl:types> <wsdl:message name="faultInvokeRequest"> <wsdl:part name="parameters" element="faultinv:faultInvokeRequest"/> </wsdl:message> <wsdl:message name="faultInvokeResponse"> <wsdl:part name="parameters" element="faultinv:faultInvokeResponse"/> </wsdl:message> <wsdl:message name="FaultInvokeFault"> <wsdl:part name="parameters" element="faultinv:FaultInvokeFault"/> </wsdl:message> <wsdl:message name="verifyOperationSupportedRequest"> <wsdl:part name="parameters" element="faultinv:verifyOperationSupported"/> </wsdl:message> <wsdl:message name="verifyOperationSupportedResponse"> <wsdl:part name="parameters" element="faultinv:verifyOperationSupportedResponse"/> </wsdl:message> <wsdl:portType name="FaultInvokePortType"> <wsdl:operation name="faultInvoke"> <wsdl:input message="faultinv:faultInvokeRequest" wsaw:Action="faultinv:faultInvokeRequest"/> <wsdl:output message="faultinv:faultInvokeResponse" wsaw:Action="faultinv:faultInvokeResponse"/> <wsdl:fault message="faultinv:FaultInvokeFault" name="faultinv:FaultInvokeFault" wsaw:Action="faultinv:FaultInvokeFault"/> </wsdl:operation> <wsdl:operation name="verifyOperationSupported"> <wsdl:input message="faultinv:verifyOperationSupportedRequest" wsaw:Action="faultinv:verifyOperationSupported"/> <wsdl:output message="faultinv:verifyOperationSupportedResponse" wsaw:Action="faultinv:verifyOperationSupportedResponse"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="FaultInvokeBinding" type="faultinv:FaultInvokePortType"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <wsdl:operation name="verifyOperationSupported"> <soap:operation soapAction="faultinv:verifyOperationSupported" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="faultInvoke"> <soap:operation soapAction="faultinv:faultInvoke" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> <wsdl:fault name="faultinv:FaultInvokeFault"> <soap:fault use="literal" name="faultinv:FaultInvokeFault"/> </wsdl:fault> </wsdl:operation> </wsdl:binding> <wsdl:service name="FaultInvokeService"> <wsdl:port name="FaultInvokePortHttpSoap11" binding="faultinv:FaultInvokeBinding"> <soap:address location="http://localhost:8080/BioSP/processes/FaultInvokeService"/> </wsdl:port> </wsdl:service> <plnk:partnerLinkType name="FaultInvoke"> <plnk:role name="faultInvoke" portType="faultinv:FaultInvokePortType"/> </plnk:partnerLinkType> </wsdl:definitions>
<deploy xmlns:main="http://test.fault.ode.bpel.com/process" xmlns:maininv="http://test.fault.invoke.ode.bpel.com/process" xmlns="http://www.apache.org/ode/schemas/dd/2007/03" xmlns:fault="http://test.fault.ode.bpel.com" xmlns:faultinv="http://test.fault.invoke.ode.bpel.com"> <process name="main:WSFaultThrower"> <provide partnerLink="ThrowFault"> <service name="fault:ThrowFaultService" port="ThrowFaultHttpSoap11"/> </provide> </process> <process name="maininv:WSFaultInvoker"> <provide partnerLink="FaultInvoke"> <service name="faultinv:FaultInvokeService" port="FaultInvokePortHttpSoap11"/> </provide> <invoke partnerLink="ThrowFault"> <service name="fault:ThrowFaultService" port="ThrowFaultHttpSoap11"/> </invoke> </process> </deploy>
