I am relatively new to Enterprise software development. I have some basic doubts about transaction propagation in Enterprise (specifically J2EE) applications. I request the experts here to help me.
My scenario is this: I have a J2EE application which is deployed in a 2-tier co-located manner. It uses Spring framework for transaction management at the service layer and Hibernate as the ORM. It also has a user interface which were developed using Struts.
Now we need to expose some of the services of this application to an external application (corporate portal). The portal initiates a new transaction locally, does some DB updates and then call our application to make some more updates in our application and then continue to make some more database/JMS updates locally. The whole operation must be atomic, ie, if any of these transactions fail, all of them need to be rolled back.
We have option to provide a Web Service or SLSB Facade as the interface. I think the better option is to use SLSB.
My question is, in the above case, how does the transaction gets propagated from portal and what we ned to do at our side to ensure that the atomicity of the transaction can be maintained by the caller application.