Hi,

Recently I was experimenting and doing some R&D work with the Web Service Business Activity of IBM Websphere Application Server 6.1. I did have a look at the sample of the TravelAgent http://www.ibm.com/developerworks/we...ples/wsba.html, I myself tried to replicate a similar POC at my end and it worked fine. But this all I did, using within the single server instance.

Also, I tried the similar scenario with two completely different server instances. The use case scenario is more like this.

*Server 1*


1. Web Client Application invokes (jndi lookup) Travel Agent EJB (Stateless Session Bean)
2. Travel Agent EJB invokes the Train Ticket Booking Web Service (EJB exposed as a Web Service)
1. Travel Agent EJB has a compensation handler attached to it (Outer business scope)
2. Train Ticket Booking Web Service (which is a EJB) has compnesation handler attached to it. (Inner Business Scope)
3. The compnesation handler of Train Ticket Booking Web Service (which is a EJB) is activated using .setCompensationDataAtCommit
3. Travel Agent EJB then invokes the Ticket Payment Web Service (EJB exposed as a Web Service) which is deployed on Server 2.

*Server 2*

1. Ticket Payment Web Service (which is a EJB) has compensation handler attached to it. (Inner Business Scope)
1.The compnesation handler of Ticket Payment Web Service (which is a EJB) is activated using .setCompensationDataAtCommit


*Server 1 and Server 2 are NOT in clustered enviorement.*

After both the web services are being invoked from the Travel agent EJB, a business excpetion is thrown explicitly. The exception is being caught and .setCompensateOnly is being invoked.

The handlers of both the web services are being called (which it should be).
But this is where I am getting confused.

The UBA instances of Server 1 and Server 2 are different. There is no doubt on the fact that the uba instaces will work (as working) within single server instance.

But when we have two different server instances, and when in server 1 uba.setCompensateOnly is called, only the compensate methods of the active handlers of that particular UBA instance of server 1 will be called.

How is the active handlers of a different UBA instance (on differnt server which is also a part of the inner business scope) also being called?
Is it being informed somehow by the outer business scope?


Can you please share information on this methodology.