Mediator Error Handling
Business fault:
Business faults are application-specific and are explicitly defined in the service WSDL file. You can handle business faults by defining the fault handlers in Oracle JDeveloper at design time.
System Fault:
System faults occur because of some problem in the underlying system such as a network not being available. Mediator provides fault policy-based error handling for system faults.
Fault policies are not supported for the following:
The Mediator service engine throws only one fault, namely
Fault policies for sequential routing rules are handled differently than for parallel routing rules
Business faults are application-specific and are explicitly defined in the service WSDL file. You can handle business faults by defining the fault handlers in Oracle JDeveloper at design time.
<faultName xmlns:ns1="http://xmlns.oracle.com/Customer"
name="ns1:InvalidCustomer"> <!-- Qname of Business/SOAP fault -->
<condition>
<test>
contains($fault.<PART_NAME>/custid, 1011)
</test>
<!-- xpath condition based on fault payload -->
<action ref="ora-retry"/>
</condition>
</faultName>
When a reference service returns a business fault, the fault can be handled in the Mediator service component. The returned fault can be forwarded to another component, redirected to an adapter service such as a file adapter, or an event can be raised. However, if both a fault policy and fault handler are defined for a business fault, then the fault policy takes precedence over the fault handler. In such a case, the fault handlers in the Mediator service component are ignored, if the fault policy is successfully executed.
System Fault:
System faults occur because of some problem in the underlying system such as a network not being available. Mediator provides fault policy-based error handling for system faults.
Fault policies are not supported for the following:
-
Callback execution failures(Asynchronous and one-way Mediator components cannot handle system faults thrown from other SOA Suite components, such as a BPEL business process.)
-
Fault Handler action failures
-
Resequencer failures
The Mediator service engine throws only one fault, namely
{http://schemas.oracle.com/mediator/faults}mediatorFault.
Every Mediator fault is wrapped into this fault. The errors or faults
generated by a Mediator can be captured by using the format shown in<faultName xmlns:medns="http://schemas.oracle.com/mediator/faults" name="medns:mediatorFault">
<!-- mediatorFault is a bucket for all the mediator faults -->
<condition>
<test>
contains($fault.mediatorErrorCode, "TYPE_FATAL_MESH")
</test>
<!-- Captures TYPE_FATAL_MESH errors -->
<action ref="ora-retry"/>
</condition>
</faultName>
Fault policies for sequential routing rules are handled differently than for parallel routing rules
| Sr No | Sequencial Routing Rule | Parallel Routing Rule |
|---|---|---|
| 1. | Transaction rolled back even if there is fault policy present | Transaction does not rolled back if there is fault policy present |
| 2. | Fault return to the caller if there is no fault ploicy | Human intervention action is deault action if there is no fault policy |
| 3. | Only Abort, Rethrow and Java actions are supported in fault policy and the specified actions are executed immediately in the caller's thread. | Only Human Intervention, Retry, abort and Java action supported in fault policy |
| 4. | Mediator messages are not persisted in sequential routing | Messages are persisted |
Thanks for sharning,It 's excellent post
ReplyDeleteOracle SOA Online Training