Soap Fault Propagation Not Working Between Spring Beans (Doc ID 1369459.1)

Last updated on NOVEMBER 03, 2016

Applies to:

Oracle SOA Suite - Version 11.1.1.5.0 and later
Information in this document applies to any platform.
***Checked for relevance on 27-September-2013***

Symptoms

On : 11.1.1.5.0 version, Fabric plus <Patch 12900697>

You have a Spring bean, sbean1 calling another Spring bean, sbean2.
sbean2 throws an exception/fault defined in the wsdl interface for the sbean2, but the calling bean, sbean1, cannot catch the fault.
Defining the fault in the wsdl interface of the sbean1, does not make any difference and sbean1 still cannot catch the fault.

Thus when attempting to call a Spring bean from another Spring bean, the following error occurs.

The error propagated to the logs seems to be

<SOA-31701> <Failed to convert Java payload to XML. ...>



You might have tested the following:

  1. Catching the runtime exception triggered in sbean2. The runtime exception does get catched but it only contains a nested BusinessFaultException which does not have the details of the original SOAP Fault exception.
  2. Calling sbean2 via Mediator (sbean1 -> Mediator -> sbean2). This exhibits the same behavior as when sbean2 is called directly. Only if the service is called via the mediator endpoint directly - i.e. that the composite instance only has a Mediator calling sbean2 - then the SOAP Fault is properly propagated to Mediator.
  3. Setting local optimization to false on the sbean2.

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms