gpt4 book ai didi

Java EE7 回滚事务

转载 作者:搜寻专家 更新时间:2023-11-01 03:16:00 26 4
gpt4 key购买 nike

我知道未经检查的异常 (RuntimeExceptions) 通常会导致您的事务回滚,但是如果您用相同的方法捕获该异常会怎样?当 errorOccurredtrue 时,我希望回滚整个事务。但我想知道捕获异常是否会吞下 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 容器的角度来看,它是正常的程序执行,因此不会回滚事务。

如果您想捕获运行时异常并回滚事务,您需要以编程方式回滚那些特定运行时异常的事务。在session bean中它提供了sessioncontext对象,它有方法setRollbackOnly,通过这个方法你可以通知容器回滚事务而不抛出运行时异常。消息驱动 bean 还提供 messagedrivencontext 对象,可用于回滚事务[检查 MDB https://docs.oracle.com/javaee/6/tutorial/doc/bnbpo.html]

关于Java EE7 回滚事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52363171/

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