You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ode.apache.org by "Ford, Mark" <ma...@ll.mit.edu> on 2009/02/04 23:45:38 UTC

Fault handling with multiple detail elements and servicemix

I've run into an issue where a SOAP:Fault with multiple detail elements is causing the fault handling in my process to fail. This looks like a servicemix issue more than an ODE issue but I'm curious how other developers are dealing with it.

ODE correctly matches the fault to the intended catch element. This catch is defined with the appropriate fault WSDL message and name. The problem arises when trying to copy values from this fault variable since the underlying XML doesn't match the definition of the variable.

For example:

<multiple-details>
   <ns1:myFault>...</ns1:myFault>
   <ns2:exceptionName/>
   <ns2:hostname/>
</multiple-details>

Vs

<ns1:myFault>...</ns1:myFault>

If I tweak the service I'm invoking to reply with a single detail then everything works fine. I won't always be in control of the services I'm invoking so it's possible I could run into this issue in the future if I end up invoking other axis services.

Is there a way to have ODE automatically unwrap this fault for me so I don't have to deal with the multiple-details element? The fact that the correct catch block executed indicates that ODE is somehow accounting for this multiple-details element within the fault matching logic so perhaps there's a way to have it unwrap it and discard all but the first detail.

--
Mark Ford
MIT Lincoln Laboratory
244 Wood Street
Lexington MA 02420
(781) 981-1843


Re: Fault handling with multiple detail elements and servicemix

Posted by Rafal Rusin <ra...@gmail.com>.
I think you can try to mess up with servicemix message mapper
(org/apache/ode/jbi/msgmap/ServiceMixMapper.java). You can switch it
to your class in ode-jbi.properties.

2009/2/6 Ford, Mark <ma...@ll.mit.edu>:
> My workaround for this is to introduce a saxon proxy for all of the partner links that might result in a fault. I'd prefer some declarative way of handling this in ODE but it's very easy to implement and I assume very low cost since I only need to do transforms when a fault is thrown.
>
>
> On 2/4/09 5:45 PM, "Ford, Mark" <ma...@ll.mit.edu> wrote:
>
> I've run into an issue where a SOAP:Fault with multiple detail elements is causing the fault handling in my process to fail. This looks like a servicemix issue more than an ODE issue but I'm curious how other developers are dealing with it.
>
> ODE correctly matches the fault to the intended catch element. This catch is defined with the appropriate fault WSDL message and name. The problem arises when trying to copy values from this fault variable since the underlying XML doesn't match the definition of the variable.
>
> For example:
>
> <multiple-details>
>   <ns1:myFault>...</ns1:myFault>
>   <ns2:exceptionName/>
>   <ns2:hostname/>
> </multiple-details>
>
> Vs
>
> <ns1:myFault>...</ns1:myFault>
>
> If I tweak the service I'm invoking to reply with a single detail then everything works fine. I won't always be in control of the services I'm invoking so it's possible I could run into this issue in the future if I end up invoking other axis services.
>
> Is there a way to have ODE automatically unwrap this fault for me so I don't have to deal with the multiple-details element? The fact that the correct catch block executed indicates that ODE is somehow accounting for this multiple-details element within the fault matching logic so perhaps there's a way to have it unwrap it and discard all but the first detail.
>
> --
> Mark Ford
> MIT Lincoln Laboratory
> 244 Wood Street
> Lexington MA 02420
> (781) 981-1843
>



-- 
RafaƂ Rusin
www.mimuw.edu.pl/~rrusin

Re: Fault handling with multiple detail elements and servicemix

Posted by "Ford, Mark" <ma...@ll.mit.edu>.
My workaround for this is to introduce a saxon proxy for all of the partner links that might result in a fault. I'd prefer some declarative way of handling this in ODE but it's very easy to implement and I assume very low cost since I only need to do transforms when a fault is thrown.


On 2/4/09 5:45 PM, "Ford, Mark" <ma...@ll.mit.edu> wrote:

I've run into an issue where a SOAP:Fault with multiple detail elements is causing the fault handling in my process to fail. This looks like a servicemix issue more than an ODE issue but I'm curious how other developers are dealing with it.

ODE correctly matches the fault to the intended catch element. This catch is defined with the appropriate fault WSDL message and name. The problem arises when trying to copy values from this fault variable since the underlying XML doesn't match the definition of the variable.

For example:

<multiple-details>
   <ns1:myFault>...</ns1:myFault>
   <ns2:exceptionName/>
   <ns2:hostname/>
</multiple-details>

Vs

<ns1:myFault>...</ns1:myFault>

If I tweak the service I'm invoking to reply with a single detail then everything works fine. I won't always be in control of the services I'm invoking so it's possible I could run into this issue in the future if I end up invoking other axis services.

Is there a way to have ODE automatically unwrap this fault for me so I don't have to deal with the multiple-details element? The fact that the correct catch block executed indicates that ODE is somehow accounting for this multiple-details element within the fault matching logic so perhaps there's a way to have it unwrap it and discard all but the first detail.

--
Mark Ford
MIT Lincoln Laboratory
244 Wood Street
Lexington MA 02420
(781) 981-1843