3

我的耳朵应用程序工作正常。但是突然它开始在一些方法调用中抛出 javax.ejb.EJBException,而不是返回原始的应用程序异常(用 @ApplicationException(rollback=true) 注释。现在原始应用程序异常被包装在 EJBException 中。目前其他开发人员在该项目中工作的人正在休假。因此我不知道他对发生这种情况的代码做了什么。此应用程序异常和 ejb 远程接口位于一个单独的 jar 文件中,该文件部署为 weblogic 中的共享库。

我想知道是什么负责抛出这个 EJBException 而不是抛出应用程序异常。我认为可能是 weblogic 没有正确检测到 @ApplicationException 注释。谁能帮我解决这个问题?

4

1 回答 1

6

我能够通过在 ejb 方法签名的“throw”子句中添加应用程序异常来解决这个问题。

以前所有的 ejb 类和应用程序异常类都在同一个 jar 文件中。但后来应用程序异常类和ejb远程接口被放到另一个jar文件中,称为“api”jar文件,相关的ejb文件保存在之前的jar文件中。

如果我们需要在所有类都在同一个 jar 文件中时将其视为应用程序异常,使用 @ApplicationException 声明应用程序异常似乎就足够了。但是如果应用程序异常类在单独的jar文件中,我们需要在ejb方法签名的“throw”子句中添加这个应用程序异常,以便weblogic服务器将其解释为应用程序异常。

于 2013-04-01T17:43:28.653 回答