如何在会话事务的入站 jca 资源适配器中控制 XAResource?
How to control XAResource in inbound jca resource adapter for conversational transaction?
我正在使用 JCA 为遗留 EIS 编写入站资源适配器。
EIS 不支持 XA 事务。然而,这些消息形成了存在多个消息的对话。每条消息都会导致一个将由消息端点执行的操作。
对话结束时,将收到 commit/rollback 消息。在那一刻,所有操作都应该提交或回滚。
有什么方法可以让我在 RA 中自行管理生命周期?
显然我可以自己回答我的问题。
调用 ResourceAdapter.start() 时,提供的 BootstrapContext 包含一个 XATerminator。此终止符公开了生命周期方法。
见
http://docs.oracle.com/javaee/6/api/javax/resource/spi/ResourceAdapter.html
http://docs.oracle.com/javaee/6/api/javax/resource/spi/BootstrapContext.html
准备好执行工作时,生成一个 XID,将其设置在 ExecutionContext 上并将该执行上下文传递给工作管理器。 (您可能需要实现自定义 XID 实现)
参见 jca 1.6 规范的第 15 章事务流入。
我正在使用 JCA 为遗留 EIS 编写入站资源适配器。
EIS 不支持 XA 事务。然而,这些消息形成了存在多个消息的对话。每条消息都会导致一个将由消息端点执行的操作。
对话结束时,将收到 commit/rollback 消息。在那一刻,所有操作都应该提交或回滚。
有什么方法可以让我在 RA 中自行管理生命周期?
显然我可以自己回答我的问题。
调用 ResourceAdapter.start() 时,提供的 BootstrapContext 包含一个 XATerminator。此终止符公开了生命周期方法。
见
http://docs.oracle.com/javaee/6/api/javax/resource/spi/ResourceAdapter.html http://docs.oracle.com/javaee/6/api/javax/resource/spi/BootstrapContext.html
准备好执行工作时,生成一个 XID,将其设置在 ExecutionContext 上并将该执行上下文传递给工作管理器。 (您可能需要实现自定义 XID 实现)
参见 jca 1.6 规范的第 15 章事务流入。