[ 
https://issues.apache.org/jira/browse/ODE-264?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12590351#action_12590351
 ] 

Mateusz Nowakowski commented on ODE-264:
----------------------------------------

As I mentioned we solved this problem using 

<bpel:catch faultName="tns:LowLevelServiceError" 
faultVariable="LowLevelServiceFaultVariable" 
faultMessageType="tns:LowLevelServiceFault">  where tns:LowLevelServiceFault is 
declared as

<message name="LowLevelServiceFault">
<part name="body" element="soap-env:Fault"/>
</message> 

and using static routing sleep and xslt service units before entering ode we 
make sure that ode gets from ServiceMix an xml which contains only 
<soap-env:Fault> and it works somehow.....


I think I can close this entry and open enhancement about it

> Catch fault mapping doesn't fulfill specification
> -------------------------------------------------
>
>                 Key: ODE-264
>                 URL: https://issues.apache.org/jira/browse/ODE-264
>             Project: ODE
>          Issue Type: Bug
>          Components: BPEL Runtime
>    Affects Versions: 1.1.1
>         Environment: FUSE ESB 3.3.0.2
>            Reporter: Mateusz Nowakowski
>             Fix For: 1.2
>
>
> In one my wsdls I have: 
>       <message name="LowLevelServiceFault">
>               <part name="body" element="soap-env:Fault"/>
>       </message>
>       <portType name="SomeServicePortType">
>               <operation name="SomeServiceRQ">
>                       <input message="tns:SomeServiceInput"/>
>                       <output message="tns:SomeServiceOutput"/>
>                       <fault name="LowLevelServiceError" 
> message="tns:LowLevelServiceFault"/>
>               </operation>
>       </portType>
> After invoke I've got fault message so I would like to catch fault using:
> <bpel:catch faultName="tns:LowLevelServiceError" 
> faultVariable="LowLevelServiceFaultVariable" faultElement="soap-env:Fault">
> but it doesn't work.
> According to specification is should work (Web Services Business Process 
> Execution Language Version 2.0 OASIS Standard11 April 2007, paragraph 12.5. 
> Fault Handlers):
> In the case of faults thrown with associated data the fault MUST be caught as 
> follows:
> 1.    If there is a <catch> construct with a matching faultName value that 
> has a faultVariable whose type matches the type of the runtime fault data 
> then the fault is passed to the identified <catch> construct (see the 
> matching criteria definition below). 
> 2.    Otherwise if the fault data is a WSDL message type where the message 
> contains a single part defined by an element and there exists a <catch> 
> construct with a matching faultName value that has a faultVariable whose 
> associated faultElement's QName matches the QName of the runtime element data 
> of the single WSDL message part, then the fault is passed to the identified 
> <catch> construct with the faultVariable initialized to the value in the 
> single part's element (see the matching criteria definition below).
> so according to the specification LowLevelServiceFaultVariable should be 
> initialized using "body" part.
> Fortunately such catch works:
> <bpel:catch faultName="tns:LowLevelServiceError" 
> faultVariable="LowLevelServiceFaultVariable" 
> faultMessageType="tns:LowLevelServiceFault">

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to