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

如何知道Java方法是否正在使用新的JTA事务?,java,oracle,transactions,ejb,jta,Java,Oracle,Transactions,Ejb,Jta,我在EJB应用程序中使用容器管理的事务 我有两个无状态Java对象,它们是类A和类B 类B在类a的方法中实例化 B类有两种方法:方法A和方法B 方法A正在使用事务类型=需要\u new 方法B正在使用事务类型=必需 两种方法中分别有2条sql插入语句。方法A和方法B有不同的sql语句 我发现,如果方法B中发生任何错误,那么方法A中的所有内容都是回滚。这不是我想要的。我希望方法A中的所有内容都已提交,即使方法B引发系统异常 因此,我不认为方法A和B使用不同的事务运行 我能知道有没有办法将syste

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

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

类B在类a的方法中实例化

B类有两种方法:方法A和方法B

方法A正在使用事务类型=需要\u new

方法B正在使用事务类型=必需

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

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

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

我能知道有没有办法将system.out.println表示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,则可以使用查找事务级别信息。

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

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


如果您使用的是Spring,可以使用查找事务级别信息。

我可以知道如何在不同的事务中同时运行这两个功能吗?我认为required\u new和required足够好,可以将两者分离为两个事务。有什么想法吗?许多TQ。按什么顺序调用methodA和methodB?请参阅上面附加的psedo代码段。我刚刚编辑了这个问题。非常喜欢tqs。我能知道如何在不同的事务中同时运行这两个吗?我认为required\u new和required足够好,可以将两者分离为两个事务。有什么想法吗?许多TQ。按什么顺序调用methodA和methodB?请参阅上面附加的psedo代码段。我刚刚编辑了这个问题。tqs非常重要。可以从TransactionManager()获取与当前线程关联的事务,并通过其哈希代码与另一个事务进行比较。如果methodA需要_new,则在methodB出现问题时不应回滚它,因为它应该已经提交。看这个。你在运行哪台服务器?嗨,加油。我使用的是weblogic,我高度怀疑这个问题是由weblogic服务器设置引起的。我的代码应该可以工作;我认为我们无法获得transactionManager对象。调用entityManager.GetTranaAction()时出错;可以从TransactionManager()获取与当前线程关联的事务,并通过其哈希代码与另一个事务进行比较。如果methodA需要新的,则在methodB出现问题时不应回滚它,因为它应该已经提交。看这个。你在运行哪台服务器?嗨,加油。我使用的是weblogic,我高度怀疑这个问题是由weblogic服务器设置引起的。我的代码应该可以工作;我认为我们无法获得transactionManager对象。调用entityManager.GetTranaAction()时出错;