How to avoid BPEL errors due to adapters response time

Friday, January 29, 2010

If BPEL adapter response is slow then you may notice follwing error in the container logfile from ORACLE_HOME\opmn\logs\.

ORABPEL-05002
ORABPEL-02182
JTA transaction is not present the transaction is not in active state
Message handle error


Cause:
The adapter response time is greater than the predefined waiting time for a BPEL instance, therefore the BPEL instance does not get dehydrated in due time and fails by throwing above mentioned errors.

Solution:
Option I
Explicitely dehydrate your BPEL instance before invoking the adapter.
This can be done by inserting a Java_embedded activity before the Invoke, with this tiny java code: checkpoint();. This will dehydrate the BPEL instance after its initiation without waiting it to complete And you will see it in the BPEL Console in pending status(waiting for the adapter response).

Option II
Increase the transaction timeout values in order to make the BPEL instance to wait more time until a response returns from the adapter.

Step I: Go to Oracle_Home\j2ee\\config\transaction-manager.xml and set transaction-timeout for example to 7200 or more (default is 30).

Step II: Go to Oracle_Home\j2ee\\application-deployments\orabpel\ejb_ob_engine\orion-ejb-jar.xmla and set all transaction-timeout to 3600 or more (but less than value set in step I)

Step III: Go to Oracle_Home\bpel\domains\\config\domain.xml and set syncMaxWaitTime to 240 or more (but less than above 3600, step II, current default is 45)

Step IV (Optional): Add following properties to the partnerlink in your BPEL project, in order to make the adapter retriable:

retryInterval --30
retryMaxCount -- 20

Step V: Redeploy the BPEL project

Step VI: Restart SOA server & verify.

  © Blogger templates Newspaper by Ourblogtemplates.com 2008

Back to TOP