Transaction handling in Oracle Service Bus
- 11
- June
- 2010
- By admin
- Design Patterns, ESB, Messaging, OESB, OSB, SOA
- 7 Comments.
The way transactions are handled depends on the nature of incoming request and the transaction characteristics of the partner service.
Transactional Binding
If the incoming binding for the request to OSB is transactional then the proxy will participate in that txn and any proxy/business svc invoked by this proxy will participate in the same txn.
The control of this transaction will be with the client.
If the service inturn invokes several transactional proxies/business svc’s they will be all enrolled in the intial inbound txn and committed together or rolled back together.
Non Transactional Binding
while if the incoming binding for req is non transactional eg SOAP or file transport then the txn behaviour will depend on type of proxy.
There is a difference between types of proxies available in OSB 11g than the previous versions.
Non-Transational proxy (default type and the only type that existed prior to 11g)
Unless there are incoming transactions, the proxy will not execute as part of a transaction.
Any subsequent transactional services it invokes will each execute in their own txn.
i.e. they will not necessarily be all complete or roll back together. some may succeed while others may not.
Transational proxy (A new feature in 11g)
It will initiate a new txn if one does exist in the req recieved, and there on all calls are part of the same txn, hence all commit or roll back together.
Related
7 Responses so far.
Recent Posts
- 12.1.0.2 RAC Installation – Step by Step installation on VMware
- OSB FTP Poller continuously throwing exception – while no file pending on FTP Location
- Using JMS Transport with OSB
- Installing Spring Tool Suite and configuring Spring for a development PC
- Rest Enabling SOA using OSB in Oracle 12c
Recent Comments
- Nits on Installing Oracle SOA Suite 12c
- Rajesh Krishna on Installing Oracle SOA Suite 12c
- Nits on Installing Oracle SOA Suite 12c
- Rohinii on Installing Oracle SOA Suite 12c
- Mahitha on Oracle Service Bus (OSB) Development Best Practices.
Archives
- December 2015
- May 2015
- November 2014
- September 2014
- August 2014
- July 2014
- April 2014
- March 2014
- February 2014
- January 2014
- December 2013
- November 2013
- October 2013
- September 2013
- July 2013
- June 2013
- May 2013
- March 2013
- February 2013
- November 2012
- October 2012
- September 2012
- May 2012
- March 2012
- February 2012
- December 2011
- November 2011
- October 2011
- September 2011
- August 2011
- June 2011
- May 2011
- January 2011
- December 2010
- November 2010
- October 2010
- September 2010
- July 2010
- June 2010
- March 2010
- February 2010
- December 2009
- September 2009
- August 2009
- June 2009
- May 2009
- April 2009
- March 2009
- February 2009
- January 2009
- November 2008
- October 2008
- August 2008
- June 2008
- May 2008
Categories
- AIA
- AXIS2
- Best Practices
- BPEL
- BPM
- Budget
- Build
- Design Patterns
- ESB
- Hermes
- Hibernate
- Home Owners
- Java
- JMS
- JSR 168
- Maven
- Mediator
- Messaging
- Nitin
- OER
- OESB
- Oracle
- OSB
- OWSM
- Portlets
- SDLC
- Sequencing
- Singleton
- SOA
- SOAP
- Spring
- Struts
- UK
- Uncategorized
- Web Services
- WLST
Meta
To find out more, including how to control cookies, see here: Cookie Policy
Recent Posts
- 12.1.0.2 RAC Installation – Step by Step installation on VMware
- OSB FTP Poller continuously throwing exception – while no file pending on FTP Location
- Using JMS Transport with OSB
- Installing Spring Tool Suite and configuring Spring for a development PC
- Rest Enabling SOA using OSB in Oracle 12c
Recent Comments
- Nits on Installing Oracle SOA Suite 12c
- Rajesh Krishna on Installing Oracle SOA Suite 12c
- Nits on Installing Oracle SOA Suite 12c
- Rohinii on Installing Oracle SOA Suite 12c
- Mahitha on Oracle Service Bus (OSB) Development Best Practices.
Archives
- December 2015
- May 2015
- November 2014
- September 2014
- August 2014
- July 2014
- April 2014
- March 2014
- February 2014
- January 2014
- December 2013
- November 2013
- October 2013
- September 2013
- July 2013
- June 2013
- May 2013
- March 2013
- February 2013
- November 2012
- October 2012
- September 2012
- May 2012
- March 2012
- February 2012
- December 2011
- November 2011
- October 2011
- September 2011
- August 2011
- June 2011
- May 2011
- January 2011
- December 2010
- November 2010
- October 2010
- September 2010
- July 2010
- June 2010
- March 2010
- February 2010
- December 2009
- September 2009
- August 2009
- June 2009
- May 2009
- April 2009
- March 2009
- February 2009
- January 2009
- November 2008
- October 2008
- August 2008
- June 2008
- May 2008
Categories
- AIA
- AXIS2
- Best Practices
- BPEL
- BPM
- Budget
- Build
- Design Patterns
- ESB
- Hermes
- Hibernate
- Home Owners
- Java
- JMS
- JSR 168
- Maven
- Mediator
- Messaging
- Nitin
- OER
- OESB
- Oracle
- OSB
- OWSM
- Portlets
- SDLC
- Sequencing
- Singleton
- SOA
- SOAP
- Spring
- Struts
- UK
- Uncategorized
- Web Services
- WLST
@Susant : As i’ve described in the post. The OSB can initiate a transactional service using a transactional proxy and then any subsequent calls will be part of that transaction.
In your case you pass the control to bpel and then to java which will then have to take care of the transaction.
In order to ensure that all the invocations are part of the same transaction you have to make sure that the transaction is propagated to the services you are dependent on.
one small clarification.
we have scenario where we have osb calls to a bpel and bpel has webservices and intern webservice is calling to java object and it calls internally hibernate.
so how in osb level we can handle transaction…..any idea will be appricated
Hi Rajneesh,
Thanks for your inputs, Are you refering to 11g ? My concern was mainly regarding managing transactions on Queues when you initiate them from the OSB. eg. calling a BPM process and making sure that the input request is not lost incase there is an error in the BPM process or other dependent resources. Or you can say Asynchronous calls to resources outside OSB.
Also “reply with success” will abort the transaction but does not ensure that success of the transaction.
Transaction is managed in OSB through Service Callouts. Request-Response criteria in service callout make sure that unless response is received from the service transaction is not complete and would be aborted in case of errors.
We can use ‘reply with success’ in case we would like to abort the transaction. Also calling one proxy as local proxy by parent proxy maintains the transaction and is stateful. In case of proxies based on http/jms, transaction can be maintained by reliable storing the data in JMS on weblogic server.
Hi Nitin, Sorry for the delayed response. I don’t have example but I worked in a projects where both stateless and transactions calls are made via OSB.
In transaction calls we used JMS. so this provides guarantee delivery and reliability etc.,, and provides transaction hook-up.
I am not sure if this is clear , if not drop me an email and will walk you through the scenario and can discuss more.
BTW, you are covering some good stuff with regards to OSB / Oracle 11g. Good work and keep it up.
ALSB / OSB do not provide transaction capabilities. It provides implicit transaction which means if back-end business service is participating in the transaction ALSB will simply join the same transaction as suppose to starting its own. Hope this is clear.
Thanks for your comments Sanjeev, I know there is nothing out of the box in OSB but I am trying to figure out the best possible work around in a scenario where your request is initiated via some osb proxy service.
Do you have any example which shows this capability..