Provide transactional recoverable messaging through WS-ReliableMessaging
If our WS-ReliableMessaging application runs inside the web container and uses a managed quality of service, we can use WS-ReliableMessaging to provide transactional recoverable messaging.
The WS-ReliableMessaging transactional model is as follows:
- On the web service requester side, the transaction is between the application and the local managed store.
- The WS-ReliableMessaging protocol delivers the message to the web service provider side, where a different transaction is used between the second managed store and the application being dispatched.
For the outbound (requestor) case on a one-way message send, if the enableTransactionalOneWay property is set to true, then the send is performed under any transactional context currently held by the application thread. (Note that transactions are not supported under an outbound two-way message exchange).
For the inbound (provider) case, if the inOrderDelivery property is set to true, then an inbound message is dispatched to the application under a transaction. For an inbound two-way message exchange, the response is also generated under that transaction and is not sent until that transaction has committed.
WS-ReliableMessaging transactions do not use the WS-AtomicTransactions protocol. The relationship between these two protocols is as follows:
- WS-AtomicTransactions and WS-ReliableMessaging are mutually exclusive when WS-ReliableMessaging is being used, with a managed store, to provide transactional recoverable messaging.
- If WS-ReliableMessaging is configured to use an in-memory store, then there are cases where a WS-AtomicTransaction can be flowed between the reliable messaging source and the reliable messaging destination for two-way invocations. In this situation, WS-ReliableMessaging only protects against network failures, not against server failure.
For more information, see WS-AtomicTransactions.
To provide transactional recoverable messaging through WS-ReliableMessaging, work through the steps described in Add assured delivery to web services through WS-ReliableMessaging and also complete the following additional steps:
Tasks
- To enable transactional messaging for outbound (requester) one-way message sends, when you develop the JAX-WS web service application set the enableTransactionalOneWay property to Boolean.TRUE (or the string true) in the jaxWS request context map.
- To enable transactional messaging for inbound (provider) one-way and two-way message exchanges, when we configure the WS-ReliableMessaging policy either use the administrative console to select the option Deliver messages in the order that they were sent or use the wsadmin tool to set the inOrderDelivery property to true.
Configure the WS-ReliableMessaging policy Configure a WS-ReliableMessaging policy set by Configure a WS-ReliableMessaging policy set WS-ReliableMessaging Detect and fix problems with WS-ReliableMessaging Administer reliable web services WS-ReliableMessaging: supported specifications and standards