1

最近我被问到一个问题,这让我思考......想要获得社区对同一问题的看法。

我有一个 CustomerEJB,它有一个 createCustomer 方法。我的 EJB 作为 Web 服务公开,因此 createCustomer 是它的操作之一。

当请求命中 createCustomer 时,需要执行 2 次操作

  1. 对数据库的 INSERT SQL 查询,可能会将某些数据添加到输入请求中的数据库中
  2. 在文件系统中创建一个文本文件,比如 .txt。

现在的问题是我想将这两个任务耦合到一个事务中。如果任何一项任务失败,我也会回滚另一项任务。

无需提及任何热门技术,例如 Spring/Hibernate,我可以遵循什么方法来进行事务管理

我的想法: 1.我可以使用JTA,划定事务边界并相应地执行提交和回滚。JDBC 可用于 SQL 任务 2. 我可以使用 DAO

邀请您的建议/意见

4

1 回答 1

1

您需要将创建的文件包装在支持 XA 的 JCA 连接器中(不确定是否有现成的连接器,一个快速的好方法只找到了这个尚不支持事务的fsconnector),并为您的数据库使用 XA 驱动程序事务(大多数数据库将能够处理这个),然后将您的 EJB 包装在 XA 事务中(应该很简单)。

只要这两种资源都可以处理 XA 事务,您将获得两阶段提交的好处,这就是您所追求的。

于 2012-10-17T10:09:16.560 回答