Catch faultVariable to Reply fault

Hello.
I catch fault
<catch faultName="bpelx:invalidVariables"
faultVariable="inputError">
and I want to send this fault to client by reply
<reply name="Reply_2" partnerLink="client"
portType="client:P_msg"
operation="push"
variable="push_OutputVariable"
faultName="bpelx:invalidVariables"/>
but all I get is
<env:Fault xmlns:bpelx="http://schemas.oracle.com/bpel/extension">
<faultcode>bpelx:invalidVariables</faultcode>
<faultstring>business exception</faultstring>
<faultactor>cx-fault-actor</faultactor>
How can I move fault infromations to client.
Have I create push_OutputVariable as RuntimeFaultMessage type and assign values from faultVariable inputError.
Thank you.

You probably forgot to include a 'reply' activity within the sequence in your exception.
Make sure you have some elements in the output type of the BPEL process in your XSD where you can put your error information. In the exception sequence, first use copy rules in an assign to copy the error information to your process output. Then add a reply activity to send the result back to your client.
Simple example:
<catch faultName="bpelx:remoteFault" faultVariable="RemoteFaultVar">
      <sequence name="remoteFaultSequence">
        <assign name="setServiceBericht">
          <copy>
            <from expression="number(bpws:getVariableData('RemoteFaultVar','code'))"/>
            <to variable="outputVariable" part="payload"
                query="/client:bpSaveChecklistProcessResponse/client:serviceCode"/>
          </copy>
          <copy>
            <from variable="RemoteFaultVar" part="summary"/>
            <to variable="outputVariable" part="payload"
                query="/client:bpSaveChecklistProcessResponse/client:serviceBericht"/>
          </copy>
        </assign>
        <reply name="replyOutput" partnerLink="client"
               portType="client:bpSaveChecklist" operation="process"
               variable="outputVariable"/>
      </sequence>
</catch>HTH,
Bas

Similar Messages

  • How to catch the exact validation fault message?

    Hi experts,
    I would like to catch the exact validation fault message.
    If the validate operation fails then I get the next SOAP Fault:
    <env:Fault xmlns:ns0="http://docs.oasis-open.org/wsbpel/2.0/process/executable">
    <faultcode>ns0:invalidVariables</faultcode>
    <faultstring>faultName: {{http://docs.oasis-open.org/wsbpel/2.0/process/executable}invalidVariables}
    messageType: {{http://schemas.oracle.com/bpel/extension}RuntimeFaultMessage}</faultstring>
    <faultactor/>
    <detail>
    <exception/>
    </detail>
    </env:Fault>
    However In the enterprise manager (audit trail) I can see the next message at the failed validate operation:
    Invalid data: The value for variable "req_ProcessAdjustmentOp", part "bodyUPI" does not match the schema definition for this part Invalid text '?' in element: 'date'. The invalid xml document is shown below:
    I would like to send back this message to the service consumer as it contains more information about the error. How could I do that? I've already tried the ora:getFaultAsString() function but I got the original fault.
    Thanks,
    Viktor

    Hi Arik,
    I tried to catch the invalidVariables exception but I couldn't... Here is my BPEL source would you be so kind to have a look at it?
    Thanks!
        <scope name="Scope_validate_req_ReceiveAdjustmentOp" exitOnStandardFault="no">
          <variables>
            <variable name="v_RuntimeFaultMessage" messageType="bpelx:RuntimeFaultMessage"/>
          </variables>
          <faultHandlers>
            <catch faultName="bpel:invalidVariables"
                   faultVariable="v_RuntimeFaultMessage"
                   faultMessageType="bpelx:RuntimeFaultMessage">
              <sequence>
                <empty name="Empty2"/>
                <assign name="Assign1"
                        xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable">
                  <copy>
                    <from>$v_RuntimeFaultMessage.detail</from>
                    <to>$f_validate</to>
                  </copy>
                </assign>
                <rethrow name="Rethrow1"
                         xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"/>
              </sequence>
            </catch>
            <catch faultName="bpelx:invalidVariables"
                   faultVariable="v_RuntimeFaultMessage"
                   faultMessageType="bpelx:RuntimeFaultMessage">
              <sequence name="Sequence5">
                <empty name="Empty3"/>
                <assign name="Assign1">
                  <copy>
                    <from>$v_RuntimeFaultMessage.detail</from>
                    <to>$f_validate</to>
                  </copy>
                </assign>
                <rethrow name="Rethrow1"/>
              </sequence>
            </catch>
          </faultHandlers>
          <sequence name="Sequence4">
            <if name="by_operation">
              <documentation>sv_operation = "ProcessAdjustment"</documentation>
              <condition>$sv_operation = $C_OP_ProcessAdjustment</condition>
              <sequence name="Sequence6">
                <empty name="Empty4"/>
                <validate name="Validate_req_ReceiveAdjustmentOp"
                          variables="req_ProcessAdjustmentOp"/>
              </sequence>
              <elseif>
                <documentation>sv_operation = "ProcessReceipt"</documentation>
                <condition>$sv_operation = $C_OP_ProcessReceipt</condition>
                <empty name="Empty1"/>
              </elseif>
            </if>
          </sequence>
        </scope>

  • EJB adapter errors are not catched by the composite fault handler

    Hi,
    I got a serious problem in soa suite 11g ps3 that ejb adapter failures are not catched by the soa suite fault framework.
    for example when I do a persist of an entity on a EJB session bean and I dont provide all required fields I get a rollback error when the BPEL component is finished.
    Instance ID bpel:142089
    The transaction was rolled back. The work performed for bpel instance "142089" was rolled back, but the audit trail has been saved for this instance
    Error Code: 1400
    Call: INSERT INTO INFORMATIELEVERINGEN (ID, DATUM_BEWAREN_TOT, BEWAARTERMIJN_IN_DAGEN, GEBRUIKER, ADRES_WAARNAAR_VERSTUURD, OUTPUTPRODUCT_TYPE, INTERMEDIAIR_PRODUKT, INHOUD_VERSTREKKING, RIN_ID, DETAIL_3, DETAIL_1, DETAIL_2, KETEN_OBJECT_TYPE, ORG_ID, TIG_ID, DATUM_SAMENSTELLING, KETEN_OBJECT_ID) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
    bind => [314, null, null, null, test, null, null, null, null, null, null, null, null, 1, 1, 2011-09-27, 42]
    Query: InsertObjectQuery([email protected])
    This error contained an exception thrown by the message handler.
    Check the exception trace in the log (with logging level set to debug mode).
    ORABPEL-05002
    Message handle error.
    error while attempting to process the message "com.collaxa.cube.engine.dispatch.message.invoke.InvokeInstanceMessage"; the reported exception is: Error committing transaction:; nested exception is: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.1.2.v20101206-r8635): org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLIntegrityConstraintViolationException: ORA-01400: cannot insert NULL into ("VSG"."INFORMATIELEVERINGEN"."OUTPUTPRODUCT_TYPE")
    what I did is to set idemponent = false on the partnerlink but then the invoke fails instead of the bpel ( same error ) and still no compensate or catch in bpel.
    Added the fault policies to the composite and rethrowed the error to BPEL. Still no luck.
    But then replaced the EJB adapter with the db adapter which does the same insert as the EJB and I got a nice bpelx:bindingFault which I can catch and handle.
    thanks

    Here is the total error message
    [2011-09-29T19:33:28.316+02:00] [soa_server1] [ERROR] [] [oracle.soa.bpel.engine.dispatch] [tid: orabpel.invoke.pool-4.thread-3] [userId: <anonymous>] [ecid: 4af4f9da03d6b2c4:-1e444ff3:132b61dbaea:-8000-0000000000000312,0:1:100000005] [APP: soa-infra] failed to handle message[[
    java.sql.SQLIntegrityConstraintViolationException: ORA-01400: Kan geen NULL invoegen in ("HR"."INFORMATIELEVERINGEN"."OUTPUTPRODUCT_TYPE").
         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:457)
         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:405)
         at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:889)
         at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:476)
         at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:204)
         at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:540)
         at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:217)
         at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1079)
         at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1466)
         at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3752)
         at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3887)
         at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1508)
         at weblogic.jdbc.wrapper.PreparedStatement.executeUpdate(PreparedStatement.java:172)
         at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:788)
         at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeNoSelect(DatabaseAccessor.java:863)
         at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:583)
         at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:526)
         at org.eclipse.persistence.internal.sessions.AbstractSession.executeCall(AbstractSession.java:980)
         at org.eclipse.persistence.internal.sessions.IsolatedClientSession.executeCall(IsolatedClientSession.java:131)
         at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:206)
         at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:192)
         at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.insertObject(DatasourceCallQueryMechanism.java:341)
         at org.eclipse.persistence.internal.queries.StatementQueryMechanism.insertObject(StatementQueryMechanism.java:162)
         at org.eclipse.persistence.internal.queries.StatementQueryMechanism.insertObject(StatementQueryMechanism.java:177)
         at org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.insertObjectForWrite(DatabaseQueryMechanism.java:465)
         at org.eclipse.persistence.queries.InsertObjectQuery.executeCommit(InsertObjectQuery.java:80)
         at org.eclipse.persistence.queries.InsertObjectQuery.executeCommitWithChangeSet(InsertObjectQuery.java:90)
         at org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.executeWriteWithChangeSet(DatabaseQueryMechanism.java:290)
         at org.eclipse.persistence.queries.WriteObjectQuery.executeDatabaseQuery(WriteObjectQuery.java:58)
         at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:740)
         at org.eclipse.persistence.queries.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:643)
         at org.eclipse.persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWorkObjectLevelModifyQuery(ObjectLevelModifyQuery.java:108)
         at org.eclipse.persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWork(ObjectLevelModifyQuery.java:85)
         at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2908)
         at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1291)
         at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1273)
         at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1233)
         at org.eclipse.persistence.internal.sessions.CommitManager.commitNewObjectsForClassWithChangeSet(CommitManager.java:224)
         at org.eclipse.persistence.internal.sessions.CommitManager.commitAllObjectsWithChangeSet(CommitManager.java:123)
         at org.eclipse.persistence.internal.sessions.AbstractSession.writeAllObjectsWithChangeSet(AbstractSession.java:3348)
         at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabase(UnitOfWorkImpl.java:1422)
         at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.commitToDatabase(RepeatableWriteUnitOfWork.java:610)
         at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabaseWithChangeSet(UnitOfWorkImpl.java:1527)
         at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.issueSQLbeforeCompletion(UnitOfWorkImpl.java:3181)
         at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.issueSQLbeforeCompletion(RepeatableWriteUnitOfWork.java:332)
         at org.eclipse.persistence.transaction.AbstractSynchronizationListener.beforeCompletion(AbstractSynchronizationListener.java:157)
         at org.eclipse.persistence.transaction.JTASynchronizationListener.beforeCompletion(JTASynchronizationListener.java:68)
         at weblogic.transaction.internal.ServerSCInfo.doBeforeCompletion(ServerSCInfo.java:1239)
         at weblogic.transaction.internal.ServerSCInfo.callBeforeCompletions(ServerSCInfo.java:1214)
         at weblogic.transaction.internal.ServerSCInfo.startPrePrepareAndChain(ServerSCInfo.java:116)
         at weblogic.transaction.internal.ServerTransactionImpl.localPrePrepareAndChain(ServerTransactionImpl.java:1316)
         at weblogic.transaction.internal.ServerTransactionImpl.globalPrePrepare(ServerTransactionImpl.java:2132)
         at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:272)
         at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:239)
         at weblogic.ejb.container.internal.BaseLocalObject.postInvoke1(BaseLocalObject.java:622)
         at weblogic.ejb.container.internal.BaseLocalObject.__WL_postInvokeTxRetry(BaseLocalObject.java:455)
         at weblogic.ejb.container.internal.SessionLocalMethodInvoker.invoke(SessionLocalMethodInvoker.java:52)
         at com.collaxa.cube.engine.ejb.impl.bpel.BPELDeliveryBean_5k948i_ICubeDeliveryLocalBeanImpl.handleInvoke(Unknown Source)
         at com.collaxa.cube.engine.dispatch.message.invoke.InvokeInstanceMessageHandler.handle(InvokeInstanceMessageHandler.java:35)
         at com.collaxa.cube.engine.dispatch.DispatchHelper.handleMessage(DispatchHelper.java:140)
         at com.collaxa.cube.engine.dispatch.BaseDispatchTask.process(BaseDispatchTask.java:88)
         at com.collaxa.cube.engine.dispatch.BaseDispatchTask.run(BaseDispatchTask.java:64)
         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:662)
    [2011-09-29T19:33:28.332+02:00] [soa_server1] [ERROR] [] [oracle.soa.bpel.engine.dispatch] [tid: orabpel.invoke.pool-4.thread-3] [userId: <anonymous>] [ecid: 4af4f9da03d6b2c4:-1e444ff3:132b61dbaea:-8000-0000000000000312,0:1:100000005] [APP: soa-infra] Failed to handle dispatch message ... exception ORABPEL-05002[[
    Message handle error.
    error while attempting to process the message "com.collaxa.cube.engine.dispatch.message.invoke.InvokeInstanceMessage"; the reported exception is: Error committing transaction:; nested exception is: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.1.2.v20101206-r8635): org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLIntegrityConstraintViolationException: ORA-01400: Kan geen NULL invoegen in ("HR"."INFORMATIELEVERINGEN"."OUTPUTPRODUCT_TYPE").
    Error Code: 1400
    Call: INSERT INTO INFORMATIELEVERINGEN (ID, DATUM_BEWAREN_TOT, BEWAARTERMIJN_IN_DAGEN, GEBRUIKER, ADRES_WAARNAAR_VERSTUURD, OUTPUTPRODUCT_TYPE, INTERMEDIAIR_PRODUKT, INHOUD_VERSTREKKING, RIN_ID, DETAIL_3, DETAIL_1, DETAIL_2, KETEN_OBJECT_TYPE, ORG_ID, TIG_ID, DATUM_SAMENSTELLING, KETEN_OBJECT_ID) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
         bind => [7, null, null, null, test, null, null, null, null, null, null, null, null, 1, 1, 2011-09-29, 42]
    Query: InsertObjectQuery(nl.justid.verstrekkingen.model.entity.Informatielevering@2499c09)
    This error contained an exception thrown by the message handler.
    Check the exception trace in the log (with logging level set to debug mode).
    ORABPEL-05002
    Message handle error.
    error while attempting to process the message "com.collaxa.cube.engine.dispatch.message.invoke.InvokeInstanceMessage"; the reported exception is: Error committing transaction:; nested exception is: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.1.2.v20101206-r8635): org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLIntegrityConstraintViolationException: ORA-01400: Kan geen NULL invoegen in ("HR"."INFORMATIELEVERINGEN"."OUTPUTPRODUCT_TYPE").
    Error Code: 1400
    Call: INSERT INTO INFORMATIELEVERINGEN (ID, DATUM_BEWAREN_TOT, BEWAARTERMIJN_IN_DAGEN, GEBRUIKER, ADRES_WAARNAAR_VERSTUURD, OUTPUTPRODUCT_TYPE, INTERMEDIAIR_PRODUKT, INHOUD_VERSTREKKING, RIN_ID, DETAIL_3, DETAIL_1, DETAIL_2, KETEN_OBJECT_TYPE, ORG_ID, TIG_ID, DATUM_SAMENSTELLING, KETEN_OBJECT_ID) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
         bind => [7, null, null, null, test, null, null, null, null, null, null, null, null, 1, 1, 2011-09-29, 42]
    Query: InsertObjectQuery(nl.justid.verstrekkingen.model.entity.Informatielevering@2499c09)
    This error contained an exception thrown by the message handler.
    Check the exception trace in the log (with logging level set to debug mode).
         at com.collaxa.cube.engine.dispatch.DispatchHelper.handleMessage(DispatchHelper.java:207)
         at com.collaxa.cube.engine.dispatch.BaseDispatchTask.process(BaseDispatchTask.java:88)
         at com.collaxa.cube.engine.dispatch.BaseDispatchTask.run(BaseDispatchTask.java:65)
         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:887)
         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:909)
         at java.lang.Thread.run(Thread.java:662)
    ]]

  • Unable to get Fault in reply from Synchronous BPEL Process

    Hi All,
    I am using a synchronous BPEL process which always throws a fault. The structure of this fault message is added to <bpel_process_name>.xsd.
    For WSDL faults I have added the following in .wsdl file:
    </wsdl:message>
    <wsdl:message name="BusinessFault">
    <wsdl:part name="payload" element="client:faultarea"/>
    </wsdl:message>
    <wsdl:portType name="FaultBPELProcess">
    <wsdl:operation name="process">
    <wsdl:input message="client:FaultBPELProcessRequestMessage"/>
    <wsdl:output message="client:FaultBPELProcessResponseMessage"/>
    <wsdl:fault message="client:BusinessFault" name="BusinessFault" />
    </wsdl:operation>
    </wsdl:portType>
    Now when I invoke this BPEL process, the fault is thrown and caught by the catch block at main scope. this catch assigns some values to the fault message and returns it back to the calling party.
    Fault QName is defined in the reply activity of catch block.
    On testing it, the reply never comes back and I can see the following error message in the logs:
    [2011-08-09T09:47:01.001+05:30] [soa_server1] [NOTIFICATION] [] [oracle.wsm.agent.WSMAgent] [tid: [ACTIVE].ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: <anonymous>] [ecid: 11d1def534ea1be0:53ccedc:131a8598fc1:-8000-0000000000000ed1,0:3] [WEBSERVICE_PORT.name: FaultBPELProcess_pt] [APP: soa-infra] [J2EE_MODULE.name: fabric] [WEBSERVICE.name: faultbpelprocess_client_ep] [J2EE_APP.name: soa-infra] Message Type is normalized, exiting agent.processFault()
    [2011-08-09T09:47:01.001+05:30] [soa_server1] [NOTIFICATION] [] [oracle.wsm.agent.WSMAgent] [tid: [ACTIVE].ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: <anonymous>] [ecid: 11d1def534ea1be0:53ccedc:131a8598fc1:-8000-0000000000000ed1,0:3] [WEBSERVICE_PORT.name: FaultBPELProcess_pt] [APP: soa-infra] [J2EE_MODULE.name: fabric] [WEBSERVICE.name: faultbpelprocess_client_ep] [J2EE_APP.name: soa-infra] Message Type is normalized, exiting agent.processFault()
    [2011-08-09T09:47:01.060+05:30] [soa_server1] [ERROR] [OWS-04086] [oracle.webservices.service] [tid: [ACTIVE].ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: <anonymous>] [ecid: 11d1def534ea1be0:53ccedc:131a8598fc1:-8000-0000000000000ed1,0:3] [APP: soa-infra] javax.xml.rpc.soap.SOAPFaultException[[
    at oracle.integration.platform.blocks.soap.WebServiceEntryBindingComponent.generateSoapFaultException(WebServiceEntryBindingComponent.java:1094)
    at oracle.integration.platform.blocks.soap.WebServiceEntryBindingComponent.processIncomingMessage(WebServiceEntryBindingComponent.java:887)
    at oracle.integration.platform.blocks.soap.FabricProvider.processMessage(FabricProvider.java:113)
    at oracle.j2ee.ws.server.provider.ProviderProcessor.doEndpointProcessing(ProviderProcessor.java:1187)
    at oracle.j2ee.ws.server.WebServiceProcessor.invokeEndpointImplementation(WebServiceProcessor.java:1081)
    at oracle.j2ee.ws.server.provider.ProviderProcessor.doRequestProcessing(ProviderProcessor.java:581)
    at oracle.j2ee.ws.server.WebServiceProcessor.processRequest(WebServiceProcessor.java:232)
    at oracle.j2ee.ws.server.WebServiceProcessor.doService(WebServiceProcessor.java:192)
    at oracle.j2ee.ws.server.WebServiceServlet.doPost(WebServiceServlet.java:459)
    at oracle.integration.platform.blocks.soap.FabricProviderServlet.doPost(FabricProviderServlet.java:507)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:111)
    at java.security.AccessController.doPrivileged(Native Method)
    at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313)
    at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:413)
    at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:94)
    at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:161)
    at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:136)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)
    [2011-08-09T09:47:01.061+05:30] [soa_server1] [ERROR] [OWS-04115] [oracle.webservices.service] [tid: [ACTIVE].ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: <anonymous>] [ecid: 11d1def534ea1be0:53ccedc:131a8598fc1:-8000-0000000000000ed1,0:3] [APP: soa-infra] An error occurred for port: FabricProvider: javax.xml.rpc.soap.SOAPFaultException.
    If I try to invoke the endpoint uri, it gets invoked and returns the response.
    Any pointers will be appreciated!!

    I tried the same scenario which you told and it's working for me...I'll paste the contents for your reference...
    BPELProcess.bpel
    <?xml version = "1.0" encoding = "UTF-8" ?>
    <!--
    -->
    <process name="BPELProcess1"
    targetNamespace="http://xmlns.oracle.com/Test_jws/TestSync/BPELProcess1"
    xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
    xmlns:client="http://xmlns.oracle.com/Test_jws/TestSync/BPELProcess1"
    xmlns:ora="http://schemas.oracle.com/xpath/extension"
    xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
    xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/">
    <!--
    PARTNERLINKS
    List of services participating in this BPEL process
    -->
    <partnerLinks>
    <!--
    The 'client' role represents the requester of this service. It is
    used for callback. The location and correlation information associated
    with the client role are automatically set using WS-Addressing.
    -->
    <partnerLink name="bpelprocess1_client" partnerLinkType="client:BPELProcess1" myRole="BPELProcess1Provider"/>
    </partnerLinks>
    <!--
    VARIABLES
    List of messages and XML documents used within this BPEL process
    -->
    <variables>
    <!-- Reference to the message passed as input during initiation -->
    <variable name="inputVariable" messageType="client:BPELProcess1RequestMessage"/>
    <!-- Reference to the message that will be returned to the requester-->
    <variable name="outputVariable" messageType="client:BPELProcess1ResponseMessage"/>
    <variable name="FaultVar_2" messageType="client:BusinessFault"/>
    <variable name="FaultVar" messageType="client:BusinessFault"/>
    </variables>
    <faultHandlers>
    <catch faultName="client:BusinessFault" faultVariable="FaultVar">
    <reply name="Reply_1" variable="FaultVar"
    partnerLink="bpelprocess1_client" portType="client:BPELProcess1"
    operation="process" faultName="client:BusinessFault"/>
    </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 BPELProcess1.wsdl) -->
    <receive name="receiveInput" partnerLink="bpelprocess1_client" portType="client:BPELProcess1" operation="process" variable="inputVariable" createInstance="yes"/>
    <!-- Generate reply to synchronous request -->
    <assign name="Assign_1">
    <copy>
    <from expression="'A business fault occured'"/>
    <to variable="FaultVar_2" part="payload"
    query="/client:processResponse/client:result"/>
    </copy>
    </assign>
    <throw name="Throw_1" faultName="client:BusinessFault"
    faultVariable="FaultVar_2"/>
    <reply name="replyOutput" partnerLink="bpelprocess1_client" portType="client:BPELProcess1" operation="process" variable="outputVariable"/>
    </sequence>
    </process>
    BPELProcess1.wsdl
    <?xml version= '1.0' encoding= 'UTF-8' ?>
    <wsdl:definitions
    name="BPELProcess1"
    targetNamespace="http://xmlns.oracle.com/Test_jws/TestSync/BPELProcess1"
    xmlns:ns1="http://schemas.oracle.com/bpel/extension"
    xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
    xmlns:client="http://xmlns.oracle.com/Test_jws/TestSync/BPELProcess1"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    >
    <plnk:partnerLinkType name="BPELProcess1">
    <plnk:role name="BPELProcess1Provider">
    <plnk:portType name="client:BPELProcess1"/>
    </plnk:role>
    </plnk:partnerLinkType>
    <wsdl:import namespace="http://schemas.oracle.com/bpel/extension" location="RuntimeFault.wsdl"/>
    <wsdl:types>
    <schema xmlns="http://www.w3.org/2001/XMLSchema">
    <import namespace="http://xmlns.oracle.com/Test_jws/TestSync/BPELProcess1" schemaLocation="xsd/BPELProcess1.xsd"/>
    </schema>
    </wsdl:types>
    <wsdl:message name="BPELProcess1RequestMessage">
    <wsdl:part name="payload" element="client:process"/>
    </wsdl:message>
    <wsdl:message name="BPELProcess1ResponseMessage">
    <wsdl:part name="payload" element="client:processResponse"/>
    </wsdl:message>
    <wsdl:message name="BusinessFault">
    <wsdl:part name="payload" element="client:processResponse"/>
    </wsdl:message>
    <wsdl:portType name="BPELProcess1">
    <wsdl:operation name="process">
    <wsdl:input message="client:BPELProcess1RequestMessage"/>
    <wsdl:output message="client:BPELProcess1ResponseMessage"/>
    <wsdl:fault message="client:BusinessFault" name="BusinessFault" />
    </wsdl:operation>
    </wsdl:portType>
    </wsdl:definitions>
    Hope that helps you...
    Thanks,
    N

  • Catching SOAP Faults

    Hello all,
    I need to be able to catch the standard SOAP Fault defined at http://schemas.xmlsoap.org/soap/envelope/
    I expected to be able to do it in the same way as you can for remoteFault
    example:
    <faultHandlers>
    <catch faultName="bpelx:remoteFault" faultVariable="remoteFaultVar"/>
    </faultHandlers>
    Unfortunately, there is no SOAP Fault available from the Fault explorer when creating the catch. I would have expected it to be available under the System Faults where remoteFault is located.
    Why can't BPEL handle standard SOAP 1.1 Fault elements returned from external web services?

    Thanks for the response. I did try to do it manually but was getting nowhere. Could you provide a little more detail of what is required?
    I appreciate your help. Thank you.

  • Catching invalidData fault

    This is a "beginner" question. I am using a local BPEL service as a subprocess to validate the schema of an XML document on behalf of a larger calling process. Any schema error (or the first one encountered?) is returned to the calling BPEL process as a fault generated from the BPEL runtime. From the console Audit view of the faulted process I see the fault is returned as follows:
    <invalidData xmlns="http://schemas.oracle.com/bpel/expension">
    <part name="code">9710</part>
    <part name="summary">Invalid xml document. [more info] </part>
    </invalidData>
    My question is how to catch this in the calling process and map the error info. Do I have to add bpelx:invalidData to the types section of the calling BPEL? Or do I import some external bpelx schema? My goal is to be able to "see" this element in the variable definition dialogs for referencing in other parts of the process.

    Hi Bruce,
    You can catch that fault and assign/re-throw if you want.
    Here is the procedure,
    1. first you need to define the xmlns for bpelx at the <process> level.
    xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
    2. Import the RuntimeFault.wsdl in your process wsdl, like below:
    <import namespace="http://schemas.oracle.com/bpel/extension" location="http://localhost:9700/orabpel/xmllib/RuntimeFault.wsdl"/>
    Make sure you have
    xmlns:bpelx="http://schemas.oracle.com/bpel/extension" defined in wsdl <definitions>
    3. Define a fault variable for RuntimeFaultMessage message
    <variable name="error1" messageType="bpelx:RuntimeFaultMessage"/>
    4. Catch the fault in your scope:
    <faultHandlers>
    <catch faultName="bpelx:invalidVariables" faultVariable="error1">
    <assign>
    <copy>
    <from variable="error1" part="summary"/>
    <to variable="summary"/>
    </copy>
    </assign>
    </catch>
    </faultHandlers>
    5. Here catching the bpelx:invalidVariables fault and assigning the summary part to variable called "summary"
    <variable name="summary" type="xsd:string"/>...Instead
    if you want, you can throw the fault also.
    <throw name="throwInvalidDataFault" faultName="bpelx:invalidVariables" faultVariable="error1"/>

  • Exception Handling In BPEL  By using Catch Blocks or Fault Policies Or Both

    I have a confusion regarding
    Exception handling :
    When Should i go for 1)Catch Block (Remote , or binding ) in bpel for exception handling .
    2)Fault Policy , Fault binding.xml
    Currently iam using catch blocks , but even fault policy is good , but can i use both...
    Currently in My bpel ,when any error occurs i have to send a error notification by Email .
    Currently i have exposed the email service which shuts emails and write a file with errored Message.
    Hence if any error i will catch i in a parent BPEL, i will just invoke the above email, service .
    So anybody can help me by giving the suggestion how to go for the best approach
    Edited by: anantwag on Mar 23, 2011 6:31 AM

    Currently in My bpel ,when any error occurs i have to send a error notification by Email .
    Currently i have exposed the email service which shuts emails and write a file with errored Message.Seeing your use case I will suggest you to use fault handling framework (fault policy). Fault handling framework should be used where you need generic error handling framework which handles all the faults occured in any composite component. Generally BPEL catch block should be used to propagate error info/fault back to the client/to fault handling framework or to consume an error
    Regards,
    Anuj

  • RFC to SOAP fault message not catched

    Hi All
    I have a scenario where RFC is being send from ECC system I then call a web service, The webservice returns me a fault error messages when for example the order on the webservice system does not exist.
    I created a exception in the RFC and created the mapping for the fault message.
    When call ing the webservice I get error in comunication chanell:
    Message processing failed. Cause: com.sap.engine.interfaces.messaging.api.exception.MessagingException: SOAP: response message contains an error XIAdapter/HTTP/ADAPTER.HTTP_EXCEPTION - HTTP 500 Internal Server Error
    I have tried adding:
    XMBWS.NoSOAPIgnoreStatusCode    =     true
    In the modules tab but still not getting soap fault.
    below is response from webservice if I use other soap client:
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
       <soap:Body>
          <soap:Fault>
             <faultcode>soap:Client</faultcode>
             <faultstring>Unmarshalling Error: cvc-minLength-valid: Value '' with length = '0' is not facet-valid with respect to minLength '1' for type 'nonEmptyExternalReference'.</faultstring>
          </soap:Fault>
       </soap:Body>
    </soap:Envelope>

    Hi,
    I don't think so you can catch 500 internal server errors using falut messages.
    Your target system has to capable of sending error messages in valid XML format then only you can catch them.coming too fault message concept we will implement in ABAP server proxies scenarios where we have a opportunity to catch errors in send as response. but i doubt in SOAP receiver scenarios.
    Regards,
    Raj

  • Fault Handling in 11g

    Hi,
    I am new to this bpel.I want to ask a basic question regarding bpel fault handling management frmawork ..
    My BPELProcess1 has just a throw activity with receive and reply activity.and I throw a bindingfault there.
    Then I added two xml files(fault-policies and fault-binding) where composite.xml resides and added property elment in the composite.xml.
    So,I think here fault policy and binding will work fine .But when I execute it I don't find any recovery option in em console.
    fault-binding.xml ->
    <?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">
    <component faultPolicy="myFaultHandling">
    <name>BPELProcess1</name>
    </component>
    </faultPolicyBindings>
    and fault-policies.xml file looks like
    <?xml version="1.0" encoding="UTF-8"?>
    <faultPolicies xmlns="http://schemas.oracle.com/bpel/faultpolicy">
    <faultPolicy version="2.0.1" id="mylFaultHandling"
    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:bindingFault">
    <condition>
    <action ref="ora-human-intervention"/>
    </condition>
    </faultName>
    </Conditions>
    <Actions>
    <Action id="ora-human-intervention">
    <humanIntervention/>
    </Action>
    </Actions>
    </faultPolicy>
    </faultPolicies>
    and added this to the composite.xml
    <property name="oracle.composite.faultPolicyFile">fault-policies.xml</property>
    <property name="oracle.composite.faultBindingFile">fault-bindings.xml</property>
    My question is
    1.Do I need to add a catch/catchAll block in bpel file ?and I want to know is it only a substitute mechanism to avoid catch/catchAll blok..
    2>Is there any way that I can catch the all project fault in a single framework by configuring em console rather than adding catch block or policy xml in each project ?
    Edited by: blue bell on May 3, 2011 4:46 AM

    Hi,
    +2>Is there any way that I can catch the all project fault in a single framework by configuring em console rather than adding catch block or policy xml in each project ?+
    For define the fault policies at the global level for all you project composites...u share the fault-policies.xml,fault-bindings.xml from mds and apply them to each composite.

  • System Fault handler

    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,
    Sreejit

    Hi 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

  • Handling invalidVariable fault caused by onMessage

    Hello.
    I have many receive activities in my process. Each receive activity is in scope with catch activity which handle invalidVariable fault (validating XML). When incorrect message come to receive invalidVariable fault is thrown. Catch activity handle this fault and reply to client with error message. And scope with receive activity is looped back until correct message is received.
    But how can I handle invalidVariable fautl caused by onMessage branch on whole proces?
    Thanks

    Right. for InvalidVariable the scope (and therefore the onMessage) will always terminate.
    You will have to catch it outside the scope, and loop around.
    process[ receive, while [ scope_with_catch [ scope_with_onMessage [ stuff ] ] ] ]
    The nasty consequence is that the "stuff" will also restart at the beginning when the loop comes around, and not just simply continue.
    The "stuff" code will therefore need to detect if this is a restart and act accordingly.
    But generally, you should never get an "invalidVariable" fault, it suggests somebody sends the wrong message?

  • TRY..catch block in a loop.

    Hi Epxerts,
    Can i use loop endloop for the following TRY..CATCH block as i need to send multiple records
    LOOP.
    TRY.
      Assign row
        it_prxstruc-MT_table_EXTRACT-record-row = wa_area1. --> one record of
        CALL METHOD prxy->execute_asynchronous
          EXPORTING
            output = it_prxstruc --> 1 record.
        COMMIT WORK
      CATCH cx_ai_system_fault .
        DATA fault TYPE REF TO cx_ai_system_fault .
        CREATE OBJECT fault.
        WRITE :/ fault->errortext.
    ENDTRY.
    ENDLOOP.
    Please suggest accordingly.
    Thanks
    Dany

    Try-Endtry specifies the territory of exception that catch is going to handle. Do it this way..
    TRY.
    LOOP.
    Assign row
    it_prxstruc-MT_table_EXTRACT-record-row = wa_area1. --> one record of
    CALL METHOD prxy->execute_asynchronous
    EXPORTING
    output = it_prxstruc --> 1 record.
    COMMIT WORK
    ENDLOOP.
    CATCH cx_ai_system_fault .
    DATA fault TYPE REF TO cx_ai_system_fault .
    CREATE OBJECT fault.
    WRITE :/ fault->errortext.
    ENDTRY.
    G@urav.

  • Send Fault message from SAP XI

    I have scenario: get async file from FTP. Starting BPM. From BPM I send message to SOAP service(sync). Where I recieve Fault Message. In BPM I have exception handler.
    Could any body tell how send parced Fault message to FTP.
    As I understand we need mapping somthing like "Fault message type" to "Inbound message type"

    Hi Anton,
    Its not possible to catch the data of fault message in BPM with the standard design.Since you can't make an abstract interface of the fault message.
    The option available is to parse the XML in the fault message mapping and do a call using UDF's (RFC, SOAP, JDBC calls are supported).
    cheers
    Sunil.

  • Can SOA 11g fault policy handle XSD Validation errors from the Mediator?

    I would like all errors in my SOA process to go through the fault-policies.xml. But I don't seem to be able to catch any mediator error caused by an XSD validation failure. A sample of the sort of error I am trying to 'catch' is:
    Nonrecoverable System Fault          oracle.tip.mediator.infra.exception.MediatorException: ORAMED-01303:[Payload default schema validation error]XSD schema validation fails with error Invalid text 'A' in element: 'TermCode'Possible Fix:Fix payload and resubmit.
    My fault-policies.xml file is as follows:
    <?xml version="1.0" encoding="UTF-8" ?>
    <faultPolicies xmlns="http://schemas.oracle.com/bpel/faultpolicy">
    <faultPolicy version="2.0.1"
         id="NewStudentRegistrationFaults"
    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:1303">
    <condition>
    <action ref="java-fault-handler"/>
    </condition>
    </faultName>
    <faultName xmlns:rjm="http://schemas.oracle.com/sca/rejectedmessages" name="rjm:GetNewStudentRegistrationFile">
    <condition>
    <action ref="java-fault-handler"/>
    </condition>
    </faultName>
    <faultName xmlns:medns="http://schemas.oracle.com/mediator/faults" name="medns:TYPE_ALL">
    <condition>
    <action ref="java-fault-handler"/>
    </condition>
    </faultName>
    <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension" name="bpelx:mediatorException">
    <condition>
    <action ref="java-fault-handler"/>
    </condition>
    </faultName>
    <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension" name="bpelx:bindingFault">
    <condition>
    <action ref="java-fault-handler"/>
    </condition>
    </faultName>
    <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension" name="bpelx:remoteFault">
    <condition>
    <action ref="java-fault-handler"/>
    </condition>
    </faultName>
    </Conditions>
    <Actions>
    <Action id="java-fault-handler">
    <javaAction className="edu.villanova.soa.handlers.FaultNotificationHandler"
    defaultAction="ora-human-intervention" propertySet="faultNotificationProps">
    <returnValue value="OK" ref="ora-human-intervention"/>
    </javaAction>
    </Action>
    <!-- Human Intervention -->
    <Action id="ora-human-intervention">
    <humanIntervention/>
    </Action>
    <!-- Terminate -->
    <Action id="ora-terminate">
    <abort/>
    </Action>
    </Actions>
    <!-- Property sets used by custom Java actions -->
    <Properties>
    <!-- Property set for FaultNotificationHandler customer java action -->
    <propertySet name="faultNotificationProps">
    <property name="from">[email protected]</property>
    <property name="to">[email protected]</property>
    <property name="subject">Reporting a SOA fault</property>
    </propertySet>
    </Properties>
    </faultPolicy>
    <faultPolicy version="2.0.1"
         id="MediatorFaults"
    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:1303">
    <condition>
    <action ref="java-fault-handler"/>
    </condition>
    </faultName>
    </Conditions>
    <Actions>
    <Action id="java-fault-handler">
    <javaAction className="edu.villanova.soa.handlers.FaultNotificationHandler"
    defaultAction="ora-human-intervention" propertySet="faultNotificationProps">
    <returnValue value="OK" ref="ora-human-intervention"/>
    </javaAction>
    </Action>
    <!-- Human Intervention -->
    <Action id="ora-human-intervention">
    <humanIntervention/>
    </Action>
    <!-- Terminate -->
    <Action id="ora-terminate">
    <abort/>
    </Action>
    </Actions>
    <!-- Property sets used by custom Java actions -->
    <Properties>
    <!-- Property set for FaultNotificationHandler customer java action -->
    <propertySet name="faultNotificationProps">
    <property name="from">[email protected]</property>
    <property name="to">[email protected]</property>
    <property name="subject">Reporting a SOA rejected msg. fault</property>
    </propertySet>
    </Properties>
    </faultPolicy>
    </faultPolicies>
    My fault-bindings.xml file is as follows:
    <?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="NewStudentRegistrationFaults"/>
    <component faultPolicy="MediatorFaults">
    <name>NewStudentRegistrationMediator</name>
    </component>
    <service faultPolicy="NewStudentRegistrationFaults">
    <name>GetNewStudentRegistrationFile</name>
    </service>
    </faultPolicyBindings>
    You'll notice that I've tried a number of ways (and various other combinations) to try to steer the error above into my Java fault handler but nothing has meet with success. The mplan is as follows:
    <?xml version = '1.0' encoding = 'UTF-8'?>
    <!--Generated by Oracle SOA Modeler version 1.0 at [2/3/10 1:21 PM].-->
    <Mediator name="NewStudentRegistationMediator" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.oracle.com/sca/1.0/mediator"
    wsdlTargetNamespace="http://xmlns.oracle.com/pcbpel/adapter/ftp/Experiments/NewStudentRegistration/GetNewStudentRegistrationFile%2F">
    <operation name="Get" deliveryPolicy="AllOrNothing" priority="4"
    validateSchema="true">
    <switch>
    <case executionType="queued" name="RegToBanner.insert_2">
    <action>
    <transform>
    <part name="$out.NewstudentregistrationCollection"
    function="xslt(xsl/NewStudentRegistration_To_NewstudentregistrationCollection.xsl, $in.body)"/>
    </transform>
    <invoke reference="RegToBanner" operation="insert"/>
    </action>
    </case>
    </switch>
    </operation>
    </Mediator>
    I'm a newbie to Oracle SOA. So perhaps I am missing the obvious. But I haven't read much in the documentation specifically about using the XSD validation option on the mediator and have seen nothing specifically about catching this sort of exception in the fault policy (apart from the faults I already have in my policy). Can anyone suggest what I am doing incorrectly here or perhaps whether what I am attempting to do is not possible? Thanks.
    - Cris

    Has anyone got it working yet?
    In my case, I have the following sequence:
    FileAdapter -> Mediator1 -> Mediator2->DB Adapter
    I am deliberately introducing validation error in File. Isn't it correct to assume Fault framework would get triggered at Mediator1 level since we are invoking FileAdapter service?
    I am getting a strange behaviour. If I enable XSD validation at Mediator1 level, process is Faulted with no re-try option. However, if I enable XSD validation ONLY at Mediator2 level, I get Recoverable fault. There seems to be some disconnect between documentation and reality. I am using JDeveloper 11.1.1.3.0 version and SOA Suite 11g.
    Thanks,
    Amjad.

  • Issue Commn Error msg in TRY ,,,CATCH

    Hi Experts,
    I need to issue an error message in my code. I am writng this code below in SE38 for sending outbound data extract to PI(SAP Xi).
      TRY.
      Assign row
    *loop at tzcaap into wa_zcaap.
          it_prxkna1-MT_tablename_EXTRACT-RECORD-ROW = itab2.
        it_prxkna1-MT_tablename_EXTRACT-RECORD-flag = itab1_fieldl1-filapcr.
          CALL METHOD meth_prxy->execute_asynchronous
            EXPORTING
              output = it_prxkna1.
          COMMIT WORK.
    *endloop .
        CATCH cx_ai_system_fault .
          DATA fault TYPE REF TO cx_ai_system_fault .
          CREATE OBJECT fault.
          WRITE :/ fault->errortext.
      ENDTRY.
    If PI message interface  is not set up i need to issue an error message.
    please tell me how to do this?
    thanks
    Dan

    Try this:
    DATA fault TYPE REF TO cx_ai_system_fault .
    data: gv_message type string.
    CATCH cx_ai_system_fault into fault.
    gv_message = fault->get_text( ).
    WRITE :/ gv_message.

Maybe you are looking for

  • Differences between Oracle 10G Client ODBC from 10.1.x to 10.2.x (datatype)

    What differences where implemented to Oracle 10G Clients ODBC connectivity drivers between 10G Release 1 and Release 2 concerning datatypes? I have an application that performs a qualified read returning a group of records (this is successful) and th

  • Business rules

    Hi all, I developed a program in which it take a PO input and return whether approval is required or not. During this process, Il used a decision service to actually run through the rules defined in the dictionary. I created a Rules Dictionary ,and u

  • How do I disable audio on a pdf page when opening a link that also has audio?

    Hi, I have a pdf page that has audio that plays when the page is visible. I set the "disable" audio to happen when the page is no longer visible. That works great. However, I have a link on the pdf page that opens an attached pdf page. I specifically

  • Phonememory

    HI THERE I HAVE NOKIA N97 PHONE.THE PROBLEM IS IN MY E MEMORY DRIVE DOESN'T SHOW MEMORY.WHEN EVER I CLIKE ON IT ITS SAYS MEMORY IS IN USE BUT ITS NOT USED.REST OF EVER THING IS WORKING VERY FINE LIKE DRIVE C AND MEMORY CARD. i forget to do back up an

  • Loading Flash content using loadMedia??? Or else??? Has to be XHTML 1.0 Strict and WAG valid

    I have a new project into which i have to insert SWF into an HTML page using other way that the standard Abobe way to do it. I know about Flash Satay but i have 300s Flash files to insert and dont want to reopen each of them. My HTML pages have to W3