Error Using fatalErrorFailoverProcess to Handle Inbound Adapter Fatal Errors in ESB (Doc ID 1180934.1)

Last updated on AUGUST 30, 2010

Applies to:

Oracle ESB - Version: 10.1.3.1 to 10.1.3.5 - Release: AS10gR3 to
Information in this document applies to any platform.

Symptoms

Error while using activation agent's property fatalErrorFailoverProcess to handle inbound adapter fatal errors in ESB/BPEL.

The following scenario describes the error encountered in using fatalErrorFailoverProcess to handle inbound adapter fatal errors in ESB.

1. Create a BPEL process, BPELFatalErrorFailOverProcess to handle inbound adapter fatal errors. [Refer to Technote ‘http://www.oracle.com/technetwork/testcontent/adapter-tn-004-adapter-errormanagem-132565.pdf’ section ‘Adapter Fatal Error Failover BPEL Process’].

2. Create a database table TEST_EMP:

DBTable Script : CREATE TABLE TEST_EMP
(
EMP_ID number,
EMP_NAME VARCHAR2(100 BYTE),
ADDRESS VARCHAR2(1000 BYTE)
);

3. Create a database Adapter using ESB (say TestDBAdapter) to poll rows of table TEST_EMP.

4. Create below end point properties in inbound adapter service to call fatalErrorFailoverProcess:

<endpointProperties>
<property name="java.naming.factory.initial" value="com.evermind.server.rmi.RMIInitialContextFactory"/>
<property name="java.naming.provider.url" value="opmn:ormi://<soa hostname>:<opmn request port>:<soa container name>/orabpel"/>
<property name="java.naming.security.principal" value="oc4jadmin"/>
<property name="java.naming.security.credentials" value="password"/>
<property name="fatalErrorFailoverProcess" value="wsif://http://<soa hostname:soa port>/orabpel/default/BPELFatalErrorFailOverProcess/<BPEL Process Revision>/BPELFatalErrorFailOverProcess?wsdl|initiate|payload"/>
</endpointProperties>

5. Insert a row into table ‘TEST_EMP’. Rows get polled successfully by the database adapter.  Ensure that ESB Instances are created successfully.

6. Test for fatal error:

a. Alter table to generate fatal error:
alter table TEST_EMP modify(emp_id varchar2(100 byte),emp_name number);
b. Insert row into table ‘TEST_EMP’.

Test Result:
i. Database adapter does not poll Rows.
ii. BPELFatalErrorFailOverProcess process is not invoked.

Following errors are generated in log.xml:

<PAYLOAD>
<MSG_TEXT>JCA inbound adapter service listener for "DefaultSystem.TestDB_RS.receive" with endpoint ID "[TestDB_ptt::receive(TestEmpCollection)]" has been requested to shutdown by Resource Adapter due to fatal error. Reason : ORABPEL-11624
DBActivationSpec Polling Exception.
Query name: [TestDB], Descriptor name: [TestDB.TestEmp]. Polling the database for events failed on this iteration. [Caused by: ORA-01722: invalid number]
If the cause is something like a database being down successful polling will resume once conditions change. Caused by Exception [TOPLINK-4002] (Oracle TopLink - 10g Release 3 (10.1.3.4.0) (Build 080602)): oracle.toplink.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: ORA-01722: invalid number
Error Code: 1722
Call:SELECT EMP_ID, EMP_NAME, ADDRESS FROM TEST_EMP ORDER BY EMP_ID ASC
Query:ReadAllQuery(receive_1277250102989.TestDB.TestEmp).
</MSG_TEXT>
</PAYLOAD>

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms