ActivitySession 및 트랜잭션 컨텍스트

이 주제는 트랜잭션과 ActivitySession 컨텍스트 사이의 계층 구조 관계를 설명합니다. ActivitySession 서비스로 정의된 이 관계에서는 트랜잭션 컨텍스트가 전체적으로 ActivitySession 컨텍스트의 내부 또는 외부에 있어야 합니다.

ActivitySession 컨텍스트는 트랜잭션 컨텍스트와 매우 유사하고 엔터프라이즈 Bean의 활성화를 위해 라이프사이클 선택사항을 확장하므로, 하나 이상의 트랜잭션을 캡슐화할 수 있습니다. ActivitySession 컨텍스트는 트랜잭션 컨텍스트처럼 Bean 또는 컨테이너로 관리할 수 있는 분배된 컨텍스트입니다. ActivitySession 컨텍스트는 클라이언트에 의해 시작되는 개별 트랜잭션이 없을 때 또는 이외의 것일 때, 해당 클라이언트가 사용하는 엔터프라이즈 Bean의 라이프사이클 범위를 정하기 위해 클라이언트에 의해 주로 사용됩니다.

ActivitySession에는 트랜잭션보다 낮은 오버헤드가 있어서 호출된 엔터프라이즈 Bean의 라이프사이클 범위를 정하는 데에만 사용되는 트랜잭션 대신 ActivitySession을 사용할 수 있습니다. ActivitySession의 활성화 정책을 포함하는 Bean의 경우, 이 Bean에 의해 시작되는 자원 관리자 로컬 트랜잭션(RMLT)의 지속 기간 한계를 RMLT가 시작된 Bean 메소드 대신 ActivitySession의 지속 기간으로 정할 수 있습니다. 그러면 EJB(Enterprise JavaBeans) 스펙에 설명된 시나리오 외에 엔터프라이즈 Bean에서 RMLT를 사용할 수 있는 유연성과 잠재성을 제공합니다. EJB 스펙은 Bean 메소드가 이들 스펙에 사용 가능한 로컬 트랜잭션의 유일한 포함 경계이기 때문에, RMLT가 Bean 메소드의 종료 이전에 완료될 수 있도록 정의합니다.

다음 규칙은 트랜잭션과 ActivitySessions 사이의 관계를 정의합니다.
  • EJB 또는 웹 컨테이너는 글로벌 트랜잭션이 없을 경우에 항상 LTC(Local Transaction Containment)을 사용합니다. LTC는 메소드 범위 또는 ActivitySession 범위일 수 있습니다.
  • 메소드 디스패치 전에 컨테이너는 항상 LTC 또는 글로벌 트랜잭션 컨텍스트가 있지만 두 컨텍스트가 모두 있지는 않도록 확인합니다.
  • ActivitySession은 서로 중첩될 수 없습니다. 중첩된 ActivitySession을 시작하려고 시도하면 UserActivitySession.beginSession()에 com.ibm.websphere.ActivitySession.NotSupportedException이 발생합니다.
  • ActivitySession은 하나 이상의 글로벌 트랜잭션을 완전히 캡슐화할 수 있습니다.
  • 애플리케이션은 모든 자원을 체크포인트하거나 재설정하는 조작으로 ActivitySession을 종료할 수 있습니다. endSession(EndModeCheckpoint) 조작은 ActivitySession 아래에서 조정되는 작업을 체크포인트한 후 컨텍스트를 종료합니다. endSession(EndModeReset) 조작은 ActivitySession 아래에서 조정되는 작업을 마지막 일관성 위치로 재설정한 후 컨텍스트를 종료합니다.
  • ActivitySession은 글로벌 트랜잭션에 의해 캡슐화될 수 없으며, ActivitySession과 글로벌 트랜잭션의 경계가 겹쳐서는 안 됩니다. 글로벌 트랜잭션 컨텍스트가 있을 때 ActivitySession을 시작하려고 시도하면 UserActivitySession.beginSession()에 com.ibm.websphere.ActivitySession.NotSupportedException이 발생합니다. 불완전한 글로벌 트랜잭션이 있는 ActivitySession에서 endSession(EndModeCheckpoint)을 호출하면 com.ibm.websphere.ActivitySession.ContextPendingException이 발생합니다. 글로벌 트랜잭션과 ActivitySession 컨텍스트에는 영향을 미치지 않습니다. endSession(EndModeReset)이 호출되는 경우 ActivitySession이 재설정되고 글로벌 트랜잭션이 rollback_only로 표시됩니다.
  • ActivitySession에 의해 완전히 캡슐화된 각각의 글로벌 트랜잭션은 이 ActivitySession 내의 다른 모든 글로벌 트랜잭션에 독립적입니다. 글로벌 트랜잭션 하나를 롤백해도 다른 글로벌 트랜잭션이나 ActivitySession 자체에는 영향을 미치지 않습니다.
  • ActivitySession 및 글로벌 트랜잭션 컨텍스트는 하나 이상의 연속 실행 글로벌 트랜잭션을 캡슐화하여 ActivitySession과 함께 공존할 수 있습니다.
  • EJB 홈 메소드는 ActivitySession에 참여할 수 없습니다. 이 상황이 교착 상태를 일으킬 수 있기 때문입니다. EJB 홈 메소드는 고유한 독립된 LTC에서 실행됩니다.

주제 유형을 표시하는 아이콘 개념 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cas_ogtlt
파일 이름:cas_ogtlt.html