gpt4 book ai didi

exception-handling - Java EE : @ApplicationException thrown, 仍然回滚事务

转载 作者:行者123 更新时间:2023-12-01 10:09:51 26 4
gpt4 key购买 nike

我需要一些指导,了解如何在 Java EE 环境中最好地使用异常,通过 JAX-RS 为客户端提供服务。

目前,我有很多异常,都扩展了 RuntimeException,并用 @ApplicationException(rollback=false) 注释。为了将它们传输给客户端,它们携带一个 JAXB 注释的实体; ExceptionMapper 已准备好将它们转换为正确的、有意义的 HTTP 响应(包括 HTTP 状态代码)。

我没有指定任何有关事务行为的信息,所以我猜它默认为 CMT。

到目前为止很棒的东西:当服务器决定时,它无法满足请求,因为输入数据无效/不足/无论如何,它抛出我的 BadRequestException 之一,这使它进入了 JAX -RS 资源,它被映射到 HTTP 响应。客户被告知出了什么问题。

问题 我总是遇到 javax.ejb.TransactionRolledbackLocalException,由 BadRequestException 引起!我不希望交易被回滚! @ApplicationException 似乎被忽略了...

我不应该从 RuntimeException 扩展而是使用检查异常吗?我虽然 @ApplicationException 应该是正确的方式......

有关背景信息:我的所有异常都使容器/bean 处于工作状态。不需要销毁 bean 实例或类似的东西。

最佳答案

对于遇到同样问题的其他人:当异常类不包含在 ejb-jar 中时,注释 @ApplicationException 被忽略(未扫描/未处理)。当我们的 ApplicationException 是 API jar 的一部分时,这是一种常见的情况。在那种情况下,我们必须使用 XML 描述符来标记 ApplicationException。

看这里对我有帮助 -> https://www.java.net//node/665096

关于exception-handling - Java EE : @ApplicationException thrown, 仍然回滚事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6275626/

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