Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaEE7回滚事务_Java_Jakarta Ee_Transactions - Fatal编程技术网

JavaEE7回滚事务

JavaEE7回滚事务,java,jakarta-ee,transactions,Java,Jakarta Ee,Transactions,我知道未经检查的异常(RuntimeExceptions)通常会导致事务回滚,但如果用相同的方法捕获该异常,会发生什么情况?我希望在error发生时回滚整个事务为true。但我想知道捕获异常是否会吞噬RuntimeException,从而导致事务不回滚?此代码是否仍回滚事务 public static void main(String[] args) { try { // boring stuff... if(errorOccurred) thro

我知道未经检查的异常(RuntimeExceptions)通常会导致事务回滚,但如果用相同的方法捕获该异常,会发生什么情况?我希望在
error发生时回滚整个事务
true
。但我想知道捕获异常是否会吞噬RuntimeException,从而导致事务不回滚?此代码是否仍回滚事务

public static void main(String[] args) {
   try {
      // boring stuff...
      if(errorOccurred)
         throw new RuntimeException("RuntimeException is thrown.");
   } catch (Exception e) {
      System.out.println("RuntimeException cought. Does is still rollback transaction?");
   }
}

如果您的程序捕获到运行时异常,这意味着异常尚未到达JEE容器,因此从JEE容器的角度来看,这是正常的程序执行,所以它不会回滚事务


如果希望捕获运行时异常并回滚事务,则需要以编程方式回滚这些特定运行时异常上的事务。在会话bean中,它提供了sessioncontext对象,该对象具有方法setRollbackOnly,使用该方法,您可以通知容器回滚事务,而不会引发运行时异常。消息驱动bean还提供了messagedrivencontext对象,可用于回滚事务[检查MDB

如果您传递到
手动
异常处理,您应该自己回滚。那么您为什么要捕获异常?@JackFlamp此方法中还有一些其他事情需要处理已检查的异常。否则我会将其清除。然后您应该独立处理这些异常运行时异常被定义为导致rollback@JackFlamp我想知道的是,如果回滚在抛出RuntimeException时立即启动,或者它会等到catch/finally块首先运行吗?