【发布时间】:2012-05-23 10:44:49
【问题描述】:
我正在使用 XA(2 阶段)事务。我想通过日志类和实体管理器登录到一个日志表。我在 EJB Session bean 中的方法如下所示:
private void logError(Throwable throwable) {
LogEntity logEntity = new LogEntity();
// Set everything
entityManager.persist(logEntity);
}
我希望它在独立于任何“外部”事务的隔离(自治)事务中。我已经尝试在方法名称前添加@TransactionAttribute(value = TransactionAttributeType.REQUIRES_NEW) 和@TransactionAttribute(value = TransactionAttributeType.NOT_SUPPORTED) 并且不起作用。
在调用 EJB3 方法之前,我创建了用户事务,例如:
try {
UserTransaction transaction = (UserTransaction)context.lookup("javax.transaction.UserTransaction");
transaction.begin();
// Call EJB3 method
transaction.commit();
} catch (Throwable t) {
t.printStackTrace();
try {
transaction.rollback();
} catch (SystemException e) {
e.printStackTrace();
}
}
无论提交是否完成,我都想记录。怎么做?
问候
【问题讨论】:
标签: java transactions ejb transaction-isolation