Based on the article "How to terminate an instance after transaction rollback and return response to caller" published on blogs.oracle.com i created a similar composite.
What i am trying to accomplish is that when a asychronous service is invoked, an callback is executed even if the duration of the services takes longer than the BPEL EJB Timeout.
The composite has two bpel processes, Test_B_Bpel and watchdog.
Test_B_Bpel is asynchronous and has a correlationset with property aliasses on the Receive and Invoke.
The flow of Test_B_Bpel is;
- Dehydtrate
- Invoke a third synchronous BPEL which takes more slightly less than 45 seconds (the rsync timeout) to complete.
- Wait 200 seconds
- Invoke an fourth webservice which will return a remotefault
- Invoke the watchdog bpel process.
- Throw a rollback
In an eventhandler (OnEvent) the Invoke is executed, whereafter the instance is terminated.

The bpel process watchdog has the property ' bpel.config.transaction = requiresnew' and invokes the operation in Test_B_Bpel triggering the OnEvent eventhandler.
This works fine as long as the lifetime of the instance is less than the BPEL EJB Timeout.
When the transaction of the Test_B_Bpel takes more than the BPEL EJB Timeout the callback is never received.

Is there something i missed in the article, or is the article wrong ?