0

我正在尝试将我的耳朵从 glassfish 2 升级到 glassfish 3。我们曾经将会话 bean 和实体都放在一个 jar 文件中。 我了解到我需要将它们放在单独的 jar 文件中才能部署到 glassfish 3。我这样做的方法是创建一个新 jar 并将会话 bean、 和 移动ejb-jar.xmlpersistence.xml其中sun-ejb-jar.xml。会话 bean 库将旧库作为依赖项。旧的库仍然包含Exception我们使用的自定义类和实体以及几乎所有其他曾经存在的东西。

但是我从集成测试中注意到的是,当抛出异常时,事务不会像以前那样回滚。我现在仍在部署到 GF2。除了这个微妙的问题,一切似乎都在工作。我该如何解决这个问题?我需要将这些Exception类移动到会话 bean jar 中吗?

以下是这些异常之一的示例:

@ApplicationException(rollback=true)
public class MessageOutOfOrderException extends ConditionException { //this is the one that gets thrown
//...
}

@ApplicationException(rollback=true)
public class ConditionException extends Exception { //this is the parent.  It also gets thrown directly sometimes
//...
}
4

1 回答 1

0

这是一个 GF2 错误:https ://java.net/jira/browse/GLASSFISH-5183

解决方法是修改您的 ejb-jar.xml 并在其中添加如下行:

<assembly-descriptor>
    <application-exception>
        <exception-class>com.blah.EntityAccessException</exception-class>
        <rollback>true</rollback>
    </application-exception>

我希望GF3不需要这样做。

于 2014-03-06T23:06:11.813 回答