XA (2 상) 트랜잭션을 사용하고 있습니다. 로그 클래스와 엔티티 관리자를 통해 하나의 로그 테이블에 로그하려고합니다. EJB 세션 bean 내 메소드는 다음과 같습니다.ejb3는 세션 빈 내의 격리 된 (자율적 인) 트랜잭션
"외부"트랜잭션과 관계없이 격리 된 (자율적 인) 트랜잭션으로 원합니다. 메서드 이름 앞에 @TransactionAttribute(value = TransactionAttributeType.REQUIRES_NEW)
및 @TransactionAttribute(value = TransactionAttributeType.NOT_SUPPORTED)
을 이미 추가하려고 시도했지만 작동하지 않습니다.
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();
}
}
내가 수행 여부를 확약하는 경우에 상관없이 로그인 할 : 나는 EJB3 메소드를 호출하기 전에 같은
나는 사용자 트랜잭션을 생성합니다. 어떻게? 프록시를 통해 호출 할 때
감사
예. 그러나 logError 메소드에서 사용자 (XA 트랜잭션)가 모든 것을 커밋하거나 롤백하는지 여부와 관계없이 데이터를 "커밋"합니다. 나는 이것을 시도했지만 작동하지 않는다 ... logError 내부에서 persist()와 flush()를 수행한다. 그러나 운없이. 10 배 – zmeda