提问者:小点点

EJB中的事务管理


最近有人问我一个问题,让我不禁思考。。希望得到社区对同一问题的看法。

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

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

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

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

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

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

欢迎您的友好建议/评论


共1个答案

匿名用户

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

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