Search code examples
oracleperformancesoabpelsoa-suite

Avoid timeout in SOA 11g with Java embedding longer than 5 minutes


I want to run a composite with a Java embedding in Oracle SOA 11g, in which there is a Java embedding activity that could last more than the SOA timeout (currently 5 minutes).

I tried dehydrating the BPEL process right before and after the Java embedding, but if the embedding takes more than 5 minutes the entire instance will fault. I even tried the checkpoint(); instruction to force dehydration from inside the embedding, but it seems to have no effect in 11g, although it produces no error when the composite is deployed, because of a bug in 11g.

Is there a way to ensure that my composite will never go into timeout?
Please keep in mind that:

  • I cannot perform the activities in the Java embedding with simple BPEL blocks
  • I cannot break down the embedding in more embedding blocks and dehydrate in between them, as there is a single Java instruction that could take longer than 5 minutes
  • I cannot change the value of 5 minutes for the SOA timeout

Solution

  • If things are timing out, maybe send a jms message and have a message bean run the Java and post its return. Have the waiting Bpel inbound jms adapter poll for the new posted message. Meaning you may have to do this fully asynch, if SOA suite process engines are timing out. This post may help as well. Note the other links at the bottom, too.

    In 12c, the transaction timeout can now be worked around with the noTransaction support of BPEL. Add the following property to the BPEL component in composite.xml: notSupported