Monday, September 21, 2009

Timeout Issue in BPEL-SOA Suite

The different time out parameter in BPEL-SOA Suite are

transaction-timeout

It is defined at two places in the SOA Suite

SOA_Oracle_Home\j2ee\home\config\transaction-manager.xml

The change of transaction time out at this configuration file is made for container level transaction.We call it global transaction time out.

and another at

SOA_Oracle_Home\j2ee\home\application-deployments\orabpel\ejb_ob_engine\orion-ejb-jar.xml

The transaction timeout defined at this configuration file is for application level.This is called as bpel Mbean transaction time out.

There are other time out properties

syncMaxWaitTime

This is deined in following configuration files

SOA_Oracle_Home\bpel\domains\domain_name\config\domain.xml


This is specific to domains in the bpel and signifies time out for synchronous bpel process only.

As per the troubleshooting guide the best way to configure these can be summarised as

transaction time out(transaction-manager.xml)> transaction time out(orion-ejb-jar.xml)>syncMaxWaitTime(domain.xml)

So it says

Global transaction time out >bpel mbean transaction time out >syncMaxWaitTimeout.



We also have time out propery in apache.That is if your bpel process is taking more than 5 minutes of time you may get a 500 internal error this is because the transaction time out defined in SOA_HOME\apache\apache\conf\httpd.conf

it is by default set to 5 mintues so after 5 minutes it will time out.One can increase that according to his requirement but it is not recommended.If a process takes long time to complete better make this process as a asynchronous process.


We have one more time out parameter in bpel

This parameter is set at partner link level

Many a time we want the functionality that our partner link should call the external web service for some period of time and if doesn't get a response it just time out.


So we can define the time out property in partner link also.

Just open the partner link wizard and move to the propery tab



As can be seen in the diagram.

This time out proerty defines the number of second to wait before getting expired.


=====================================================
These configuration were there for oc4j container however if your applications are deployed on weblogic container,the changes have to done at different configuration files.

The global transactin time out we have the time out at domain level.

It can be done at follow locations

BEA_HOME\user_projects\domains\SOADomain\config\config.xml

here it is called as timeout-seconds




Again bpel Mbeans transactions time out can be done at following location.

BEA_HOME\user_projects\apps\soaApps\BPELPM\ejb_ob_engine.jar\weblogic-ejb-jar.xml

Here the time out property is trans-timeout-seconds

You need to change it for the mbeans

CubeEngineBean, CubeDeliveryBean and MessageBean.

The ejb_ob_engine.jar need to be unpacked to make the changes.Once changed these files need to be repacked again and have to be updated from weblogic console or start the container again.The default value for the transaction time out in these beans are 120



further the syncMaxWAitTimeOut it is to be modified in the same configuration file

SOA_HOME\bpel\domains\domain_name\config\domain.xml

but now the container is different making a change in domain.xml will not make an effect for the time out.So now you need to change this from bpel console.This probably is a shortcome and is covered in 11g.

To change it from console

1. Connect to the BPEL Console.
2. Click on 'Manage BPEL Domain' in the right side top of the screen.
3. Find the syncMaxWaitTime parameter.
4. Change the parameter value and apply.

so the next time if you get any time out error in your logs just make sure if you have checked all the configurations are correct

No comments: