Recently I came across an issue in the Oracle community site related
to behaviour of transactions in BPEL component. The issue was when a
BPEL component is having a database call followed by a synchronous
webservice call. Though the database call is part of the XA transaction
that is started when BPEL instance is created, the database changes are
not getting rolled back incase of Exception after the webservice call.
This happens only when the nonBlockingInvoke property is set to TRUE for
the webservice invoke activity. If nonBlockingInvoke property is set to
FALSE the database changes are getting rolled back as expected.
In
one of the old Oracle documentation it is mentioned that, the invoke
activity of a synchronous service with nonBlockingInvoke property set to
true, will create a "New Transaction". That could be the reason why the
previous database adapter call has got commited before the Webservice
invocation. So rollback of database changes has not happened.
It was interesting to know this. The key takeaway is to be careful to check whether the properties we define while implementations meets the requirement expectation. Please feel free to share your experience if you have faced similar issue.
It was interesting to know this. The key takeaway is to be careful to check whether the properties we define while implementations meets the requirement expectation. Please feel free to share your experience if you have faced similar issue.
No comments:
Post a Comment