有没有办法更改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
我知道我可以通过拥有一个拦截器并自己冲洗来处理JPA Excpetions,但我不喜欢这个解决方案。
答案 0 :(得分:0)
如果不以某种方式自行管理交易,就没有办法不丢失原始异常。
EJB规范要求记录系统异常,并且WebSphere Application Server中没有选项来禁用该记录。