从玻璃鱼2升级到玻璃鱼3.例外不再滚动交易



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

但是我从集成测试中注意到的是,当异常抛出时,交易不会像以前那样回滚。我现在仍在部署到GF2。除了这个微妙的问题外,一切似乎都在起作用。如何解决此问题?我需要将这些Exception类移动到Session 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
//...
}

这是一个gf2 bug:https://java.net/jira/jira/browse/glassfish-fish-5183

解决方法是修改您的ejb-jar.xml,然后将类似的行添加到其中:

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

我希望GF3不需要这样做。

最新更新