Websphere EjbException包装

时间:2013-04-26 10:11:04

标签: java-ee exception transactions websphere websphere-7

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

1 个答案:

答案 0 :(得分:0)

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

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