How to Define Transaction Timeout for BPEL on Weblogic ?

Consider following scenario : you want to force a BPEL to wait for maximum of 3 (180 seconds) minutes to get reply from a Partner Link.  You can set the following timeouts :
a) syncMaxWaitTime to 180;
b) for CubeEngineBean, CubeDeliveryBean and MessageBean to 240 (best is to set it 1-2 minutes more than the syncMaxWaitTime)
c) Global JTA Timeout to 300

As a general rule, you should have following relation between the timeout parameters:

syncMaxWaitTime < BPEL MBean transaction timeout < Global Transaction Timeout

 1. Setting the global transaction timeout on Weblogic domain level :
  • Login to Weblogic console (http://host:port/console);
  • Select Services > JTA from the left pane;
  • Select JTA tab in the right pane;
  • Change the parameter:
    Timeout Seconds  (specifies the time in which a transaction will timeout, if uncommitted);
All steps described above can be done by editing directly BEA_HOME\user_projects\domains\SOADomain\config\config.xml and changing the value in section:

<jta>
<timeout-seconds>300</timeout-seconds>
</jta>

2. Setting the transaction timeout for BPEL application in the deployment descriptor :
  • Go to BEA_HOME\user_projects\apps\soaApps\BPELPM;
  • Make a backup of ejb_ob_engine.jar (if anything goes wrong just put back the original ejb_ob_engine.jar);
  • Open the ejb_ob_engine.jar (for example in WinZip) and edit weblogic-ejb-jar.xml ;
  • Change the for the following MBeans : CubeEngineBean, CubeDeliveryBean and MessageBean;
    Save weblogic-ejb-jar.xml and repack the JAR (this is done automatically in WinZip);
  • Go to Weblogic Console -> Deployments and Lock&Edit;
  • Select BPELPM and Update it -> this will force a redeployment of the JARs;
  • Click Activate Changes (at this steps there might be some errors in Weblogic Console
    but afternext there will be no problems);
  •  Stop the SOA server and start it again;
  • After SOA server is started go to Deployments section and check if BPELPM is "Active". If not just start it from here by selecting and and cliking on "Start -> Servicing all requests".
3. Setting syncMaxWaitTime:

  • This property sets the maximum time the process result receiver waits for a result before returning;
  • Can be changed via BPEL Console -> Manage BPEL Domain (10.1.3.3) / Configuration (10.1.3.4);
  • Scroll down to find syncMaxWaitTime parameter. Change the parameter setting and click 'Apply' in lower right corner of the screen;
Related post about how to Set a Timeout for a WS invocation in BPEL

Posted in Labels: , |

3 comments:

  1. Anonymous Says:

    The safe answer ;)

  2. Anonymous Says:

    Your blog keeps getting better and better! Your older articles are not as good as newer ones you have a lot more creativity and originality now keep it up!

  3. Anonymous Says:

    Just what i've been looking for, for weeks now!!! Thanks! =)