11.5. 트랜잭션 라이프 사이클 개요
11.5.1. 트랜잭션 라이프 사이클
자카르타 트랜잭션에 대한 자세한 내용은 자카르타 트랜잭션 정보를 참조하십시오.
리소스가 트랜잭션에 참여하도록 요청하면 일련의 이벤트가 동작에 설정됩니다. Transaction Manager(TM)는 애플리케이션 서버 내에 있으며 트랜잭션을 관리하는 프로세스입니다. 트랜잭션 참가자는 트랜잭션에 참여하는 객체입니다. 리소스는 데이터 소스, Jakarta Messaging 연결 팩토리 또는 기타 Jakarta Connectors 연결입니다.
애플리케이션이 새 트랜잭션을 시작합니다.
트랜잭션을 시작하기 위해 애플리케이션은 Java Naming and Directory Interface에서 또는 주석에서 Jakarta Enterprise Bean인 경우
UserTransaction클래스 인스턴스를 가져옵니다.UserTransaction인터페이스에는 최상위 트랜잭션을 시작, 커밋 및 롤백하는 방법이 포함되어 있습니다. 새로 생성된 트랜잭션은 호출 스레드와 자동으로 연결됩니다. 자카르타 트랜잭션에서는 중첩 트랜잭션이 지원되지 않으므로 모든 트랜잭션은 최상위 트랜잭션입니다.Jakarta Enterprise Bean은
UserTransaction.begin()메서드가 호출될 때 트랜잭션을 시작합니다. 이 트랜잭션의 기본 동작은TransactionAttribute주석 또는ejb.xml설명자를 사용하여 영향을 받을 수 있습니다. 해당 지점 다음에 사용되는 모든 리소스는 트랜잭션과 연결됩니다. 둘 이상의 리소스가 등록되면 트랜잭션이 XA 트랜잭션이 되고 커밋 시 2단계 커밋 프로토콜에 참여합니다.참고기본적으로 트랜잭션은 자카르타 엔터프라이즈 빈의 애플리케이션 컨테이너에 의해 구동됩니다. 이를 CMT (컨테이너 관리 트랜잭션)라고 합니다. 트랜잭션 사용자가 구동되도록 하려면
트랜잭션 관리를 BMT(빈 관리 트랜잭션)로변경합니다. BMT에서는 사용자가 트랜잭션을 관리하는 데UserTransaction개체를 사용할 수 있습니다.애플리케이션은 상태를 수정합니다.
다음 단계에서는 애플리케이션이 작업을 수행하고 등록한 리소스에서만 해당 상태를 변경합니다.
애플리케이션에서 커밋 또는 롤백을 결정합니다.
애플리케이션에서 상태 변경을 완료하면 커밋 또는 롤백 여부를 결정합니다.
UserTransaction.commit() 또는중 하나를 적절한 메서드를 호출합니다. CMT의 경우 이 프로세스는 자동으로 구동되는 반면 BMT의 경우UserTransaction.rollback()UserTransaction의 메서드 커밋 또는 롤백은 명시적으로 호출해야 합니다.©는 해당 레코드에서 트랜잭션을 제거합니다.
커밋 또는 롤백이 완료된 후 HFS는 레코드를 정리하고 트랜잭션에 대한 정보를 트랜잭션 로그에서 제거합니다.
실패 복구
리소스, 트랜잭션 참여자 또는 애플리케이션 서버를 충돌하거나 사용할 수 없게 되면 트랜잭션 관리자는 기본 오류가 해결되고 리소스를 다시 사용할 수 있을 때 복구를 처리합니다. 이 프로세스는 자동으로 수행됩니다. 자세한 내용은 XA 복구를 참조하십시오.