Default fault handler
Hello,
I have a prospect that would like to have a generic default exception handler that will include a generic human task.
The human task will receive the error details and allow the user to instruct the BPM engine to retry that faulty activity and resume the process from the point where it was stopped, or terminate the current process instance.
Is there a supported way of doing so ?
Thanks,
Meni,
Thank you for idea, that would solve this problem. But generally speaking, does Oracle BPEL Server support concept of default compensation handlers and default fault handlers by WS-BPEL1.1 specification or not? By my experience, it doesn't. Unluckily, you cannot use universal compensation activity (without name of the scope) either, and so you have to use in every fault handler list of compensation activities, each of them with name of specific scope. Am I wrong?
Similar Messages
-
BPEL Fault Handling Framework, default Action to send Notification
All,
I'm using SOA Suite 11g R1
Is there a way to send (email) Notification without Java coding in the BPEL Fault Handling Framework ?
I would like to, when catching a fault in the Fault Handling Framework (remotFault/bindingFault) -> send a Notification and then HumanIntervention.
Thanks
Bjorn-ErikHi,
one option wud be to send it to human intervention and then rethrow the fault back to bpel....here u can define the email activity in the catch handler...try it. -
Clarification needed in the Fault Handling Framework(Error Hospital)
Hi,
I need some clarification on Fault Handling Framework...
Scenario:
My BPEL Process is Asynchronous.(10.1.3.3.1) and I tryed to invoke the another BPEL Process( which is used to select the Fname from the table using DB Adapter) . In the Main BPEL Process I have the Fault handling Framework and I done necessary changes in the bpel.xml. This is successfully working for Invoke Activity when ever an Remote or Binding Fault occurs in the Sub-BPEL Process and this Fault is send to Fault-Policy.xml in the server(bpel/domains/default/config/fault-Policy) and works accordingly to the action mentioned in the policy xml....( I have also made changes in the fault-bindings.xml ).
How ever this Framework is working fine for every actions.
Need Clarification:
1) Only the Binding and Remote faults will work for the Fault handling Framework.
2) can we use User defined faults (Buissness Faults,,,) for this........because I used the User defined faults to invoke the fault-policy.xml and it won't works....
3)Only Invoke Activity can be handled for this Framework or any Other Activity........
4)How to handle other Activity in the Fault-policy.xml...
5)Any difference for Asynchronous or Synchronous in this Fault Handling Framework.......
I also referred the Oracle SOA Suite New Feauters PDF .......
Can any one send me the related documents and try to help me on this.
Please help me on this.......
Thanks,
Ashok.Hi Chintan,
You are saying that Custom faults are also supported for fault-Policy.xml.
I can't understand that 2nd answer you said. can you please explain how to use the Custom faults in the FaultHandlingFramework..
My Scenario:
I have 2 BPEL Process, BPEL1 will invoke the BPEL2 and if any remote fault or binding faults occurs in the BPEL 2 its returning the same fault to BPEL1 and here I am using FaulthandlingFramework , this fault send to fault-policy.xml and necessary action is took place succesfuly...(like retry, human intervention.....)
But when I throw some CustomFaults(userdefinedFaults)in the BPEL2 , its returning as a remotefault to BPEL1. I don't know how to use the customFaults in the Fault handling framework.......
Can you explain me in detail how to use custom faults in faulthandling framework...............
Send me some related documents for this..... -
What's your strategy for WebService errors that aren't raised through fault handler?
Is there a way to underride the default functionality of
WebService.as? I can't find the source code in the SDK, so I'm
assuming this part of Flex isn't Open Source.
I find that using WebServices that there are a lot of errors
that potentially occur that I can't capture in the UI. Or, let me
rephrase that, that I haven't been able to figure out how to
capture in the UI.
For example, the following "Could not load WSDL" error
occurs. Now, I could probably devise a strategy around checking
that the connection is alive and such, but then I've seen other
errors that occur in the WebService base classes that are all fired
asyncronously.
Is there a way to add a default handler that capures these
types of errors? (They're not captures by FaultHandlers).
I can't have a UI that displays the big white box to end
users with a stack trace. Thanks.
[RPC Fault faultString="Could not load WSDL"
faultCode="Server.NoServicesInWSDL" faultDetail="No
<wsdl:service> elements found in WSDL at ."]
at
mx.rpc.wsdl::WSDL/getService()[E:\dev\flex_3_beta3\sdk\frameworks\projects\rpc\src\mx\rpc \wsdl\WSDL.as:256]
at
mx.rpc.wsdl::WSDL/getPort()[E:\dev\flex_3_beta3\sdk\frameworks\projects\rpc\src\mx\rpc\ws dl\WSDL.as:182]
at mx.rpc.soap::WebService/
http://www.adobe.com/2006/flex/mx/internal::wsdlHandler()[E:\dev\flex_3_beta3\sdk\framewor ks\projects\rpc\src\mx\rpc\soap\WebService.as:267
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at
mx.rpc.wsdl::WSDLLoader/checkLoadsOutstanding()[E:\dev\flex_3_beta3\sdk\frameworks\projec ts\rpc\src\mx\rpc\wsdl\WSDLLoader.as:195]
at
mx.rpc.wsdl::WSDLLoader/resultHandler()[E:\dev\flex_3_beta3\sdk\frameworks\projects\rpc\s rc\mx\rpc\wsdl\WSDLLoader.as:173]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.rpc::AbstractInvoker/
http://www.adobe.com/2006/flex/mx/internal::dispatchRpcEvent()[E:\dev\flex_3_beta3\sdk\fra meworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:175
at mx.rpc::AbstractInvoker/
http://www.adobe.com/2006/flex/mx/internal::resultHandler()[E:\dev\flex_3_beta3\sdk\framew orks\projects\rpc\src\mx\rpc\AbstractInvoker.as:198
at
mx.rpc::Responder/result()[E:\dev\flex_3_beta3\sdk\frameworks\projects\rpc\src\mx\rpc\Res ponder.as:48]
at
mx.rpc::AsyncRequest/acknowledge()[E:\dev\flex_3_beta3\sdk\frameworks\projects\rpc\src\mx \rpc\AsyncRequest.as:81]
at
DirectHTTPMessageResponder/completeHandler()[E:\dev\flex_3_beta3\sdk\frameworks\projects\ rpc\src\mx\messaging\channels\DirectHTTPChannel.as:387]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()I found out at FlexCOders, that when I'm not using the Debug
version of the Player that these errors should correctly propogate
to the Fault handler. -
Fault handler BPEL PM Weblogic issue ?
Products:
SOA for WebLogic Server (10.1.3.4) , p7490612_101340_GENERIC
Jdeveloper 10.1.3.4
Windows XP sp2
1.- I was install SOA for WSL 9.2 and Jdev succesfull, now i start with any test.
2.- I test Fault handling framework , then i create the simple xml files: fault-bindings.xml and fault-policies\mybpiPolicy.xml
----- Abstract files
<faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension" name="bpelx:bindingFault">
<condition>
<action ref="ora-retry"/>
</condition>
</faultName>
<Action id="ora-retry">
<retry>
<retryCount>2</retryCount>
<retryInterval>6</retryInterval>
<exponentialBackoff/>
<retryFailureAction ref="ora-human-intervention"/>
</retry>
</Action>
3.- Then i create an simple async BPEL case for fault handling with a DB BPEL Adapter using a wrong Jdbc string for instance Bad SID database (deliberately , The correct is XE not XE1).
Then i test it, and with audit trail in BPEL Console, i can view the 2 retries that i indicate in the descriptor, but after [FAULT RECOVERY|http://forums.oracle.com/forums/] Marked Invoke activity as "pending manual recovery, it have a exception.
* In normal case with OC4J, after last line, the process is ready for recovery in a manual step.
* Well i think so maybe i missing another configuration or parameter because it is deploy in WebLogic, i do not. next i put the text that in audit trail appers.
Please help, regards.
----- my Messages in audit trail.
--2008/12/30 21:28:29-- [FAULT RECOVERY|http://forums.oracle.com/forums/] Marked Invoke activity as "pending manual recovery".
--2008/12/30 21:28:30-- "BPELFault" has not been caught by a catch block.
--2008/12/30 21:28:30-- There is a system exception while performing the BPEL instance, the reason is "faultName: {{[http://schemas.oracle.com/bpel/extension]}remoteFault} messageType: {{[http://schemas.oracle.com/bpel/extension]}RuntimeFaultMessage} parts: {{code=0 ,summary=file:/D:/oracle/soasuitebasic/bpel/domains/default/tmp/.bpel_Test1BPEL_1.0_7f0af90c7bf1874b5077831987befd2d.tmp/do.wsdl [ do_ptt::doSelect(doSelect_inparameters,DomainCollection) |http://forums.oracle.com/forums/] - WSIF JCA Execute of operation 'doSelect' failed due to: Could not create/access the TopLink Session. This session is used to connect to the datastore. [Caused by: Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor The Connection descriptor used by the client was: localhost:1521:XE1 |http://forums.oracle.com/forums/] ; nested exception is: ORABPEL-11622 Could not create/access the TopLink Session. This session is used to connect to the datastore. [Caused by: Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor The Connection descriptor used by the client was: localhost:1521:XE1 |http://forums.oracle.com/forums/] See root exception for the specific exception. You may need to configure the connection settings in the deployment descriptor (i.e. weblogic-ra.xml) and restart the server. Caused by Exception [TOPLINK-4002|http://forums.oracle.com/forums/] (Oracle TopLink - 10g Release 3 (10.1.3.4.0) (Build 080602)): oracle.toplink.exceptions.DatabaseException Internal Exception: java.sql.SQLException: Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor The Connection descriptor used by the client was: localhost:1521:XE1 Error Code: 0. ,detail= Internal Exception: java.sql.SQLException: Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor The Connection descriptor used by the client was: localhost:1521:XE1 Error Code: 0}} ". Please check the error log file for more infromation. A failure is detected in use of fault policy used to recover the activity. Please audit the instance manually or let engine recovery to attempt recovery. Best practice suggests to handle exceptions in fault policy or in the fault handlers in your bpel process. less
com.oracle.bpel.client.BPELFault: faultName: {{[http://schemas.oracle.com/bpel/extension]}remoteFault}
messageType: {{[http://schemas.oracle.com/bpel/extension]}RuntimeFaultMessage}
parts: {{code=0
,summary=file:/D:/oracle/soasuitebasic/bpel/domains/default/tmp/.bpel_Test1BPEL_1.0_7f0af90c7bf1874b5077831987befd2d.tmp/do.wsdl [ do_ptt::doSelect(doSelect_inparameters,DomainCollection) |http://forums.oracle.com/forums/] - WSIF JCA Execute of operation 'doSelect' failed due to: Could not create/access the TopLink Session.
This session is used to connect to the datastore. [Caused by: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
The Connection descriptor used by the client was:
localhost:1521:XE1
; nested exception is:
ORABPEL-11622
Could not create/access the TopLink Session.
This session is used to connect to the datastore. [Caused by: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
The Connection descriptor used by the client was:
localhost:1521:XE1
See root exception for the specific exception. You may need to configure the connection settings in the deployment descriptor (i.e. weblogic-ra.xml) and restart the server. Caused by Exception [TOPLINK-4002|http://forums.oracle.com/forums/] (Oracle TopLink - 10g Release 3 (10.1.3.4.0) (Build 080602)): oracle.toplink.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
The Connection descriptor used by the client was:
localhost:1521:XE1
Error Code: 0.
,detail=
Internal Exception: java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
The Connection descriptor used by the client was:
localhost:1521:XE1
Error Code: 0
at com.collaxa.cube.ws.WSIFInvocationHandler.invoke(WSIFInvocationHandler.java:623)
at com.collaxa.cube.ws.WSInvocationManager.invoke2(WSInvocationManager.java:437)
at com.collaxa.cube.ws.WSInvocationManager.invoke(WSInvocationManager.java:251)
at com.collaxa.cube.engine.ext.wmp.BPELInvokeWMP.__invoke(BPELInvokeWMP.java:826)
at com.collaxa.cube.engine.ext.wmp.BPELInvokeWMP.__executeStatements(BPELInvokeWMP.java:402)
at com.collaxa.cube.engine.ext.wmp.BPELInvokeWMP.expire(BPELInvokeWMP.java:151)
at com.collaxa.cube.engine.CubeEngine.expireActivity(CubeEngine.java:4161)
at com.collaxa.cube.engine.CubeEngine.expireActivity(CubeEngine.java:2073)
at com.collaxa.cube.ejb.impl.ActivityManagerBean.expireActivity(ActivityManagerBean.java:174)
at com.collaxa.cube.ejb.impl.ActivityManagerBean.expireActivity(ActivityManagerBean.java:145)
at com.collaxa.cube.ejb.impl.ActivityManagerBean_lcloe8_ELOImpl.expireActivity(ActivityManagerBean_lcloe8_ELOImpl.java:542)
at com.collaxa.cube.engine.dispatch.message.instance.ExpirationMessageHandler.handle(ExpirationMessageHandler.java:43)
at com.collaxa.cube.engine.dispatch.DispatchHelper.handleMessage(DispatchHelper.java:140)
at com.collaxa.cube.engine.dispatch.BaseDispatchTask.run(BaseDispatchTask.java:58)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
-----The fault management framework catches all faults (business and runtime) for an invoke activity only.
For all other activities use the BPEL fault handler. -
SAP workflow not published / not reaching default outbound handler
Hi,
At Velocity event (october) we had a SAP ERP workflow configured for publishing to SharePoint; after triggering workflow instances, an XML payload document was successfully published to SharePoint.
Now, in the same environment; without changes on Duet Enterprise config level, publishing of task changes of that same workflow no longer publishes into SharePoint.
We executed the report jobs OSP_DELTA and OSP_FULL to make sure that the sync from SAP to SharePoint would be done / task changes are notified. The SAP workflows are delivered into the SAP inbox; but not published to SharePoint.
We added a breakpoint (internal + external) in the default outbound handler S_OSP_WF_PAT_DEFAULT_CH_OB; it is not invoked when we reach the workflow decision step that is published.
We inspected the SCL Logs, but didn't find any relevant log entries.
Any clue what can be wrong here; where to start with the problem analysis?
Best regards, William.Hi Holger,
The error 'Users not maintained...' appears to be caused due lack of SAP permissions of the SAP account that is executing the report S_OSP_WF_ITEM_SELECTION; with another account we succesfully pass the 'GetNotifications' calls within that report; and actually now do get into the default outbound handler.
But still no task document published into SharePoint; the default outboundhandler faults on Send Action item; error details:
ERROR_CONTEXT>
<ERROR_INFO>ICF Error when sending the request: HTTPIO_ERROR_SEND_STATE-Fehlermeldung beim Senden der Daten.</ERROR_INFO>
- <CONSUMER_INFO>
<CONSUMER_PROXY>CO_OSPWACTION_ITEM_VI_DOCUMENT</CONSUMER_PROXY>
<LOGICAL_PORT>CO_OSPWACTION_ITEM_VI_DOCUMENT</LOGICAL_PORT>
<OPERATION_NAME>maintainActionItem</OPERATION_NAME>
<OPERATION_NAMESPACE>urn:ActionItemWsd/ActionItemVi/document</OPERATION_NAMESPACE>
<PROCESSING_UNIT>Sector 1: WS-Consumer</PROCESSING_UNIT>
<PROCESSING_MODE>Synchronous</PROCESSING_MODE>
<COMMUNICATION_TYPE>Remote</COMMUNICATION_TYPE>
<WORK_PROCESS_NUMBER>1</WORK_PROCESS_NUMBER>
<WORK_PROCESS_PID>25034814</WORK_PROCESS_PID>
<TERMINAL_NAME>C0269450</TERMINAL_NAME>
</CONSUMER_INFO>
- <TRANSPORT_INFO>
<PROTOCOL>HTTP/1.1</PROTOCOL>
<AUTHENTICATION_METHOD>BasicAuth</AUTHENTICATION_METHOD>
</TRANSPORT_INFO>
</ERROR_CONTEXT>
We want to check the settings of Consumer Proxy for Workflow (page 76 in deployment guide); however we don't see 'Connection Settings' entry in the SCL server.
--> 4. Select Connection Settings > SCL to Consumer > Configure Service Endpoint.
Regards, William. -
Hi,
I am trying to catch the remoteFault and used the catch branch and used Namespace URI as http://schemas.oracle.com/bpel/extension Local Part: remoteFault and fault Variable: faultVar.
But when assingning the faultVar is not showing its elements code, summary and details. It is weird that it is showing in some BPEL process and not showing in some BPEL process. Is something need to take care while using system fault?
Regards,
SreejitHi Sreejit,
There is often a need to use an activity that does nothing. An example is when a fault must be caught and suppressed. In this case, you can use the empty activity to insert a no-op instruction into a business process. The syntax to use an empty activity is as follows:
<empty standard-attributes>
standard-elements
</empty>
If no catch or catchAll is selected, the fault is not caught by the current scope and is rethrown to the immediately enclosing scope. If the fault occurs in (or is rethrown to) the global process scope, and there is no matching fault handler for the fault at the global level, the process terminates abnormally. This is as though a terminate activity (described in "Using the Terminate Activity to Stop a Business Process Instance") had been performed.
Consider the following example:
<faulthandlers>
<catch faultName="x:foo">
<empty/>
</catch>
<catch faultVariable="bar">
<empty/>
</catch>
<catch faultName="x:foo" faultVariable="bar">
<empty/>
</catch>
<catchAll>
<empty/>
</catchAll>
</faulthandlers>
Assume that a fault named x:foo is thrown. The first catch is selected if the fault carries no fault data. If there is fault data associated with the fault, the third catch is selected if the type of the fault's data matches the type of variable bar. Otherwise, the default catchAll handler is selected. Finally, a fault with a fault variable whose type matches the type of bar and whose name is not x:foo is processed by the second catch. All other faults are processed by the default catchAll handler.
Invoking a compensation handler that has not been installed is equivalent to using the empty activity (it is a no-op). This ensures that fault handlers do not have to rely on state to determine which nested scopes have completed successfully. The semantics of a process in which an installed compensation handler is invoked more than once are undefined.If an invoke activity has a compensation handler defined inline, then the name of the activity is the name of the scope to be used in the compensate activity. The syntax is as follows:
<compensate scope="ncname"? standard-attributes>
standard-elements
</compensate>
Hope this is much clearer and answers your question!
Cheers
Anirudh Pucha -
How to register multiple stages in fault handler?
Hi,
I am trying to create multiple fault handlers for multiple CQL processors.
I understand how to create one handler but when I am trying to add another osgi service to rgister anothet fault handler I get strange behaviot in theeclipse. The EPN disappears.Any advice?
Another question - how do I register multiple stages to the same handler?Hi,
I am trying to create multiple fault handlers for multiple CQL processors.
I understand how to create one handler but when I am trying to add another osgi service to rgister anothet fault handler I get strange behaviot in theeclipse. The EPN disappears.Any advice?
Another question - how do I register multiple stages to the same handler? -
What are the different approaches to do Fault Handling?
What are the different approaches to do Fault Handling?
for uplodig data to non sap we have 2 methodes
i) if u know bapi u will use lasm
2) bdc
but u mentioned so many records isthere
best thing is u will uplode all record sto al11 using XI interface
then u have to write bdc / lsmw program
beter to go for lsmw before that u will find bapi
if u will unable to find bapi
u have to create bapi and use it in lasmw
ofter that u have schedule the lsmw program as a bockground
then u have to create a job for it
and release from sm 37
then u have to moniter through bd87
if u want to go through i will help u.
if it is usefull to u pls give points
Saimedha -
"Select default PDF handler" greyed out in Acrobat XI and Reader X
MIS just installed Acrobat XI for me, and now all PDFs from the web open in the Browser, which is not the way I usually operate. I went to Preferences > General in both programs, and in both the "Select default PDF handler" option is greyed out. Any suggestions?
DonnaGo to Edit-> prefrences-> Internet and Change the settings to open PDF In browser.
Please See the below Link :
http://helpx.adobe.com/acrobat/using/display-pdf-browser-acrobat-xi.html -
Fault Handling in BPEL process
hi
We have to develop an application which involves several BPEL processes and proxy service(OSB) and JMS queue etc.
What is the difference between Fault Management Framework in SOA11g and normal fault handling(using catch and throw activities)?
which one we should prefer for fault handling in our application n why?
Plz help thanks in advance.Hi-
In Normal Fault handling process, you will be able to catch the faluts only but in Fault Management Framework if a fault occurs the framework catches the fault and performs a user-specified action defined in a fault policy file associated with the activity. You can also have a human intervention prescribed in it, where you perform recovery actions from Enterprise Manager.
Pls go throgh the below post for detailed description
http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10224/bp_faults.htm
Fault Management Framework and non BPEL soap faults
Edited by: 333333 on Mar 23, 2011 5:01 PM -
Fault handling for Mediator component
I am trying to capture all the system and business faults of the composite and email the details to system groups. I am having issues with the fault policy file and get the following error. My Composite is made up of Web Services ---> Mediator ---->DBAdapter
INFO: FaultPoliciesParser.parsePolicies ------->Begin Parsing of policy file
<Jun 18, 2012 3:48:58 PM EST> <Error> <oracle.soa.mediator.common.error.recovery> <BEA-000000> <Failed to recover the mediator fault.
oracle.fabric.common.FabricException: Missing fault policy: TESTFaultPolicy
at oracle.integration.platform.faultpolicy.RecoverFault.resolveToActionRef(RecoverFault.java:101)
at oracle.integration.platform.faultpolicy.FaultRecoveryManagerImpl.resolveToActionRef(FaultRecoveryManagerImpl.java:151)
at oracle.tip.mediator.common.error.recovery.MediatorRecoveryHandler.resolveToActionRef(MediatorRecoveryHandler.java:158)
at oracle.tip.mediator.common.error.ErrorMessageEnqueuer.enqueue(ErrorMessageEnqueuer.java:174)
at oracle.tip.mediator.dispatch.db.DeferredDBWorker.handleError(DeferredDBWorker.java:117)
at oracle.tip.mediator.common.listener.DBWorker.process(DBWorker.java:114)
at oracle.tip.mediator.common.listener.AbstractWorker.run(AbstractWorker.java:83)
at oracle.integration.platform.blocks.executor.WorkManagerExecutor$1.run(WorkManagerExecutor.java:120)
at weblogic.work.j2ee.J2EEWorkManager$WorkWithListener.run(J2EEWorkManager.java:183)
at weblogic.work.DaemonWorkThread.run(DaemonWorkThread.java:30)
I am attaching the following files
FAULT-POLICIES.XML*
<?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.0.1" id="TESTFaultPolicy">
<Conditions>
<faultName>
<condition>
<action ref="ora-java"/>
</condition>
</faultName>
</Conditions>
<Actions>
<Action id="ora-java">
<javaAction className="test.EmailFaultHandler"
defaultAction="ora-human-intervention">
</javaAction>
</Action>
</Actions>
</faultPolicy>
</faultPolicies>
FAULT-BINDINGS.XML_
<?xml version="1.0" encoding="UTF-8"?>
<faultPolicyBindings version="2.0.1"
xmlns="http://schemas.oracle.com/bpel/faultpolicy">
<composite faultPolicy="TESTFaultPolicy"/>
<component faultPolicy=" TESTFaultPolicy">
<name>HandleRealTimeRequests</name>
</component>
</faultPolicyBindings>
I am yet to figure out how to capture the fault and email to the groups in EmailFaultHandler.java file below
EmailFaultHandler.java_
package test;
import com.collaxa.cube.engine.fp.BPELFaultRecoveryContextImpl;
import java.util.Map;
import oracle.integration.platform.faultpolicy.IFaultRecoveryContext;
import oracle.integration.platform.faultpolicy.IFaultRecoveryJavaClass;
public class EmailFaultHandler implements IFaultRecoveryJavaClass {
public void handleRetrySuccess(IFaultRecoveryContext iFaultRecoveryContext) {
public String handleFault(IFaultRecoveryContext iFaultRecoveryContext) {
//Print Fault Meta Data to Console
System.out.println("****************Fault Metadata********************************");
System.out.println("Fault policy id: " + iFaultRecoveryContext.getPolicyId());
System.out.println("Fault type: " + iFaultRecoveryContext.getType());
System.out.println("Partnerlink: " + iFaultRecoveryContext.getReferenceName());
System.out.println("Port type: " + iFaultRecoveryContext.getPortType());
System.out.println("**************************************************************");
//print all properties defined in the fault-policy file
System.out.println("Properties Set for the Fault");
Map props = iFaultRecoveryContext.getProperties();
for (Object key: props.keySet())
System.out.println("Key : " + key.toString() + " Value : " + props.get(key).toString());
//Custom Code to Log Fault to File/DB/JMS or send Emails etc.
return "Manual";
Please suggest
Thanks
Edited by: user5108636 on 18/06/2012 00:20
Edited by: user5108636 on 18/06/2012 00:20By the way, I managed to break through a little further. Now I am past this fault policy error. However, the java fault handler class is giving ClassNotFoundException. The way I added the java file (test.EmailFaultHandler) through JDeveloper in the composite project (Right click --> New ---> Java file). How do I add this to the classpath. I thought it automatically gets added to the SOA composite project classpath.
Please suggest.
INFO: FaultPoliciesParser.parsePolicies ------->Begin Parsing of policy file
<Jun 19, 2012 10:58:01 AM EST> <Warning> <oracle.soa.mediator.monitor> <BEA-000000> <Venkat:Inside Synchronized block with msg id :CCA40B60B9A911E1BF115F9190ABA14C>
<Jun 19, 2012 10:58:01 AM EST> <Warning> <oracle.soa.mediator.monitor> <BEA-000000> <Venkat:Inside Synchronized block with msg id :CCA40B60B9A911E1BF115F9190ABA14C>
<Jun 19, 2012 10:58:01 AM EST> <Warning> <oracle.soa.mediator.monitor> <BEA-000000> <Venkat:Inside Synchronized block with msg id :CCA40B60B9A911E1BF115F9190ABA14C>
<Jun 19, 2012 10:58:01 AM EST> <Error> <oracle.soa.mediator.common.listener> <BEA-000000> <Enququeing to Error hospital successful...>
<Jun 19, 2012 10:58:05 AM EST> <Error> <oracle.soa.mediator.common.error.recovery> <BEA-000000> <Error while loading "test.EmailFaultHandler" java class specified for action "ora-java".>
<Jun 19, 2012 10:58:05 AM EST> <Error> <oracle.soa.mediator.common.error.recovery> <BEA-000000> <Failed to recover the mediator fault.
java.lang.ClassNotFoundException: test.EmailFaultHandler
at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:297)
at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:270)
at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:64)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:179)
at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAwareClassLoader.java:43)
at oracle.tip.mediator.common.error.recovery.CustomJavaHandler.execute(CustomJavaHandler.java:69)
at oracle.tip.mediator.common.error.recovery.MediatorRecoverFault.recover(MediatorRecoverFault.java:73)
at oracle.tip.mediator.serviceEngine.MediatorFacadeService.recoverFault(MediatorFacadeService.java:988)
at oracle.integration.platform.faultpolicy.RecoverFault.recoverAndChain(RecoverFault.java:161)
at oracle.integration.platform.faultpolicy.RecoverFault.resolveAndRecover(RecoverFault.java:124)
at oracle.integration.platform.faultpolicy.FaultRecoveryManagerImpl.resolveAndRecover(FaultRecoveryManagerImpl.java:123)
at oracle.tip.mediator.common.error.recovery.MediatorRecoveryHandler.recover(MediatorRecoveryHandler.java:116)
at oracle.tip.mediator.common.error.ErrorDBWorker.handleMessage(ErrorDBWorker.java:37)
Thanks -
Hi,
This is regarding SOAP fault handling in OSB11g.
i am expecting that whenever OSB proxy service recieves a fault response the flow should move to service error handler if any. But its not happening.
We tested our service with SOA Test stubs and SOAP UI mock services. When SOA test stub send fault response OSB considering it as normal response. But when the same fault is sent by SOAP UI mock service OSB is considering it as fault and going to service error handler.
Now the same is happening when we replaced the service provider with one of the .NET service. The fault response is in SOAP 1.1 structure.
Please let me whats the difference or any setting or HTTP response code we need to look at.
Thanks & Regards
SivaHi Anuj,
I am using the same fault structure which is working in Soap UI mock service. Still its not working in Soa test stub. And now facing the same issue when fault comes from .NET based service provider.
Will verify once to see whats the response code thats being sent.
Thanks
Siva -
Hi,
We have a DBAdpater to retrieve the data and a mediator to invoke the DBAdapter. In cases like No Records we want to create a soap fault. So we implemented Mediator Java callout and overriden postRouting() to read the response message and create a soapfault.
[ we referred to blog http://technology.amis.nl/blog/6669/soa-suite-11g-introducing-mediator-java-callouts-for-debug-audit-and]
but when we tried creating SOAPFault and add it to the response message, while execution , the response message is being parsed and seeing the fault it is throwing the exception below:
java.lang.Exception: oracle.sysman.emSDK.webservices.wsdlapi.SoapTestException:
This is a fault.
at oracle.sysman.emas.model.wsmgt.WSTestModel.invokeOperation(WSTestMode
l.java:575)
at oracle.sysman.emas.view.wsmgt.WSView.invokeOperation(WSView.java:381)
at oracle.sysman.emas.view.wsmgt.WSView.invokeOperation(WSView.java:298)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.el.parser.AstValue.invoke(AstValue.java:157)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:283)
at org.apache.myfaces.trinidadinternal.taglib.util.MethodExpressionMetho
dBinding.invoke(MethodExpressionMethodBinding.java:53)
at org.apache.myfaces.trinidad.component.UIXComponentBase.broadcastToMet
hodBinding(UIXComponentBase.java:1259)
at org.apache.myfaces.trinidad.component.UIXCommand.broadcast(UIXCommand
.java:183)
I found that if exception from mediator is not handled, then the exception is throw as system fault as shown above.
So we tried implementing external fault handling - by creating fault-policies.xml and fault-bindings.xml and a java callout.
fault-bindings.xml
<?xml version=”1.0" encoding=”UTF-8"?>
<faultPolicyBindings version=”2.0.1" xmlns=”http://schemas.oracle.com/bpel/faultpolicy”>
<composite faultPolicy=”SOM_ServiceFaults”/>
</faultPolicyBindings>
fault-policies.xml
<?xml version="1.0" encoding="UTF-8"?>
<faultPolicies>
<faultPolicy version="2.0.1" id="SOM_ServiceFaults">
<Conditions>
<faultName xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" name="env:Fault"> <!-- Qname of Business/SOAP fault -->
<condition>
<action ref="ora-custom"/>
</condition>
</faultName>
<faultName xmlns:medns="http://schemas.oracle.com/mediator/faults" name="medns:mediatorFault">
<condition>
<action ref="ora-custom"/>
</condition>
</faultName>
</Conditions>
<Actions>
<Action id=”ora-terminate”>
<abort/>
</Action>
<Action id="ora-custom">
<javaAction className="gm.som.FaultPolicyJavaAction" defaultAction="ora-terminate">
<returnValue value="ora-terminate" ref="ora-terminate"/>
</javaAction>
</Action>
</Actions>
</faultPolicy>
</faultPolicies>
But still getting the error.Appreciate any help on this.
Thanks in Advance,
SubhashiniNot exactly but doing it the other way around by copying the fault msg to output variable and check flag for the response in my initial requester process then throw fault accordingly.. didnt have much time as it was holding back my other deliverables
Thanks a lot for your time -
Fault handling in DIServer Interact
Good Day Mentors,
I'm currently testing out how the DIServer works.
Now, I am testing Fault handling with the DI Server,
and would want to know if there is a way to get multiple Errors from an DI Server Interact call.
My test scenario was adding 2 Sales Orders into SAP via DI Server using the Interact Call(Not BatchInteract).
The actual SOAP call sent , with comments, is as below:
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<env:Header>
<SessionID>5659CCC6-2E15-4664-BFA2-4E6A3BDD3E35</SessionID>
</env:Header>
<env:Body>
<dis:Add xmlns:dis="http://www.sap.com/SBO/DIS">
<Service>OrdersService</Service>
<Document>
<DocType>dDocument_Items</DocType>
<DocDate>2014-05-09</DocDate>
<DocDueDate>2014-05-10</DocDueDate>
<CardCode>C23900</CardCode>
<Comments>DI Server Test - ADD</Comments>
<DocumentLines>
<DocumentLine>
<ItemCode>A00003</ItemCode>
<Quantity>2</Quantity>
</DocumentLine>
<DocumentLine>
<ItemCode>TESTITTEM02</ItemCode> <!-- This Item Code Does not Exist in OEC Computer-->
<Quantity>2</Quantity>
</DocumentLine>
</DocumentLines>
</Document>
</dis:Add>
<dis:Add xmlns:dis="http://www.sap.com/SBO/DIS">
<Service>OrdersService</Service>
<Document>
<DocType>dDocument_Service</DocType>
<DocDate>2014-05-09</DocDate>
<DocDueDate>2014-05-10</DocDueDate>
<CardCode>C20000</CardCode>
<Comments>DI Server Test - ADD</Comments>
<DocumentLines>
<DocumentLine>
<ItemDescription>Printer Servicing</ItemDescription>
<AccountCode>499999</AccountCode> <!-- This Account Code Does not Exist in OEC Computer-->
</DocumentLine>
</DocumentLines>
</Document>
</dis:Add>
</env:Body>
</env:Envelope>
I commented the parts that should throw errors, which are the non existent ItemCode and AccountCode in 2 separate Sales Orders.
I was hoping to get a Fault Response from the DIServer which tells me that there are two error from 2 different Documents.
Basically, 2 separate error messages for the 1st Sales order(non existent Item Code) and 2nd Sales Order (Non Existent Account Code).
But the Fault Response I got from the DIServer was this:
<?xml version="1.0" ?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<env:Body>
<env:Fault>
<env:Code>
<env:Value>env:Receiver</env:Value>
<env:Subcode>
<env:Value>-1</env:Value>
</env:Subcode>
</env:Code>
<env:Reason>
<env:Text xml:lang="en">Error in SOAP command 'Add'</env:Text>
</env:Reason>
<env:Detail>
<Command>Add</Command>
<SessionID>5659CCC6-2E15-4664-BFA2-4E6A3BDD3E35</SessionID>
</env:Detail>
</env:Fault>
</env:Body>
</env:Envelope>
The fault response only tells me that there is an error, but nothing specific to the documents. Just something specific to the actual SOAP call.
If I something is not clear, please do clarify with me.
I'm using SAP B1 9.0 PL05.
Thanks in advance!
SeanHi Sean,
I don't think there is such a feature available. This is standard behaviour in SBO - same for UI and DI API. The first problem/error found will abort the action and message is shown and in this case it is one action ( interact).
regards,
Maik
Maybe you are looking for
-
My serial number is registered to different apple ID?
I looked at my 3 apple ID support profiles today and noticed my iPad and iPhone are not registered. When I tried to add them, I get a response letting me know they have been registered to a different apple ID. What? How do I correct this and/or find
-
Hi all, I have a sound loaded that I would like to have smoothly play while a key is held down. So I have... var eSound:EngineSound = new EngineSound(); ...keypressed event, etc... if (upArrowPressed) if (eSoundPlaying == 0) eSoundChannel = eSound.pl
-
Major slowdown when playing backgammon on Yahoo Games
Around the 3rd game I play everything slows to a crawl, getting gradually slower until I am forced to quit the game. I am using Firefox as my browser, haven't tried this on Safari, if that makes a difference. Help will be greatly appreciated.
-
Can't get ipad to charge in car ups port
Can't get ipad to charge in ups port in car all other phone and others charge
-
Drop navigation links to 2 lines for phone size
Hi everyone, Happy Thursday (Or brain dead Thursday for me)! I'm working on a new "responsive" project. Being a new project, I'm starting with the smallest width and working my way up. I have a simple navigation at the top of the page with six text