This discussion is archived
4 Replies Latest reply: Jul 18, 2012 5:39 PM by 779146 RSS

AIA Error Handling - Issue with binding Fault

779146 Newbie
Currently Being Moderated
Hi,

I am working with AIA 11g R1 PS2

Scenario: BPELProcess1 invokes BPELProcess2. In BPELProcess1, I have catch blocks for binding & remoteFault and catchAll.

I retired BPELProcess2 and tried testing BPELProcess1.

Query 1: Ideally, BPELProcess1 should get faulted throwing bindingFault because its not able to bind to partner link but in our environment, its throwing remoteFault.

In 10g, it throws binding fault when the partner link is not accessible. If there is somme issue inside partner link process, it throws remoteFault.
     
So in 11g when does the control goto binding fault catch block ?

Query 2: In 10g, in case of any SystemFault, control goes to catch block of that Fault and then to catchAll where AIAAsyncErrorHandlingBPELProcess gets invoked
In our 11g environments, if some SystemFault occurs Eg: remoteFault, control is going to catch block of remoteFault but then its not going to catchAll.

I tested in two environments, we are facing same issue.

Here is fautlHandlers code:
---------------------
<faultHandlers>
<catch faultName="bpelx:remoteFault" faultVariable="SysFaultVar">
<sequence name="SequenceRemoteFault">
<throw name="ReThrow_RemoteFault" faultName="bpelx:remoteFault"
faultVariable="SysFaultVar"/>

</sequence>
</catch>
<catch faultName="bpelx:bindingFault" faultVariable="SysFaultVar">
<sequence name="SequenceBindingFault">
<throw name="ReThrow_BindingFault" faultName="bpelx:bindingFault"
faultVariable="SysFaultVar"/>
</sequence>
</catch>
<catchAll>
<sequence name="SequenceErrorHandling">
<assign name="Assign_AIAAsyncErrorHandlingBPELProcessRequestMessage">
<copy>
<from expression="ora:processXSLT('xsl/EBM_to_Fault.xsl',bpws:getVariableData('inputVariable','payload'))"/>
<to variable="AIAAsyncErrorHandlingBPELProcess_initiate_InputVariable"
part="FaultMessage"/>
</copy>
<copy>
<from variable="RuntimeFaultMessage" part="code"/>
<to variable="AIAAsyncErrorHandlingBPELProcess_initiate_InputVariable"
part="FaultMessage"
query="/corecom:Fault/corecom:FaultNotification/corecom:FaultMessage/corecom:Code"/>
</copy>
<copy>
<from variable="RuntimeFaultMessage" part="summary"/>
<to variable="AIAAsyncErrorHandlingBPELProcess_initiate_InputVariable"
part="FaultMessage"
query="/corecom:Fault/corecom:FaultNotification/corecom:FaultMessage/corecom:Text"/>
</copy>
<copy>
<from expression="xpath20:current-dateTime()"/>
<to variable="AIAAsyncErrorHandlingBPELProcess_initiate_InputVariable"
part="FaultMessage"
query="/corecom:Fault/corecom:FaultNotification/corecom:ReportingDateTime"/>
</copy>
<copy>
<from expression="ora:getProcessId()"/>
<to variable="AIAAsyncErrorHandlingBPELProcess_initiate_InputVariable"
part="FaultMessage"
query="/corecom:Fault/corecom:FaultNotification/corecom:FaultingService/corecom:ID"/>
</copy>
<copy>
<from expression="'BPEL'"/>
<to variable="AIAAsyncErrorHandlingBPELProcess_initiate_InputVariable"
part="FaultMessage"
query="/corecom:Fault/corecom:FaultNotification/corecom:FaultingService/corecom:ImplementationCode"/>
</copy>
<copy>
<from expression="ora:getInstanceId()"/>
<to variable="AIAAsyncErrorHandlingBPELProcess_initiate_InputVariable"
part="FaultMessage"
query="/corecom:Fault/corecom:FaultNotification/corecom:FaultingService/corecom:InstanceID"/>
</copy>
<copy>
<from expression="ora:getECID()"/>
<to variable="AIAAsyncErrorHandlingBPELProcess_initiate_InputVariable"
part="FaultMessage"
query="/corecom:Fault/corecom:FaultNotification/corecom:FaultingService/corecom:ExecutionContextID"/>
</copy>
</assign>
<invoke name="InvokeAIAAsyncErrorHandlingBPELProcessStartInitiate"
partnerLink="AIAAsyncErrorHandlingBPELProcess"
portType="aiaeh:AIAAsyncErrorHandlingBPELProcess"
operation="initiate"
inputVariable="AIAAsyncErrorHandlingBPELProcess_initiate_InputVariable"/>
<throw name="Throw_Fault" faultName="client:Fault"
faultVariable="AIAAsyncErrorHandlingBPELProcess_initiate_InputVariable"/>
</sequence>
</catchAll>
</faultHandlers>
---------------------

Thanks,
Hema
  • 1. Re: AIA Error Handling - Issue with binding Fault
    617580 Explorer
    Currently Being Moderated
    Query 1:
    What is your test scenario? Have you just retired a service that is being consumed ? Services that are retired are still reachable. However, invocation of such a service will fail. Hence you would get a remote fault, instead of a binding fault.

    When the Service being consumed is either not available or undeployed, then it's WSDL cannot be loaded. In this scenario, you would get a binding fault.

    Query 2: This behaviour is as expected. The catch activities in the faulthandler work as a chained if-else stmnts.
  • 2. Re: AIA Error Handling - Issue with binding Fault
    779146 Newbie
    Currently Being Moderated
    Hi Vijay,

    Initially I had retired BPELProcess2 and tested BPELProcess1. It gave remoteFault.

    As per you suggestion, I undeployed BPELProcess2 and tested BPELProcess1, its still giving remoteFault instead of bindingFault

    Here is the fault:
    ---------------------------
    Invoke_BPELProcess2 (faulted)
    Nov 22, 2010 11:39:38 AM Faulted while invoking operation "process" on provider "BPELProcess2". Faulted while invoking operation "process" on provider "BPELProcess2".
    <payload>
    <messages>
    <input>
    <Invoke_BPELProcess2_process_InputVariable>
    <part name="payload">
    <process>
    <input>test</input>
    </process>
    </part>
    </Invoke_BPELProcess2_process_InputVariable>
    </input>
    <fault>
    <bpelFault>
    <faultType>0</faultType>
    <remoteFault>
    <part name="summary">
    <summary>oracle.fabric.common.FabricInvocationException: Unable to access the following endpoint(s): http://<hostname>:8001/soa-infra/services/default/TestBPELProcess2/bpelprocess2_client_ep</summary>
    </part>
    <part name="detail">
    <detail>Unable to access the following endpoint(s): http://<hostname>:8001/soa-infra/services/default/TestBPELProcess2/bpelprocess2_client_ep</detail>
    </part>
    <part name="code">
    <code>503</code>
    </part>
    </remoteFault>
    </bpelFault>
    </fault>
    <faultType>
    <message>0</message>
    </faultType>
    </messages>
    ---------------------------
  • 3. Re: AIA Error Handling - Issue with binding Fault
    user12841202 Newbie
    Currently Being Moderated
    Hi Hema,
    Were you able to solve this issue ? I am facing the same problem.
  • 4. Re: AIA Error Handling - Issue with binding Fault
    779146 Newbie
    Currently Being Moderated
    Hi,

    As per my understanding and test cases I executed, there are some changes that I observed in 11g

    1. Whatever is the case, callee is undeployed/retired/shutdown, caller is getting remoteFault
    2. When an exception is rethrown in a Catch branch and CatchAll branch is present on the same level, the exception is propagated to the higher level and not caught by the CatchAll branch. This seems like major change in 11g compared to 10g

    Thanks,
    Hema

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points