有没有办法更改 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 异常,但我不喜欢那个解决方案。