【问题标题】:Transaction Management in EJBEJB 中的事务管理
【发布时间】:2012-10-07 13:30:29
【问题描述】:

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

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

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

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

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

不提任何热门技术,比如 Spring/Hibernate,我可以采用什么方法来进行事务管理

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

邀请您的好意建议/cmets

【问题讨论】:

标签: java transactions dao


【解决方案1】:

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

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

【讨论】:

  • 感谢您的回答..感谢您提及两阶段提交
猜你喜欢
  • 2017-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-26
  • 1970-01-01
相关资源
最近更新 更多