通过 WS-ReliableMessaging 提供事务性可恢复消息传递
如果 WS-ReliableMessaging 应用程序在 Web 容器中运行且使用受管服务质量,那么可以使用 WS-ReliableMessaging 来提供事务性恢复消息传递。
关于此任务
WS-ReliableMessaging 事务模型如下所示:
- 在 Web Service 请求者端,事务介于应用程序与本地受管存储之间。
- WS-ReliableMessaging 协议将消息传递到 Web Service 提供者端,在此提供者端处,第二个受管存储与要分派的应用程序之间使用了其他事务。
对于单向消息发送上的出站(请求者)情况,如果将 enableTransactionalOneWay 属性设置为 true,那么在当前由应用程序线程挂起的任何事务上下文中执行发送。注意,出站双向消息交换不支持事务。
对于入站(提供者)情况,如果将 inOrderDelivery 属性设置为 true,那么在事务中将入站消息分派到应用程序。对于入站双向消息交换,还将在该事务中生成响应,但在落实事务前,不会发送此响应。
注:
WS-ReliableMessaging 事务不使用 WS-AtomicTransactions 协议。这两个协议之间的关系如下所示:
有关更多信息,请参阅WS-AtomicTransactions。- 当 WS-ReliableMessaging 与受管库配合使用以提供事务可恢复消息传递时,WS-AtomicTransactions 和 WS-ReliableMessaging 互斥。
- 如果 WS-ReliableMessaging 配置为使用内存中库,那么存在一些情况,其中 WS-AtomicTransaction 可以在可靠消息传递源与可靠消息传递目标之间流动,以便进行双向调用。在此情况下,WS-ReliableMessaging 仅防止网络故障,但不防止服务器故障。
要通过 WS-ReliableMessaging 提供事务性可恢复消息传递,请按照通过 WS-ReliableMessaging 向 Web Service 添加有保证的传递中描述的步骤执行操作,另外,还请完成下列附加步骤:
过程
- 如果要对出站(请求者)单向消息发送启用事务性消息传递,那么在开发 JAX-WS Web Service 应用程序时,请将 jaxWS 请求上下文映射中的 enableTransactionalOneWay 属性设置为 Boolean.TRUE(或字符串 true)。
- 如果要对入站(提供者)单向和双向消息交换启用事务性消息传递,那么在配置 WS-ReliableMessaging 策略时,请使用管理控制台选择选项按消息的发送顺序传递消息或使用 wsadmin 工具将 inOrderDelivery 属性设置为 true。