2012-10-17 113 views
1

最近有人问我一个问题,这让我想到了......想要得到关于同一问题的社区意见。EJB中的事务管理

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

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

  1. 一个INSERT SQL查询到该排在输入请求
  2. 创建一个文本文件中可以加入一定的数据到数据库数据库在文件系统中说.txt。

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

没有提及任何热门技术,如Spring/Hibernate的是什么,我可以遵循事务管理

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

邀请你的那种建议/评论

+0

http://stackoverflow.com/questions/892349/is-there-an-open-source-solution-to-xa-transactional-file-access-in-java – Uncredited

回答

1

您将需要包装的文件中XA的JCA连接器(不知道是否有一个现成的创建一个快捷方式只发现了这个不支持事务的fsconnector),并为您的数据库事务使用XA驱动程序(大多数数据库将能够处理此事务),然后将您的EJB包装在XA事务中(应该是直截了当的)。

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

+0

感谢您的回答..感谢提及两阶段提交 – HungryForKnowledge