用户事务可以控制本地事务

时间:2016-07-16 12:23:53

标签: java jboss jta

我必须编写使用第三方代码的代码(无法更改代码)。 在我的代码中,我想使用JTA(在JBoss上),以便对我的代码(方法)中的所有操作强制执行全部或全部操作。其中一个操作是调用第三方API,它使用本地事务和自己的sql连接对DB进行实际的保存/更新操作。我有其他操作,如写入输出流等,但我想如果不是所有的后续操作都能够回滚数据库操作(第三方API)。 我可以这样做吗?我的意思是我的用户交易可以控制第三方本地交易吗?

1 个答案:

答案 0 :(得分:0)

  

在JTA范围内,我将调用第三方API,该API使用本地事务和自己的sql连接对DB进行实际的保存/更新操作。我可以这样做吗?

我认为这是可能的,但如果它是相同的数据库和在两种情况下使用的相同表,则可能需要刷新JTA事务中的数据。

  

我的意思是我的用户交易可以控制第三方本地交易吗?

这取决于您的第三方代码是否强制创建自己的事务(开始和提交)。 如果是这种情况,JTA无法控制第三方交易,因为规范不允许这样做。

  

但是,Java EE事务管理器确实有一个限制:它不支持嵌套事务。换句话说,在前一个事务结束之前,它无法启动实例的事务。   https://docs.oracle.com/cd/E19798-01/821-1841/bnciz/index.html