java - EJB 中的事务管理

标签 java transactions dao

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

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

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

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

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

在不提及任何热门技术(例如 Spring/Hibernate)的情况下,我可以遵循的事务管理方法是什么

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

诚邀您提出建议/意见

最佳答案

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

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

关于java - EJB 中的事务管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12931808/

相关文章:

java - 使用Netbeans 8.0.2、Java 8、Windows 7——自定义库窗口经常挂起;该怎么办?

java - 当结果不同时如何进行单元测试?

php - 在插入时获取一张表的 auto_increment 值的最佳方法

mysql - 如何运行两个查询?(Joomla,mysql)

dart - 如何修复 flutter 中 firestore 的事务错误?

ms-access - 运行时错误 '3264' Access 2010 VBA

java - 如何使用DAO仅更新数据库中的一个字段

java - 为什么我不能删除刚找到的子元素? NOT_FOUND_ERR 错误

java - 为什么 .equals 在这种情况下不起作用?即使是调试器也没有意义

mysql - DAO OpendataBase(DSN 对话框始终打开)