0

有没有办法更改 Websphere 7 应用程序服务器的默认 EJBException 处理?

我们有一个启动新事务的 EJB:

@Stateless
@TransactionManagement(TransactionManagementType.CONTAINER)
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public class SomeDaoBean implements SomeDaoLocal {


    @Override
    public void persistObject(SomeObject object) {
        ...
    }
}

当事务被容器提交并且有回滚时,我们无法得到最初的原因。调用persistObject 的EJB 执行如下操作:

try {
    someDao.persistObject(someObject);
} catch (final EJBException ejbE) {
    handleEjbException(someObject, ejbE);
}

当我们尝试处理并记录捕获的 EJBException 时,原因都是 EJBTransactionRolledBackException 的所有实例,Websphere 将 Original(例如 java.sql.SQLIntegrityConstraintViolationException)记录到 SystemOut.log 中。

有没有办法配置 Websphere

  • 为了不丢失事务边界上的原始异常
  • 不将其记录到 SystemOut.log

我知道我可以通过自己拥有一个拦截器和刷新来处理 JPA 异常,但我不喜欢那个解决方案。

4

1 回答 1

0

如果不以某种方式自己管理事务,就没有办法不丢失原始异常。

EJB 规范要求记录系统异常,并且在 WebSphere Application Server 中没有选项可以禁用该记录。

于 2013-04-26T16:32:09.540 回答