Fault Policy Resolution in Fault Framework
Hello Gurus,
A simple doubt regarding fault-policy file resolution:
There are two places where you can specify a policy file:
1) In composite.xml file. E.g.
<property name="oracle.composite.faultPolicyFile">oramds://apps/faultpolicyfiles/fault-policies.xml</property>
2) In fault-bindings.xml file. E.g.
<faultPolicyBindings ...>
<composite faultPolicy="FusionMidFaults"/>
</faultPolicyBindings>
When both are specified at same level, let's say at composite level as above, which one will take precedence over the other?
Thanks-
Ashish
Hi,
I don't know the answer but in 11g they should be in MDS. Second option was used in 10g. I guess it's still there just for backwards compatibility.
Regards,
Milan
Similar Messages
-
Hi,
Is there any way I can write a fault policy in such a way that for any kind of fault, go to human intervention ?
I am excepting something like * in place of fault names.
-SridharHi,
If you are on soa suite 10.1.3.3 or higher you can use the new fault framework. In the directory [oracle_home]/bpel/domains/[name]/config you have a fault-bindings.xml file. Change it contents to:
<?xml version="1.0" encoding="UTF-8"?>
<faultPolicyBindings version="2.0.1" xmlns="http://schemas.oracle.com/bpel/faultpolicy" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<process faultPolicy="MyPolicy"/>
<partnerLink faultPolicy="MyPolicy"/>
</faultPolicyBindings>Then create a file named [oracle_home]/bpel/domains/[name]/config/fault-policies/MyPolicy.xml and with contents:
<?xml version="1.0" encoding="UTF-8"?>
<faultPolicy version="2.0.1"
id="MyPolicy"
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.oracle.com/bpel/faultpolicy"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Conditions>
<faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension" name="bpelx:remoteFault">
<condition>
<action ref="ora-human-intervention"/>
</condition>
</faultName>
<faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension" name="bpelx:bindingFault">
<condition>
<action ref="ora-human-intervention"/>
</condition>
</faultName>
</Conditions>
<Actions>
<Action id="ora-retry">
<retry>
<retryCount>5</retryCount>
<retryInterval>4</retryInterval>
<exponentialBackoff />
<retryFailureAction ref="ora-human-intervention"/>
</retry>
</Action>
<!-- This is an action will cause a replay scope fault-->
<Action id="ora-replay-scope">
<replayScope/>
</Action>
<!-- This is an action will bubble up the fault-->
<Action id="ora-rethrow-fault">
<rethrowFault/>
</Action>
<!-- This is an action will mark the work item to be "pending recovery from console"-->
<Action id="ora-human-intervention">
<humanIntervention/>
</Action>
<!-- This action will cause the instance to terminate-->
<Action id="ora-terminate">
<abort/>
</Action>
</Actions>
</faultPolicy>Then restart your bpel oc4j container and all remote and binding faults will result in human intervention.
Kind Regards,
Andre -
Fault Policy - Handle Multiple Faults
Hi,
I have a requirement that i need to call a webservice Y from BPEL Process Z
Both are on different networks.
Y can return two types of fault
1. Fault Xyz (Business Fault)
2. Fault Pqr (Remote Fault)
I need to create a fault policy so that
when I get Xyz Fault it retries an an interval of 30 mins for 100 times.
when I get Pqr Fault it retries an an interval of 5 mins for 100 times.
I have implemented it, but it works bit differently that what i expect.
The fault which comes first, the retry interval is taken of that fault.
Below is my policy file:
<faultPolicies xmlns="http://schemas.oracle.com/bpel/faultpolicy">
<faultPolicy version="2.0.1" id="FPolicy123"
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.oracle.com/bpel/faultpolicy"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Conditions>
<faultName xmlns:ff="http://xmlns.oracle.com/testApplication/FP_1/B" name="ff:Xx11iFault">
<condition>
<action ref="ora-retry"/>
</condition>
</faultName>
<faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension" name="bpelx:remoteFault">
<condition>
<action ref="ora-retry_rf"/>
</condition>
</faultName>
</Conditions>
<Actions>
<Action id="ora-retry">
<retry>
<retryCount>10</retryCount>
<retryInterval>30</retryInterval>
<retryFailureAction ref="ora-terminate"/>
</retry>
</Action>
<Action id="ora-retry_rf">
<retry>
<retryCount>3</retryCount>
<retryInterval>15</retryInterval>
<retryFailureAction ref="ora-terminate"/>
</retry>
</Action>
<Action id="ora-terminate">
<abort/>
</Action>
</Actions>
</faultPolicy>
</faultPolicies>
Please suggest a solution on this.
Thanks,
RoshWhat is the significance of retrying on business fault / binding fault ?
According to the Oracle Documentation, there is no point in retrying.
http://docs.oracle.com/cd/E12839_01/integration.1111/e10224/bp_faults.htm
Refer *12.3.2.1 bindingFault* section, please
Thanks,
Vijay -
What is the "catchAll for all faults" equivalent in fault-policy.xml
Hi
This is regarding the catchAll equivalent tag in fault-policy.xml file
fault-policy.xml has two sections - Conditions & Actions
In Conditions, you'll define several <faultName name="XXX"> and corresponding <condition>, <test> & <action ref="">.
But what I want is, how do you define a condition for all Fault types (something like a catchAll activity)?
Lets say i need a single condition for all faults, so i want to say
<conditions>
<faultName name=*"ALL_FAULT_TYPES"*>
<condition>
<!--<test> -- i dont give any test condition here, so that it is applicable for all conditions for this fault type -->
<action ref="ora-human-intervention">
</condition>
</faultName>
</conditions>
I've searched documentation, blogs but could not find any.
Only thing i could find is, if we dont give any <test> tag, that means it is like a catchAll for that particular faultName. I need a similar one, but for all faults.
Appreciate your response.
Regards
RaviKiran.
Edited by: kiransaravi on Oct 16, 2012 12:39 AM
Edited by: kiransaravi on Oct 16, 2012 12:40 AMHi Ronald Van,
what do you mean by this statement .
Mind: the fault-policy framework catches faults in invocations of (external) services from BPEL, Mediator, etc. Internal BPEL faults such as errored assign activities are >not caught.Is it like faults generated while invoking only will go to faultpolicies ?
I want to generate a email in case of faults to notify the customer. faultpolicies is working good for remote and binding fault and i am generating mail using java. but in case of selection failure it is not referring to fault policies. So Is generating a email from catchall block is the only solution for this or is there any other way.The problem with catch all block is that the instance state will be completed and my monitoring is affected. I want to generate a email and the process should be in running state . Is there any way?
Please suggest .
Thanks in Advance
regards,
Raju -
"Message Rejection Handler" for the file/ftp adapter using fault policy
Hi guys,
We are trying to implement "Message Rejection Handler" for the file/ftp adapter using following fault policy configuration.
Fault Policy:
`````````````
<?xml version='1.0' encoding='UTF-8'?>
<faultPolicies xmlns="http://schemas.oracle.com/bpel/faultpolicy">
<faultPolicy version="2.0.1" id="ProcessNameGenericPolicy"
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.oracle.com/bpel/faultpolicy"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Conditions>
<faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
name="bpelx:remoteFault">
<condition>
<action ref="ora-retry"/>
</condition>
</faultName>
<faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
name="bpelx:bindingFault">
<condition>
<action ref="ora-rethrow-fault"/>
</condition>
</faultName>
</Conditions>
<Actions>
<Action id="ora-retry">
<retry>
<retryCount>3</retryCount>
<retryInterval>1</retryInterval>
<retryFailureAction ref="ora-rethrow-fault"/>
</retry>
</Action>
<Action id="ora-rethrow-fault">
<rethrowFault/>
</Action>
<Action id="ora-human-intervention">
<humanIntervention/>
</Action>
<Action id="ora-terminate">
<abort/>
</Action>
</Actions>
</faultPolicy>
<faultPolicy version="2.0.1" id="ProcessNameHumanInterventionPolicy"
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.oracle.com/bpel/faultpolicy"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Conditions>
<faultName xmlns:medns="http://schemas.oracle.com/mediator/faults"
name="medns:mediatorFault">
<condition>
<test>contains($fault.mediatorErrorCode, "TYPE_TRANSIENT")</test>
<action ref="ora-retry-with-intervention"/>
</condition>
</faultName>
<faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
name="bpelx:remoteFault">
<condition>
<action ref="ora-retry-with-intervention"/>
</condition>
</faultName>
<faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
name="bpelx:bindingFault">
<condition>
<action ref="ora-rethrow-fault"/>
<!--<action ref="ora-retry-with-intervention"/>-->
</condition>
</faultName>
</Conditions>
<Actions>
<Action id="ora-retry-with-intervention">
<retry>
<retryCount>3</retryCount>
<retryInterval>1</retryInterval>
<retryFailureAction ref="ora-human-intervention"/>
</retry>
</Action>
<Action id="ora-retry">
<retry>
<retryCount>3</retryCount>
<retryInterval>1</retryInterval>
<retryFailureAction ref="ora-rethrow-fault"/>
</retry>
</Action>
<Action id="ora-rethrow-fault">
<rethrowFault/>
</Action>
<Action id="ora-human-intervention">
<humanIntervention/>
</Action>
<Action id="ora-terminate">
<abort/>
</Action>
</Actions>
</faultPolicy>
<faultPolicy version="2.0.1" id="RejectedMessages">
<Conditions> <!-- All the fault conditions are defined here -->
<faultName xmlns:rjm="http://schemas.oracle.com/sca/rejectedmessages" name="rjm:PartnerLinkName">
<!-- local part of fault name should be the service name-->
<condition>
<action ref="writeToFile"/> <!-- action to be taken, refer to Actions section for the details of the action -->
</condition>
</faultName>
</Conditions>
<Actions> <!-- All the actions are defined here -->
<Action id="writeToFile">
<fileAction>
<location>Server/Loc/path</location>
<fileName>Rejected_AJBFile_%ID%_%TIMESTAMP%.xml</fileName>
</fileAction>
</Action>
</Actions>
</faultPolicy>
</faultPolicies>
Fault Binding:
``````````````
<?xml version='1.0' encoding='UTF-8'?>
<faultPolicyBindings version="2.0.1"
xmlns="http://schemas.oracle.com/bpel/faultpolicy"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<composite faultPolicy="ProcessNameGenericPolicy"/>
<service faultPolicy="RejectedMessages">
<name>PartnerLinkName</name>
</service>
<reference faultPolicy="RejectedMessages">
<name>PartnerLinkName</name>
</reference>
</faultPolicyBindings>
We have SyncFileRead partner link.
The expectation is: when the message read by SyncFileRead partner link is rejected,
that rejected message should come to particular directory in the server.
Could you please help us fixing this.
TIA.HI..
Have a look at this blog :
3) Error: HTTP_RESP_STATUS_CODE_NOT_OK 401 Unauthorized
Description: The request requires user authentication
Possible Tips:
u2022 Check XIAPPLUSER is having this Role -SAP_XI_APPL_SERV_USER
u2022 If the error is in XI Adapter, then your port entry should J2EE port 5<System no>
u2022 If the error is in Adapter Engine
u2013then have a look into SAP note- 821026, Delete the Adapter Engine cache in transaction SXI_CACHE Goto --> Cache.
u2022 May be wrong password for user XIISUSER
u2022 May be wrong password for user XIAFUSER
u2013 for this Check the Exchange Profile and transaction SU01, try to reset the password -Restart the J2EE Engine to activate changes in the Exchange Profile After doing this, you can restart the message
Http* Errors in XI
Thanks,
Pooja -
Fault policy doesn't fire when asynchronous calls to BPEL in soa11g
Hi,
I have created mainporcess and subprocess both are asynchronous process . exceptions thrown by subprocess are caught in mainprocess using call back operation and fault policy defined in fault-polacy/binding doesn't fire .
if the subprocess is synchronous exceptions thrown by subprocess are caught in mainprocess and creating human-intervention job for Retry action as defined in fault-polacy/binding.
Generally how we can handle custom Faults in A asynchronous calls to composites/BPEL processes?
Thanks
RaviHi ,Milan
Thanks for your response . in subprocess callback port having two operations processResponse,callbackexception
<wsdl:portType name="BPELProcessAsynchDetailsCallback">
<wsdl:operation name="processResponse">
<wsdl:input message="client:BPELProcessAsynchDetailsResponseMessage"/>
</wsdl:operation>
<wsdl:operation name="callbackexception">
<wsdl:input message="client:FaultMessage"/>
</wsdl:operation>
</wsdl:portType>>
Any exeptions thrown by suborocess is calling callbackexception operation and main process having pick activity for receiving both processResponse and callbackexception operations.
subprocessdetails:
<faultHandlers>
<catch faultName="bpelx:remoteFault" faultVariable="FaultVar">
<sequence>
<assign name="Assign2">
<copy>
<from expression="'code'"/>
<to variable="Invoke1_callbackexception_InputVariable"
part="payload"
query="/client:FaultElement/client:code"/>
</copy>
<copy>
<from expression="'summary'"/>
<to variable="Invoke1_callbackexception_InputVariable"
part="payload"
query="/client:FaultElement/client:summary"/>
</copy>
<copy>
<from expression="'details'"/>
<to variable="Invoke1_callbackexception_InputVariable"
part="payload"
query="/client:FaultElement/client:detail"/>
</copy>
</assign>
<invoke name="Invoke1"
inputVariable="Invoke1_callbackexception_InputVariable"
partnerLink="bpelprocessasynchdetails_client"
portType="client:BPELProcessAsynchDetailsCallback"
operation="callbackexception"
bpelx:invokeAsDetail="no"/>
</sequence>
</catch>
</faultHandlers>
<!--
ORCHESTRATION LOGIC
Set of activities coordinating the flow of messages across the
services integrated within this business process
-->
<sequence name="main">
<!-- Receive input from requestor. (Note: This maps to operation defined in BPELProcessAsynchDetails.wsdl) -->
<receive name="receiveInput" partnerLink="bpelprocessasynchdetails_client" portType="client:BPELProcessAsynchDetails" operation="process" variable="inputVariable" createInstance="yes"/>
<!--
Asynchronous callback to the requester. (Note: the callback location and correlation id is transparently handled using WS-addressing.)
-->
<switch name="Switch1">
<case condition="bpws:getVariableData('inputVariable','payload','/client:process/client:input')='test'">
<bpelx:annotation>
<bpelx:pattern>test</bpelx:pattern>
<bpelx:general>
<bpelx:property name="userLabel">test</bpelx:property>
</bpelx:general>
</bpelx:annotation>
<sequence>
<empty name="Empty1"/>
<throw name="Throw1" faultName="bpelx:remoteFault"
faultVariable="FaultVar"/>
</sequence>
</case>
<otherwise>
<assign name="Assign1">
<copy>
<from variable="inputVariable" part="payload"
query="/client:process/client:input"/>
<to variable="outputVariable" part="payload"
query="/client:processResponse/client:result"/>
</copy>
</assign>
</otherwise>
</switch>
<invoke name="Invoke2" bpelx:invokeAsDetail="no"
inputVariable="outputVariable"
partnerLink="bpelprocessasynchdetails_client"
portType="client:BPELProcessAsynchDetailsCallback"
operation="processResponse"/>
</sequence>
mainprocesdetails:
<faultHandlers>
<catch faultName="bpelx:remoteFault" faultVariable="Variable1"/>
</faultHandlers>
<!--
ORCHESTRATION LOGIC
Set of activities coordinating the flow of messages across the
services integrated within this business process
-->
<sequence name="main">
<!-- Receive input from requestor. (Note: This maps to operation defined in BPELProcess1ASynch.wsdl) -->
<receive name="receiveInput" partnerLink="bpelprocess1asynch_client" portType="client:BPELProcess1ASynch" operation="process" variable="inputVariable" createInstance="yes"/>
<!--
Asynchronous callback to the requester. (Note: the callback location and correlation id is transparently handled using WS-addressing.)
-->
<assign name="Assign1">
<copy>
<from variable="inputVariable" part="payload"
query="/client:process/client:input"/>
<to variable="Invoke1_process_InputVariable" part="payload"
query="/ns1:process/ns1:input"/>
</copy>
</assign>
<invoke name="Invoke1" bpelx:invokeAsDetail="no"
inputVariable="Invoke1_process_InputVariable"
partnerLink="BPELProcessAsynchDetails.bpelprocessasynchdetails_client"
portType="ns1:BPELProcessAsynchDetails" operation="process"/>
<pick name="Pick1">
<onMessage variable="OnMessage_processResponse_InputVariable"
partnerLink="BPELProcessAsynchDetails.bpelprocessasynchdetails_client"
portType="ns1:BPELProcessAsynchDetailsCallback"
operation="processResponse">
<sequence name="Sequence2">
<assign name="Assign3">
<copy>
<from variable="OnMessage_processResponse_InputVariable"
part="payload"
query="/ns1:processResponse/ns1:result"/>
<to variable="outputVariable" part="payload"
query="/client:processResponse/client:result"/>
</copy>
</assign>
</sequence>
</onMessage>
<onMessage variable="OnMessage_callbackexception_InputVariable"
partnerLink="BPELProcessAsynchDetails.bpelprocessasynchdetails_client"
portType="ns1:BPELProcessAsynchDetailsCallback"
operation="callbackexception">
<sequence name="Sequence1">
<throw name="Throw1" faultName="bpelx:remoteFault"
faultVariable="Variable1"/>
</sequence>
</onMessage>
</pick>
<invoke name="callbackClient" partnerLink="bpelprocess1asynch_client" portType="client:BPELProcess1ASynchCallback" operation="processResponse" inputVariable="outputVariable"/>
</sequence> -
EDN not available throws runtimeFault - Fault Policy Framework unable to catch it
Hi Team,
I have been working on some error handling scenarios for EDN .
From my observation if BPEL is used to publish the event, BPEL Fault policy cannot catch EDN errors (e.g., EDN unavailable) but BPEL catch activity can catch it.
Steps performed :
1. Create a BPEL to publish the event to EDN.
2.Create fault policy to catch BPEL runtime fault .
3.Go to weblogic console to change EDNdatasource target to get "EDN datasource not available error".
4.Test your BPEL.
My requirement is to retry such faults and invoke human intervention after retry failure using BPEL.
Please let me know how to achieve thisFollow the oracle documentation
- http://docs.oracle.com/cd/E28271_01/dev.1111/e10224/bp_faults.htm#BABIGGIB
*The fault management framework catches all faults (business and runtime) for an invoke activity.*
Hope that helps.
P.S. The fault management framework main purpose is to define a enterprise wide standard policies to handle the faults that will be applied to various/all composite. Hence your specific fault that is specific to a composite should not creep into to fault management framework as this is not the enterprise standard i.e., every composite may have to handle the invalid variable, based on where it occurred and for what variable it occurred. -
Hi,
I'm trying to use the new fault actions in Oracle SOA Suite 12c (12.1.3.0) invokeWS and enqueue.
I've done the following:
fault-policies.xml
<faultName name="custom:MyFault" xmlns:custom="http://xmlns.oracle.com/Application1/Dummy/WebServiceB"
path="SOA\WSDLs\dummybpelprocess_client_ep.wsdl">
<condition>
<action ref="default-enqueue"/>
</condition>
</faultName>
<Action id="default-ws">
<invokeWS uri="http://host:7003/soa-infra/services/default/WebServiceHandler/webservicehandlerbpel_client_ep?WSDL|webservicehandlerbpel_client_ep|WebServiceHandlerBPEL_pt"/>
<!-- format - <Absolute wsdl path>|service name|port name -->
</Action>
<Action id="default-enqueue">
<!-- enqueue uri="eis/aq/aqjmsuserDataSource"/ -->
<enqueue uri="jdbc:oracle:thin:@host:1521:orcl#user/userpassword#USERQUEUE" />
<!-- QueueURI format - jdbc:oracle:thin:@<host>:<port>:<sid>#<un>/<pw>#queue -->
</Action>
Webservice Handler (which is the webservice to be invoked by the faultpolicy) is constructed 1-way pattern, 1 operation, 1 port and using the following schema:
<?xml version="1.0"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://xmlns.oracle.com/pcbpel/errorHandling"
xmlns:tns="http://xmlns.oracle.com/pcbpel/errorHandling"
elementFormDefault="qualified">
<element name="RejectedMessage" type="tns:RejectedMessageType"/>
<complexType name="RejectedMessageType">
<sequence>
<!-- base64 encoded strings" -->
<element name="MessageHeader" type="string"/>
<element name="MessagePayload" type="string"/>
<element name="RejectionReason" type="string"/>
</sequence>
<attribute name="RejectionId" type="string"/>
</complexType>
</schema>
The scenario is the following:
Webservice A invokes WebService B
Webservice B has defined a BusinessFault
Webservice A has defined faultbindings using the faulpolicies from the previous snippet, for the reference of WebserviceB
The BusinessFault is thrown by WebServiceB
The fault policy is not able to neither enque or call the webservce to handle the businessexception
A NullPointerException is shown in the logs
The error is also present if enqueue os invokeWS are used in retryFailureAction of a retry action
The error is only present for enqueue or invokeWS actions (I didn't try fileAction)
Traditional actions (such as retry, humanintervention, temrinate) are working properly for businessfaults
The error in logs is the following:
Message
resolveAndrecover: error in fault resolution:java.lang.NullPointerException
Supplemental Detail
at com.collaxa.cube.engine.fp.BPELRecoverFault.recoverFault(BPELRecoverFault.java:102)
at oracle.fabric.CubeServiceEngine.recoverFault(CubeServiceEngine.java:2195)
at oracle.integration.platform.faultpolicy.RecoverFault.recoverAndChain(RecoverFault.java:497)
at oracle.integration.platform.faultpolicy.RecoverFault.resolveAndRecover(RecoverFault.java:337)
at oracle.integration.platform.faultpolicy.FaultRecoveryManagerImpl.resolveAndRecover(FaultRecoveryManagerImpl.java:372)
at oracle.soa.tracking.fabric.service.se.ServiceEngineFaultRecoveryServiceImpl.recoverFault(ServiceEngineFaultRecoveryServiceImpl.java:116)
at oracle.soa.tracking.fabric.service.se.CubeServiceEngineAuditServiceImpl.recoverFault(CubeServiceEngineAuditServiceImpl.java:502)
at com.collaxa.cube.engine.ext.common.FaultPolicyHandler.resolveAndRecover(FaultPolicyHandler.java:115)
at com.collaxa.cube.engine.ext.common.InvokeHandler.handleException(InvokeHandler.java:715)
at com.collaxa.cube.engine.ext.common.InvokeHandler.__callback(InvokeHandler.java:784)
at com.collaxa.cube.engine.ext.common.InvokeHandler.handleNormalInvoke(InvokeHandler.java:657)
at com.collaxa.cube.engine.ext.common.InvokeHandler.handle(InvokeHandler.java:143)
at com.collaxa.cube.engine.ext.common.InvokeHandler.expire(InvokeHandler.java:1371)
at com.collaxa.cube.engine.ext.bpel.common.wmp.BPELInvokeWMP.expire(BPELInvokeWMP.java:62)
at com.collaxa.cube.engine.CubeEngine.expireActivity(CubeEngine.java:3358)
at com.collaxa.cube.engine.CubeEngine._expireActivity(CubeEngine.java:1621)
at com.collaxa.cube.engine.CubeEngine.expireActivity(CubeEngine.java:1557)
at com.collaxa.cube.engine.CubeEngine.expireActivity(CubeEngine.java:1478)
at com.collaxa.cube.ejb.impl.CubeActivityManagerBean.expireActivity(CubeActivityManagerBean.java:115)
at com.collaxa.cube.ejb.impl.CubeActivityManagerBean.expireActivity(CubeActivityManagerBean.java:72)
at com.collaxa.cube.ejb.impl.bpel.BPELActivityManagerBean_8dvvts_ICubeActivityManagerLocalBeanImpl.__WL_invoke(Unknown Source)
at weblogic.ejb.container.internal.SessionLocalMethodInvoker.invoke(SessionLocalMethodInvoker.java:33)
at com.collaxa.cube.ejb.impl.bpel.BPELActivityManagerBean_8dvvts_ICubeActivityManagerLocalBeanImpl.expireActivity(Unknown Source)
at com.collaxa.cube.engine.dispatch.message.instance.ExpirationMessageHandler.handle(ExpirationMessageHandler.java:58)
at com.collaxa.cube.engine.dispatch.DispatchHelper.handleMessage(DispatchHelper.java:153)
at com.collaxa.cube.engine.dispatch.BaseDispatchTask.process(BaseDispatchTask.java:132)
at com.collaxa.cube.engine.dispatch.BaseDispatchTask.run(BaseDispatchTask.java:90)
at com.collaxa.cube.engine.dispatch.WMExecutor$W.run(WMExecutor.java:239)
at weblogic.work.j2ee.J2EEWorkManager$WorkWithListener.run(J2EEWorkManager.java:184)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:311)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:263)
I already made sure I had all the artifacts for the AQ queue:
-database
-table
-queue
-permissions
Do you have the same problem?
Are you able to use this new actions?
Please advise
Thanks in advance.
P.S: Related documentation: http://docs.oracle.com/middleware/1213/soasuite/develop-soa/bpel-fault-handling.htm#CHDCIBDFCreating a SR to Oracle....
-
Fault Policy Management Framework in 10.1.3.3
Hi,
According to the Oracle Documentation, 10133technote. It says
1) "A fault policy can be associated at the following levels:
Partner link,Port type, Process & Domain."
- Here can you through a light on "Process" n what "Process" means
- Is it Refering to a BPEL Process or a "Process" in <faultPolicyBindings>
- Can we have multiple "Process" for a <faultPolicyBindings>
2) "The framework looks for fault policy bindings in the following files (in order of priority):
- In the bpel.xml file at the process level
- In the domain level file "
- what entry should go in bpel.xml (are we really have to edit bpel.xml, created by JDEV)
- what does it mean Process Level & Domain Level
- where we can have a thin line between "Process Level" & "Domain Level"
and How they differ-in while at Implemenation level
Lastly what are the files that we need to modify/edit to make faultPolicy work.
Thanx in advHello,
See comments below:
Hi user568921,
Thanx for an immediate reply.
Apologize for the long list of questions.
1) Already we can have expentional Handling in BPEL,
then why this
Fault Management Framework be used on top of this
[ irrespective of your BPEL Process has Expectional
Handling or not (pl. correct me if im wrong)]
more over i have to restart the server for each
modification,
this is not that recommended when it goes to
Production.
1a) if i have both BPEL Expectional Handling and
Fault Management Framework applied to my Process
which one preceedes.
Fault Management Framework is used for generic fault
handling on a deployed server.
Since the change affects all deployed processes, we do
not recommend changing policy or bindings in production.
We are providing a client api in 10.1.3.4.0 to reload fault
policy and binding files.
Fault Management Framework precedes BPEL "catch". You can
attempt retry actions, if this fails, invoke java code to
email an administrator and mark the activity for human
recovery or do a rethrowFault to pass to BPEL exception
handling.
2) This is what my bpel.xml files contains
<?xml version = '1.0' encoding = 'UTF-8'?>
<BPELSuitcase>
<BPELProcess id="FaultPolicyManagement"
src="FaultPolicyManagement.bpel">
<partnerLinkBindings>
<partnerLinkBinding name="client">
<property
name="wsdlLocation">FaultPolicyManagement.wsdl</prope
ty>
</partnerLinkBinding>
<partnerLinkBinding name="sayHelloService">
<property
name="wsdlLocation">sayHelloService3.wsdl</property>
</partnerLinkBinding>
<partnerLinkBinding
name="FaultPolicyManagementSync">
<property
name="wsdlLocation">url?wsdl</property>
</partnerLinkBinding>
artnerLinkBindings>
</BPELProcess>
<faultPolicyBindings>
process faultPolicy="defaultPolicy"/>
<process faultPolicy="anvvPolicy"/>
<partnerLink
k faultPolicy="DefaultPolicy"></partnerLink>
<partnerLink faultPolicy="anvvPolicy">
<name>FaultPolicyManagementSync</name>
<portType
tType
xmlns:db="http://FaultPolicyManagementSync">db:FaultPo
licyManagementSync_plt</portType>
</partnerLink>
</faultPolicyBindings>
/BPELSuitcase>
when i edit the bpel.xml with
<faultPolicyBindings></faultPolicyBindings> and
deploy it
all the <faultPolicyBindings></faultPolicyBindings>
is resetting back to original bpel.xml
( The Content between
<faultPolicyBindings></faultPolicyBindings> is taken
from fault-bindings.xml file )
why it is so ?
and my fault-bindings.xml is
<?xml version="1.0" encoding="UTF-8"?>
<faultPolicyBindings version="2.0.1"
xmlns="http://schemas.oracle.com/bpel/faultpolicy"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<process faultPolicy="DefaultPolicy"/>
<process faultPolicy="anvvPolicy"/>
<partnerLink
k faultPolicy="DefaultPolicy"></partnerLink>
<partnerLink faultPolicy="DefaultPolicy2">
<name>FaultPolicyManagementSync</name>
<portType
tType
xmlns:db="http://FaultPolicyManagementSync">db:FaultPo
licyManagementSync_plt</portType>
</partnerLink>
</faultPolicyBindings>
and DefaultPolicy.xml & DefaultPolicy2.xml is same as
what is there in the server.
Is the file contents correct in Implementation.
Only one process tag is allowed.
2a) if Fault Management Framework applied and NO
<faultPolicyBindings></faultPolicyBindings> is added
to bpel.xml
and if it is left as it is (i.e., default bpel.xml
generated by JDEV) then what is the policy it is
applied.
Once the system detects an invoke has faulted, it tries
to check if there is a fault policy attached to this faulted
partner link (or port type, or the process), if no policy
binding is detected, it will flow bubble up the fault. By
default there is no policy applied.
3) Can you please let me know
- how many ( fault-binding.xml &) fault-policy's can
n i have per domain.
- how many ( fault-binding.xml &) fault-policy's can
n i have per process.
many to one or many to many relationship.
We can have only one policy
[config/DefaultPolicy.xml] at a Domain Level
To create a Fault Policy File for Automated Fault Recovery
Create directories named fault-policies under the config directory for
every domain in which you want to use the fault management framework.
SOA_ORACLE_HOME\bpel\domains\domain_name\config\fault-policies
You can have n fault policies per domain.
To provide a fault policy applicable to an entire domain in the
fault-bindings.xml file in the SOA_ORACLE_
HOME\bpel\domains\domain_name\config directory.
You can have 1 fault-bindings.xml per domain.
3a) how can i make sure/ensure that Fault Management
Framework is applied at each process level and/or at
Domain level.Provide a fault-binding: with
<process faultPolicy="YourPolicy"/>
>
4) Is there any Advantages, limitations / contrains
that we have if we are opting Fault Management
Framework (have to consider, before going to
production).
The framework is applicable for faults in "invoke" activity
only.
5) can i have any samples / URL for samples for Fault
Management Framework in OTN or else where.
so that i can work around.
>
>
Other than 10133technotes.pdf do you have any other
documentation which has an eloberative description
about
Fault Management Framework and its samples
please guide me accordingly.Let me know if you need more information. -
Hello,
i configured the fault policy with the folllowing values:
<Action id="ora-retry">
<retry>
<retryCount>60</retryCount>
<retryInterval>1</retryInterval>
</retry>
</Action>
But when i look at the audit-tab in the BPEL-Console, i see only 50 retries, until the action fails.
Has retryCount a maximum of 50 retries?
Best regards and thanks for your help
FriedrichHi again.
Has anyone been able to use any kind of Xpath function inside a policy file? If so, could you please share the code fragment including the namespace declarations and the conditions?
Does anyone know if Fault Management Framework at least support the use of Xpath functions?
Thanks.
Denis -
Fault Policy framework doesnt work - SOA 11g
Hi All,
I am trying to excute a composite in which i had a business fault and i had the swicth condition based on reply.
If reply is other than success or failure i will throw a fault Invalid data and the fault is catched by teh fault handler. but the fault policy doesn't work.
these is my fault ploicy
<?xml version="1.0" encoding="UTF-8"?>
<faultPolicies xmlns="http://schemas.oracle.com/bpel/faultpolicy"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<faultPolicy version="0.0.1" id="FusionMidFaults"
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.oracle.com/bpel/faultpolicy"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Conditions>
<faultName xmlns:medns="http://schemas.oracle.com/mediator/faults"
name="medns:mediatorFault">
<condition>
<action ref="MediatorJavaAction"/>
</condition>
</faultName>
<faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
name="bpelx:remoteFault">
<condition>
<action ref="java-fault-handler"/>
</condition>
</faultName>
<faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
name="bpelx:bindingFault">
<condition>
<action ref="ora-retry"/>
</condition>
</faultName>
<faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
name="bpelx:runtimeFault">
<condition>
<action ref="ora-retry"/>
</condition>
</faultName>
<faultName xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
name="bpws:selectionFailure">
<condition>
<action ref="ora-retry"/>
</condition>
</faultName>
<faultName xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
name="bpws:InvalidData">
<condition>
<action ref="java-fault-handler"/>
</condition>
</faultName>
<!-- <fault name="test" type="bpws:InvalidData" xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/" >
<condition>
<action ref="ora-retry"/>
</condition>
</fault> -->
</Conditions>
<Actions>
<!-- Generics -->
Note: The preseeded recovery action tag names (ora-retry, ora-human-intervention, ora-terminate, and so on) are only samples.
You can substitute these names with ones appropriate to your environment.
Notes: ¦ Fault policy file names are not restricted to one specific name.However, they must conform to the fault-policy.xsd schema file. ¦ Example
12–5 provides an example of catching faults based on fault names. You can also catch faults based on message types, or on both:
<Action id="ora-retry">
<retry>
<retryCount>3</retryCount>
<retryInterval>2</retryInterval>
<exponentialBackoff/>
<retryFailureAction ref="java-fault-handler"/>
<retrySuccessAction ref="ora-terminate"/>
</retry>
</Action>
<Action id="ora-rethrow-fault">
<rethrowFault/>
</Action>
<Action id="java-fault-handler">
<javaAction className="in.ibm.com.FAPErrorHandler"
defaultAction="ora-human-intervention" propertySet="properties">
<returnValue value="OK" ref="ora-human-intervention"/>
</javaAction>
</Action>
<Action id="ora-human-intervention">
<humanIntervention/>
</Action>
<Action id="ora-terminate">
<abort/>
</Action>
<Action id="default-replay-scope">
<replayScope/>
</Action>
</Actions>
</faultPolicy>
</faultPolicies>
And my fault bindings.xml file
<?xml version="1.0" encoding="UTF-8" ?>
<faultPolicyBindings version="0.0.1"
xmlns="http://schemas.oracle.com/bpel/faultpolicy"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<composite faultPolicy="FusionMidFaults"/>
<!--<composite faultPolicy="ServiceExceptionFaults"/>-->
<!--<composite faultPolicy="GenericSystemFaults"/>-->
</faultPolicyBindings>
In 10g we used a default fauly policy and we used to register it used to work fine. Here there is soem thing wrong with the java class.?????
my compsoite execution gives the following error
<bpelFault>
<faultType>
<message>0</message>
</faultType>
<InvalidData>
<part name="summary">
<summary xsi:type="def:string">Invalid status from HOL</summary>
</part>
<part name="detail">
<detail xsi:type="def:string">HOL Sends Invalid Status</detail>
</part>
<part name="code">
<code xsi:type="def:string">Error</code>
</part>
</InvalidData>
</bpelFault>
as per my fault value but not calling my java class... how do i know my fault policy is working or not ?????This is teh errored fault
Error Message: {http://schemas.xmlsoap.org/ws/2003/03/business-process/}InvalidData
Fault ID default/FAPCustomerInitiatedBarUnbar!1.0*374a445a-1396-438e-a7c4-76bf5c6404a8/FAPCustomerInitiatedBarUnbarProcess/210005-BpThw0-BpSeq30.11-3
Fault Time Oct 25, 2010 4:26:49 PM
Non Recoverable System Fault :
<bpelFault><faultType> <message>0</message></faultType><InvalidData xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/"><part name="summary"><summary xmlns:def="http://www.w3.org/2001/XMLSchema" xsi:type="def:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Invalid status from HOL</summary></part><part name="detail"><detail xmlns:def="http://www.w3.org/2001/XMLSchema" xsi:type="def:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">HOL Sends Invalid Status</detail></part><part name="code"><code xmlns:def="http://www.w3.org/2001/XMLSchema" xsi:type="def:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Error</code></part></InvalidData></bpelFault>
I verified the serverlog and diagonostic log file..
the java class is not called what is wrong with my java class call in fault policy.
Venugopal Raja
Edited by: user12893766 on Oct 25, 2010 3:57 AM
Edited by: user12893766 on Oct 25, 2010 5:35 AMMany Thanks.
I had misinteprted the documentation I had read which stipulated the pattern of the test should be $fault.<PartName>/<LocationPath>.
What I didnt realise was the $fault.<PartName> e.g. $fault.code returned the root node which in this case is <code>. Therefore no further location path is required as this is a simple type / string field rather than a complex type -
How to retry a external webservice without fault policy framework?
hi ,
-->i want retry a external web service if invocation fails first time, without using fault policy frame work how to achieve this?
-->I have a Advanced Queue in OSB, i am Dequeueing that , i have a proxy to deque the AQ topic, with any reason dequeue fails it should retry for number of times and then handled in Exception Hnadler in OSB.
How to retry the AQ to Dequeue?
Thanks,
ShekarWe are experiencing exactly the same problem!
Only in our case its Wssp1.2-2007-Wss1.0-X509-Basic256.xml
We encrypt and sign the request, the server processes it correctly.
But afterwards we send a "naked" request(not encrypted nor signed) and still the WLS processes it.
Is there a setting of some sort that enables strict enforcement of the policy? -
Test Conditions in BPEL Fault Policy
Per the ORacle 10.1.3.3 SOA Suite techical document, under the Fault Policy Framework section you can use an XPath expression in the <test> section of a fault policy. The example provided is +<test>$fault.code/code="WSDLReadingError"</test>+
Instead of using an equals sign, I am trying to figure out the syntax to use a "contains" or "starts-with" expression. I want to filter out a particular remoteFault using the "summary".
I have tried:
+<Conditions>+
+ <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension" name="bpelx:remoteFault">+
+ <condition>+
+*<test>contains($fault.summary/summary,"exception on JaxRpc")</test>*+
+<action ref="ora-retry"/>+
+ </condition>+
+ </faultName>+
+ </Conditions>+
+ <Actions>...+
but this does not seem to work.
Anyone know what "tests" are possible, and\or have used a "contains" expression in their Fault Policy?
Thanks in advance,
Eric
Example of the fault that I am trying to "catch".
+<remoteFault xmlns="http://schemas.oracle.com/bpel/extension">+
+<part name="code">+
+<code>ESBMessageProcessingFailed</code>+
+</part><part name="summary"><summary>exception on JaxRpc invoke:+
start fault message:
+801 Error validating amount. Must be numerical and greater than 0 [000]+
+:end fault message</summary>+
+</part><part name="detail"><detail>null</detail>+
+</part></remoteFault>+I did try to add namespace but it still didn't catch the fault.
I contacted Oracle support and they indicated that the syntax is: $fault.part/<xpath expression>
So for my purposes I needed to put: <test>$fault.summary/contains(summary, "xyz")</test>
HOWEVER this did not work. We recontacted Oracle and this time they admitted there is a bug that they will document. Only = or != can be used at this time.
Thanks for all who responded. I'm closing this question.
For reference, here's a list of what I tried:
The following did NOT catch my fault
<test>$fault.summary/contains(summary, "JaxRpc invoke")</test>
<test>$fault.summary/contains(summary, 'start fault message:')</test>
<test>$fault.code/contains(code, "ProcessingFail")</test>
<test>$fault.code/contains(code, "ESBMessageProcessingFailed")</test>
<test>$fault.code/contains(code/code, "ESBMessageProcessingFailed")</test>
<test>$fault.code/contains($fault.code, "ESBMessageProcessingFailed")</test>
<test>$fault.code/contains($fault.code/code, "ESBMessageProcessingFailed")</test>
<test>$fault.code/code/contains(code, "ESBMessageProcessingFailed")</test>
<test>$fault.code/code/contains($fault.code/code/, "ESBMessageProcessingFailed")</test>
<test>$fault.code/code/contains(code/code/, "ESBMessageProcessingFailed")</test>
<test>$fault.code/contains(/remoteFault/part[1]/code/, "ESBMessageProcessingFailed")</test>
<test>contains($fault.code/code,"ESB")</test>
<test>contains($fault.summary/summary,"ESB")</test>
<test>contains($fault.summary, "ESB")</test>
<test>contains($fault.summary/summary, 
)</test>
<test>xp20:matches($fault.summary/summary,'.*fault message.*')</test>
<test>xp20:matches($fault.summary/summary,'*fault message*')</test>
<test>not(xp20:matches($fault.summary/summary,'.*xyz.*'))</test>
<test>true()</test> -
Urgent : 11g Fault Policy Java Handler
Im trying to use fault policies in 11g and in fault policies want to catch the remote faults and pass it to a custom java handler.
in Custom Handler use IFaultRecoveryJavaClass and also BPELFaultRecoveryContextImpl , i want to pick fault information
and pass store it in DB...
i placed the client jar file in <Oracle_HOME>\user_projects\domains\base_domain\lib
Duuring runtime the server is able to Pick the IFaultRecoveryJavaClass but not BPELFaultRecoveryContextImpl
is there anything im missing ?
As per oracle documentation in Fault Handling in BPEL form SOA developer guide ..
public class TestJavaAction implements IFaultRecoveryJavaClass {
public void handleRetrySuccess(IFaultRecoveryContext ctx) {
System.out.println("This is for retry success");
handleFault(ctx);
public String handleFault(IFaultRecoveryContext ctx) {
System.out.println("-----Inside handleFault-----\n" + ctx.toString());
dumpProperties(ctx.getProperties());
/* Get BPEL specific context here */
BPELFaultRecoveryContextImpl bpelCtx = (BPELFaultRecoveryContextImpl) ctx;
bpelCtx.addAuditTrailEntry("hi there");
System.out.println("Policy Id" + ctx.getPolicyId());
please find the Fault Policy and Custom Java Class
please see may fault policy below..
=====================================================================================================================
<?xml version="1.0" encoding="UTF-8"?>
<faultPolicies xmlns="http://schemas.oracle.com/bpel/faultpolicy" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<faultPolicy version="2.1.3" id="ConnectionFaults">
<Conditions>
<!-- Remote Fault Handler -->
<faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension" name="bpelx:remoteFault">
<condition>
<action ref="technical-fault-handler"/>
</condition>
</faultName>
</Conditions>
<Actions>
<!-- Human Intervention -->
<Action id="ora-human-intervention">
<humanIntervention/>
</Action>
<!-- Technical Fault Action -->
<Action id="technical-fault-handler">
<javaAction className="com.FaultHandler"
defaultAction="ora-human-intervention" propertySet="TechnicalProps">
<returnValue value="OK" ref="ora-human-intervention"/>
</javaAction>
</Action>
</Actions>
<Properties>
<!-- Properties for Technical Errors -->
<propertySet name="TechnicalProps">
<property name="logFileName">techinical-faults.log</property>
<property name="logFileDir">c:\tmp\log</property>
<property name="ErrorType">Technical</property>
</propertySet>
</Properties>
</faultPolicy>
</faultPolicies>
Custom Java Handler ..
=====================================================================================================================
import java.io.File;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Map;
==============================================================
// SOA Runtime fabric-runtime.jar Available with SOA Runtime Libraries
==============================================================
import oracle.integration.platform.faultpolicy.IFaultRecoveryContext;
import oracle.integration.platform.faultpolicy.IFaultRecoveryJavaClass;
==============================================================
// BPEL Runtime orabpel.jar Available with BPEL Runtime Libraries
==============================================================
import com.collaxa.cube.engine.fp.BPELFaultRecoveryContextImpl;
public class FaultHandler implements IFaultRecoveryJavaClass {
public FaultHandler() {
super();
public void handleRetrySuccess(IFaultRecoveryContext ifc) {
print("RertySuccess");
public String handleFault(IFaultRecoveryContext ifc) {
print("Handle Fault");
Map<String,ArrayList> props = ifc.getProperties();
for (Map.Entry<String,ArrayList> entry: props.entrySet()){
print (entry.getKey() + " = " + entry.getValue().get(0));
String logFileName = (String) props.get("logFileName").get(0);
String logFileDir = (String) props.get("logFileDir").get(0);
String ErrorType = (String) props.get("ErrorType").get(0);
PrintStream ps = null;
try
ps = new PrintStream(logFileDir + File.separator + logFileName);
catch (Exception e) {
print(e.getMessage());
System.out.println( "Fault Details");
System.out.println("===============================================================");
System.out.println("Fault Type ................ " + ifc.getType());
System.out.println("Poilcy ID ................. " + ifc.getPolicyId());
System.out.println("Faulted Partner Link ...... " + ifc.getReferenceName());
System.out.println("Error Type ...... " + ErrorType);
System.out.println("Port Type ................. " + ifc.getPortType());
try {
BPELFaultRecoveryContextImpl bpelCtx = (BPELFaultRecoveryContextImpl) ifc;
System.out.println("BPEL Context + getActivityName" + bpelCtx.getActivityName());
System.out.println("BPEL Context + getActivityType" + bpelCtx.getActivityType());
System.out.println("BPEL Context + getComponentInstanceId" + bpelCtx.getComponentInstanceId());
System.out.println("BPEL Context + getComponentInstanceId" + bpelCtx.getComponentInstanceId());
System.out.println("BPEL Context + getCompositeName" + bpelCtx.getCompositeName());
System.out.println("BPEL Context + getECID" + bpelCtx.getECID());
System.out.println("BPEL Context + getFault" + bpelCtx.getFault());
System.out.println("BPEL Context + getFault" + bpelCtx.getProcessDN());
catch (Exception ee){
System.out.println("BPEL Context + Exception" + ee.getMessage());
return "OK";
Error Log ..
=====================================================================================================================
Caused by: com.oracle.bpel.client.BPELFault: faultName: {{http://schemas.oracle.com/bpel/extension}runtimeFault}
parts: {{
summary=<summary>com/collaxa/cube/engine/fp/BPELFaultRecoveryContextImpl</summary>
,detail=<detail>java.lang.NoClassDefFoundError: com/collaxa/cube/engine/fp/BPELFaultRecoveryContextImpl
at com.FaultHandler.handleFault(FaultHandler.java:56)
at com.collaxa.cube.engine.fp.RecoveryActionJava.execute(RecoveryActionJava.java:67)
at com.collaxa.cube.engine.fp.BPELRecoverFault.recover(BPELRecoverFault.java:87)
at oracle.fabric.CubeServiceEngine.recoverFault(CubeServiceEngine.java:1589)
at oracle.integration.platform.faultpolicy.RecoverFault.recoverAndChain(RecoverFault.java:149)
at oracle.integration.platform.faultpolicy.RecoverFault.resolveAndRecover(RecoverFault.java:112)
at oracle.integration.platform.faultpolicy.FaultRecoveryManagerImpl.resolveAndRecover(FaultRecoveryManagerImpl.java:121)
at com.collaxa.cube.engine.ext.bpel.common.wmp.BPELInvokeWMP.resolveAndRecover(BPELInvokeWMP.java:1170)
at com.collaxa.cube.engine.ext.bpel.common.wmp.BPELInvokeWMP.__handleException(BPELInvokeWMP.java:1111)
at com.collaxa.cube.engine.ext.bpel.common.wmp.BPELInvokeWMP.__callback(BPELInvokeWMP.java:626)
at com.collaxa.cube.engine.ext.bpel.common.wmp.BPELInvokeWMP.handleNormalInvoke(BPELInvokeWMP.java:465)
at com.collaxa.cube.engine.ext.bpel.common.wmp.BPELInvokeWMP.__executeStatements(BPELInvokeWMP.java:182)
at com.collaxa.cube.engine.ext.bpel.common.wmp.BaseBPELActivityWMP.perform(BaseBPELActivityWMP.java:140)
at com.collaxa.cube.engine.CubeEngine._performActivity(CubeEngine.java:2675)
at com.collaxa.cube.engine.CubeEngine.performActivity(CubeEngine.java:2558)
at com.collaxa.cube.engine.CubeEngine.handleWorkItem(CubeEngine.java:1256)
at com.collaxa.cube.engine.dispatch.message.instance.PerformMessageHandler.handleLocal(PerformMessageHandler.java:73)
at com.collaxa.cube.engine.dispatch.DispatchHelper.handleLocalMessage(DispatchHelper.java:188)
at com.collaxa.cube.engine.dispatch.DispatchHelper.sendMemory(DispatchHelper.java:285)
at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:4607)
at com.collaxa.cube.engine.CubeEngine.createAndInvoke(CubeEngine.java:828)
at com.collaxa.cube.engine.delivery.DeliveryService.handleInvoke(DeliveryService.java:610)
at com.collaxa.cube.engine.ejb.impl.CubeDeliveryBean.handleInvoke(CubeDeliveryBean.java:354)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.jee.spi.MethodInvocationVisitorImpl.visit(MethodInvocationVisitorImpl.java:37)
at weblogic.ejb.container.injection.EnvironmentInterceptorCallbackImpl.callback(EnvironmentInterceptorCallbackImpl.java:54)
at com.bea.core.repackaged.springframework.jee.spi.EnvironmentInterceptor.invoke(EnvironmentInterceptor.java:50)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy184.handleInvoke(Unknown Source)
at com.collaxa.cube.engine.ejb.impl.bpel.BPELDeliveryBean_5k948i_ICubeDeliveryLocalBeanImpl.handleInvoke(BPELDeliveryBean_5k948i_ICubeDeliveryLocalBeanImpl.java:241)
at com.collaxa.cube.engine.dispatch.message.invoke.InvokeInstanceMessageHandler.handle(InvokeInstanceMessageHandler.java:34)
at com.collaxa.cube.engine.dispatch.DispatchHelper.handleMessage(DispatchHelper.java:139)
at com.collaxa.cube.engine.dispatch.BaseDispatchTask.run(BaseDispatchTask.java:58)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
</detail>I tried bundling the jar file but still it is not able to pick up the class and throws the same exception. please find the following code which i tried to use to pick up the remote fault.
System.out.println( "Fault Details");
System.out.println( "===============================================================");
System.out.println( "Fault Type ................ " + ifc.getType());
System.out.println( "Poilcy ID ................. " + ifc.getPolicyId());
System.out.println( "Faulted Partner Link ...... " + ifc.getReferenceName());
System.out.println( "Error Type ...... " + ErrorType);
System.out.println( "Port Type ................. " + ifc.getPortType());
BPELFaultRecoveryContextImpl bpelCtx = (BPELFaultRecoveryContextImpl) ifc;
System.out.println("BPEL Context + getActionId" + bpelCtx.getActionId());
System.out.println("BPEL Context + getActivityName" + bpelCtx.getActivityName());
System.out.println("BPEL Context + getActivityType" + bpelCtx.getActivityType());
System.out.println("BPEL Context + getComponentInstanceId" + bpelCtx.getComponentInstanceId());
System.out.println("BPEL Context + getCompositeName" + bpelCtx.getCompositeName());
System.out.println("BPEL Context + getECID" + bpelCtx.getECID());
System.out.println("BPEL Context + getFault" + bpelCtx.getFault());
System.out.println("BPEL Context + getFault" + bpelCtx.getProcessDN());
If you have any working example can you please pass the code. my emailid is [email protected]
Edited by: lakshmi nadh on Jul 27, 2009 3:39 AM -
BPEL 10.1.3.5 Fault Management - Using Xpath in Fault Policy conditions
Hi all.
I have a requirement to use the xpath functions "contais" and "upper-case" inside a condition in a fault policy file. I've done some tests and didn't get successful results so far.
My first test using the policy file was the following:
<faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
xmlns:ebsv1="http://www.claro.com.br/EBS/Claro/v1"
xmlns:ebov1="http://www.claro.com.br/EBO/Claro/v1"
name="ebsv1:TechnicalFault">
<condition>
*<test>$fault.TechnicalFault/ebsv1:TechnicalFault/ebov1:message = 'TE-0001'</test>*
<action ref="ora-human-intervention" />
</condition>
In this first test I used a simple expression just to test the overall namespace declarations and xpath navigation. It worked as expected.
Second, I modified the test to use the "contais" function. I need to use this function because my message will eventually contain the value 'TE-0001' mixed with other string:
<faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
xmlns:ebsv1="http://www.claro.com.br/EBS/Claro/v1"
xmlns:ebov1="http://www.claro.com.br/EBO/Claro/v1"
name="ebsv1:TechnicalFault">
<condition>
*<test>contains($fault.TechnicalFault/ebsv1:TechnicalFault/ebov1:message, 'TE-0001')</test>*
<action ref="ora-human-intervention" />
</condition>
In this second test I allways get FALSE results, meaning that this expression may not be correct. I'm certain that this should be evaluated to TRUE as the test scenario is the same as the first test. Is there something missing?? I turned on debug level log in the domain but didn't find any hint about the fault management processing.
Besides the use of the contains function, it would be nice if I'm able use the function upper-case. Something like this:
<faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
xmlns:ebsv1="http://www.claro.com.br/EBS/Claro/v1"
xmlns:ebov1="http://www.claro.com.br/EBO/Claro/v1"
xmlns:xp20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20"
name="ebsv1:TechnicalFault">
<condition>
*<test>contains(xp20:upper-case($fault.TechnicalFault/ebsv1:TechnicalFault/ebov1:message), 'TE-0001')</test>*
<action ref="ora-human-intervention" />
</condition>
Any ideas???
Thanks
DenisHi again.
Has anyone been able to use any kind of Xpath function inside a policy file? If so, could you please share the code fragment including the namespace declarations and the conditions?
Does anyone know if Fault Management Framework at least support the use of Xpath functions?
Thanks.
Denis
Maybe you are looking for
-
After reading countless threads re: how to get the iTunes artwork screensaver to work, I decided to delete my iTunes library file and reimport all of music which resulted in fixing the iTunes artwork screensaver. Unfortunately (and expectedly), my p
-
Fingerprint utility is not working for normal users - Tecra M11
Hi All, I installed windows 7 pro in Tecra M11 laptop and the Toshiba finger print utility is not working for normal users. It is working only for domain administrators. The TFPU is not working for, normal domain users, local users, local administrat
-
How to "Grab" or Highlight Safari Window Titles?
Hello Folks, i was wondering if someone can answer a question for me about the titles that appear at the top of my Safari windows. (i'm using Safari 3.2.) When i display a webpage in a particular Safari window or tab within a window, there is a title
-
Higher Education cess not displayed in J2I6 when posted through J1IH
Hi, We have passed an Excise JV through J1IH. BED, ECess and HECess accounts are credited and Excise Duty paid A/c is debited. All the values are posted properly. We have also checked the accounting document for this. But when we run the report J2I6
-
Dest Delimiter parameter in bic module
Hi Experts, I am working on a IDoc to EDI scenario using seeburger modules (bic). While creating a EDI file on Target FTP server ,EDI content is written into file as a single line instead of a new line after every record. Please let me know if i had