SOA 12c Db Adapter Polling in a clustered environment

My previous post ( DB Adapter configuration in SOA 12c) had shown the steps to configure the DB Adapter but it is observed that the DB Adapter Polling does not work correctly when records are retrieved in a clustered environment.

Example :

The Customer Order details to be picked from the Oracle Database , transformation of the data as per business scenario and then send the updated data to the target server for further processing. In a clustered environment, the DB Adapter polling will be done simultaneously by all the configured managed server at the same whereas single instance should be initiated  to retrieve the order details.

Solution:

  1.  NON XA Datasource : Do not use the XA datasource when using distributed transactions as it can cause problems with autonomous transactions such as java.sql.SQLException
  2. Distributed Polling :  While configuring the DB Adapter , select the option for the Distributed Polling
  3. DB Adpater Plan.xml : Ensure that once the configuration of DB Adapter in the Weblogic Server is being done,  update the Plan.xml file (deployment plan for the DbAdapter) to the other managed server
  4.  Singleton Property in Composite: To enable for high availability environment for a inbound database adapter , add the singleton JCA service binding property in the composite.xml with value as ‘true’
    <binding.jca config="readDataFromDB.jca">
        <property name="singleton">true</property>
    </binding.jca>