Custom Search SOABYTE here

Monday, March 8, 2010

SOA Suite 11g: weblogic.transaction.internal.TimedOutException: Transaction timed out after 299 seconds

We have a BPEL process that has a couple of DB Adapter invocations in it. The first one calls a stored procedure and takes a long time to execute (over 5 minutes). In the BPEL process are invoked consecutively the respective procedure and then are made a few more invokes to the database for selecting of records in tables (they are passing quickly). When starting this process, after getting the result from the first invoke of DB Adapter (the slow procedure) and make the second Invoke (the quick select) we get error "JTA transaction is not present or the transaction is not in active state."

Everything, whatever you do in SOA suite runs inside a JTA transactions at runtime (read everything that goes through BPEL, Mediator or is initiated by an adapter)
In SOA Suite 10.1.3 on OC4J - there were two knobs that people could tweak to prolong the time of a jta-transaction. The global jta transaction timeout could be set in transaction-manager.xml.
Now BPEL PM overwrote this setting in its own EJBs - e.g. Dispatcher Bean, Cube Engine and Delivery Bean. So the change could be done in $SOA_SUITE_HOME/j2ee\\application-deployments\orabpel\ejb_ob_engine\orion-ejb-jar.xml
As OESB used User Managed Transactions, the setting there was in $SOA_SUITE_HOME\integration\esb\config esb_config.ini - namely through xa_timeout

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.


Post a Comment

Blogger Profile