You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ode.apache.org by "Matthieu Riou (JIRA)" <ji...@apache.org> on 2008/04/08 16:59:24 UTC
[jira] Commented: (ODE-264) Catch fault mapping doesn't fulfill
specification
[ https://issues.apache.org/jira/browse/ODE-264?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12586827#action_12586827 ]
Matthieu Riou commented on ODE-264:
-----------------------------------
Your part element probably shouldn't be the soap-env:Fault wrapper but "the runtime element data of the single WSDL message part". WSDL faults have their own element type which are usually included in the <details> element of the SOAP message. So you should probably have something like:
<message name="LowLevelServiceFault">
<part name="body" element="tns:myFaultElmt"/>
</message>
<portType name="SomeServicePortType">
<operation name="SomeServiceRQ">
<input message="tns:SomeServiceInput"/>
<output message="tns:SomeServiceOutput"/>
<fault name="LowLevelServiceError" message="tns:LowLevelServiceFault"/>
</operation>
</portType>
...
<bpel:catch faultName="tns:LowLevelServiceError" faultVariable="LowLevelServiceFaultVariable" faultElement="tns:myFaultElmt">
> 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
>
> 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.