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>

Reply via email to