5.3. 트랜잭션 오브젝트 사용
트랜잭션을 일시 중지/사용하거나 리소스를 명시적으로 추가해야 하는 경우 javax. Cryostat.Transaction
오브젝트를 직접 사용해야 할 수 있습니다. 5.4절. “XA 등록 문제 해결” 에서 설명한 대로 프레임워크 또는 컨테이너는 일반적으로 리소스 등록에 자동으로 처리됩니다.
5.3.1. 트랜잭션 인터페이스 정의
JTA 트랜잭션
인터페이스에는 다음과 같은 정의가 있습니다.
interface javax.transaction.Transaction { public void commit(); public void rollback(); public void setRollbackOnly(); public int getStatus(); public boolean enlistResource(XAResource xaRes); public boolean delistResource(XAResource xaRes, int flag); public void registerSynchronization(Synchronization sync); }
5.3.2. 트랜잭션 메서드 설명
commit()
, rollback()
, setRollbackOnly()
및 getStatus()
메서드는 UserTransaction
인터페이스에서 해당 메서드와 동일한 동작을 갖습니다. 실제로 UserTransaction
오브젝트는 현재 트랜잭션을 검색한 다음 트랜잭션 오브젝트에서 해당 메서드를 호출하는 편리한 래퍼입니다.
또한 트랜잭션
인터페이스는 UserTransaction
인터페이스에 해당하지 않는 다음 메서드를 정의합니다.
- enlistResource()
XA 리소스를 현재 트랜잭션에 연결합니다.
참고이 방법은 XA 트랜잭션 컨텍스트에서 중요합니다. XA 트랜잭션을 특성화하는 현재 트랜잭션과 함께 여러 XA 리소스를 등록할 수 있는 기능을 정확하게 설명합니다. 반면, 명시적으로 리소스를 등록하는 것은 간과이며 일반적으로 프레임워크 또는 컨테이너가 이를 수행할 것으로 예상합니다. 예를 들면 5.4절. “XA 등록 문제 해결” 을 참조하십시오.
- delistResource()
지정된 리소스를 트랜잭션에서 연결 해제합니다. 플래그 인수는
javax. Cryostat.Transaction 인터페이스에 정의된 다음 정수 값 중 하나를 사용할 수 있습니다.
-
TMSUCCESS
-
TMFAIL
-
TMSUSPEND
-
- registerSynchronization()
-
javax. Cryostat.Synchronization
개체를 현재 트랜잭션에 등록합니다.Synchronization
오브젝트는 커밋 준비 단계 직전에 콜백을 수신하고 트랜잭션이 완료된 직후 콜백을 수신합니다.