Wednesday, February 4, 2009

BPEL transaction timeout error

In some scenarios where BPEL process takes a long time for processing records, it may encounter timeout-errors like com.oracle.bpel.client.delivery.ReceiveTimeOutException. The transaction of the process will be rolled back and as a result of this BPEL process instances will not get created in BPEL console. The solution lies in configuring the Transaction timeout property at multiple places relevant to the BPEL process manager so that BPM allows the process to complete the processing of records without timing out the operation.

1. Configure the transaction-timeout property in Oracle_Home\j2ee\oc4j_instance\config\transaction-manager.xml. For example 7200 secs –(2 hours) would be good enough.

2. Cluster Toplogy -> [Oc4j_instance] -> Administration -> Transaction Manager (JTA) -> Administration -> Transaction Timeout. Here Oc4j_instance will be the one where Orabpel is deployed.

3. Configure the syncMaxWaitTime property in Oracle_Home\bpel/domains/domain_name/config/domain.xml. for example set 600 sec (10 min) if you expect your BPEL process instance to finish within this time frame.

Refer the section Setting Properties for BPEL Processes to Successfully Complete and Catch Exception Errors


Restart the oc4j for changes to reflect. Cheers J

4 comments:

grd said...

Hi, how do we fix the same prob (timeout error) on the 11g suite? My bpel process invokes an external loan approval app through a ws call and should wait no more than 3 days for an approval/rejection before it can decide on how to proceed with a loan application. The bpel client service goes into timeout everytime. Would appreciate any help you could extend. Thanks!

grd said...

On http://blogs.oracle.com/soabpm/soa_suite/111120_ps1/ it says...

On weblogic in SOA Suite 11g - the same idea applies, except that the place to set those is little different. Globally, the transaction timeout can be set via the weblogic console / JTA and for BPEL specific beans, go to deployments / scroll to soa-infra and expand it. Now scroll down to EJBs and find "BPELEngineBean" - in the configuration section, all the way down you find the transaction timeout - set to 300 seconds by default.

Didn't work though.

Georgie said...

try this link

http://soasol.blogspot.com/2009/10/how-to-define-transaction-timeout-for.html

Georgie said...

http://orasoa.blogspot.com/2010/04/soa-11g-timeout-settings.html