Jakarta ee WebSphereEJBException包装

Jakarta ee WebSphereEJBException包装,jakarta-ee,exception,transactions,websphere,websphere-7,Jakarta Ee,Exception,Transactions,Websphere,Websphere 7,有没有办法更改WebSphere7应用程序服务器的默认EJBException处理 我们有一个EJB,它启动一个新事务: @Stateless @TransactionManagement(TransactionManagementType.CONTAINER) @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) public class SomeDaoBean implements SomeDaoLocal {

有没有办法更改WebSphere7应用程序服务器的默认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将原始的(例如java.sql.SQLIntegrityConstraintViolationException)记录到SystemOut.log中

有没有办法配置Websphere

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

我知道我可以通过一个拦截器和刷新自己来处理JPA例外,但我不喜欢这种解决方案。

如果不自己管理事务,就无法不丢失原始异常

EJB规范要求记录系统异常,WebSphereApplicationServer中没有禁用该记录的选项