- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个方法可以抛出应用程序异常,并且回滚为 true。我想知道是否必须显式调用 ejbContext.setRollbackOnly() ?
文档 here表示当异常标记为rollback=true时,我们不需要调用EjbContext的setRollbackOnly。
在我的例子中,我捕获了一个 ApplicationException,其回滚属性设置为 true。然后我显式调用 ejbContext.setRollbackOnly(),因为我在 catch block 中抛出了另一个异常,并且该异常将传播到客户端。下面是我的代码片段
try {
....
} catch (XYZDirectoryException e) { // ApplicationException marked as rollback=true
ejbContext.setRollbackOnly(); // Is this necessary?
// log exception trace
throw new ServerInternalException("Something bad happened. Please try again or contact administrator. Check logs for more details"); // ApplicationException marked as rollback=false
}
最佳答案
如果异常在 EJB 事务方法内抛出并捕获,则不会导致回滚。它只需从 EJB 事务方法中抛出,以便由 EJB 实例周围的事务代理捕获,否则,容器完全不知道该异常,因此不会回滚:
public void someEjbTransactionalMethod() {
// will cause a rollback
throw new XYZDirectoryException();
}
public void someOtheEjbTransactionalMethod() {
// will NOT cause a rollback
try {
throw new XYZDirectoryException();
}
catch (XYZDirectoryException) {
...
}
}
因此,在您的情况下,由于异常不会跨越任何事务性 EJB 方法的边界,因此容器不会意识到此异常,也不会回滚,除非您抛出另一个“rollback=true” catch block 中的异常,或显式地将事务标记为 rollbackOnly。
关于java - EjbConetxt setRollbackOnly 与 ApplicationException rollback true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30848941/
当我们使用MessageDrivenContext.setRollbackOnly()时,Container将回滚事务竞争,因此消息将被放回JMS队列。 该队列是否需要显式放置权限或其事务级别,以便容
我正在阅读 Java EE 7 的事务管理,我对嵌套事务的概念和 EJBContext#setRollbackOnly() 的功能感到困惑。 假设我有两个 session Bean,Bean1Impl
在我的 Web 应用程序中,我在 Apache Tomcat (TomEE)/7.0.37 服务器上使用 OpenJPA。 我的实体 User.class: @Entity @Table(name =
我在Weblogic服务器中得到以下异常,从日志来看,这绝对是weblogic内部的东西,但是,不确定weblogic正在尝试归档应用程序的哪一部分,你知道为什么会发生这种情况吗?
我有一个方法可以抛出应用程序异常,并且回滚为 true。我想知道是否必须显式调用 ejbContext.setRollbackOnly() ? 文档 here表示当异常标记为rollback=true
我有一个 java 类,它使用队列中的消息,将 HTTP 调用发送到某些 url。我已经在谷歌和 stackoverflow 上进行了一些搜索(如果我错过了任何提及该问题的消息来源,我真的很抱歉)但是
我有以下情况,我调用 BeanA 的 doSomeTask() 但如果 doSomeTask() 失败,我想将 ErrorInfo 保存到另一个表中并调用 BeanA 的 saveError(Erro
我是一名 Java 开发人员。我在本地版本的 websphere 应用程序服务器中部署了一个 Web 服务,我知道它可以在我的生产服务器上运行。 但是当我尝试使用 SOAP UI 在本地执行 Web
请帮助我了解 EJB 3.1 中的事务。我正在使用 GlassFish v3 并遇到以下情况: @Stateless @LocalBean public class BeanA { @Inje
我正在将应用程序从 Jboss 7as 移植到 Weblogic 12c。 到目前为止,我能够运行该应用程序并在数据库中创建新记录。 但是,只有在尝试更新现有记录时,我才会收到以下错误; Error
我是一名优秀的程序员,十分优秀!