gpt4 book ai didi

java - 如何知道Java方法是否正在使用新的JTA事务?

转载 作者:太空宇宙 更新时间:2023-11-04 13:31:22 24 4
gpt4 key购买 nike

我在我的 EJB 应用程序中使用容器管理的事务。

我有两个无状态Java对象,它们是类A和类B。

类 B 在类 A 的方法中实例化。

B类有两个方法:方法A和方法B。

方法 A 使用事务类型 = require_new

方法 B 使用交易类型 = 必需

两个方法中分别有2条sql插入语句。方法A和方法B的sql语句不同。

我发现如果方法B发生任何错误,方法A中的一切都会回滚。这不是我想要的。我希望方法 A 中的所有内容都被提交,即使方法 B 引发系统异常。

因此,我不认为方法 A 和 B 正在使用不同的事务运行。

我可以知道有没有办法让 system.out.println 的 boolean 值显示 JTA 事务是否是新的?

谢谢。

下面是附加的伪代码片段,用于澄清我上面的问题。

stateless class A{
method(){
Class b = new Class B();
b.methodA();
b.methodB():
}
}

stateless class B(){
method A(){ // There is an insert statement here.}
method B(){ // There is another insert statement here.}

//If anything happen in method B, only rollback B, don't rollback A.
}

最佳答案

您正在与方法 A 相同的事务中运行方法 B。因此方法 B 的失败将回滚方法 A 中发生的插入。

如果您不希望方法 B 干扰方法 A,请在不同的事务中运行这两个方法。

如果您使用Spring,可以使用TransactionSynchronizationManager找出交易级别信息。

关于java - 如何知道Java方法是否正在使用新的JTA事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32169681/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com