ActivitySession 샘플
WebSphere® Application Server는 몇 가지 ActivitySession 샘플을 제공합니다.
- MasterMind 샘플
- 이 샘플은 MasterMind 게임을 기반으로 하며 다음 컴포넌트로 구성되어 있습니다.
- 서블릿. Container로 설정된 ActivitySession 제어 종류 속성으로 구성되어, Stateful 세션 Bean에 액세스합니다.
- Stateful 세션 Bean. 임시 상태 데이터를 포함하는 ActivitySession의 활성화 정책으로 구성됩니다.
서블릿은 새 게임이 각각 시작할 때 HttpSession을 시작하여, 각 게임 종료 시 이를 종료합니다. 따라서 각 게임의 지속 기간 동안 ActivitySession이 지속됩니다. ActivitySession 활성화 정책이 Bean의 비활성화를 중지하여 임시 데이터가 메모리에 남게 됩니다. 이 샘플은 웹 컨테이너에서 HttpSession과 ActivationSession 간 연관 및 ActivitySession 범위 활성화 정책을 보여줍니다.
- 1단계 커미트 데이터 소스에서 지원하는 엔터프라이즈 애플리케이션 클라이언트 컨테이너 및 CMP 엔티티 Bean
- 이 샘플에서 엔티티 Bean은 다음 특성으로
구성됩니다.
- TX_NOT_SUPPORTED
- REQUIRES의 ActivitySession 컨테이너 관리 정책
- ActivitySession의 LTC 경계
- ContainerAtBoundary의 LTC 분석 제어
클라이언트는 UserActivitySession에 액세스하여 ActivitySession을 시작하고, Bean의 인스턴스를 두 개 업데이트한 다음, ActivitySession을 종료합니다. 클라이언트는 EndModeReset와 EndModeCheckpoint를 차례로 사용하여 이를 두 번 실행합니다. 이 샘플은 다음과 같은 기능을 보여줍니다.- UserActivitySession 인터페이스에 대한 클라이언트 액세스
- ActivitySession으로 범위로 지정되고, ActivitySession의 범위에서 자동으로 완료 방향을 선택하는 여러 자원 관리자 로컬 트랜잭션(RMLT)
또한 이 엔티티 Bean은 지속 데이터의 확보 및 설정을 통해 각 메소드 호출에서 증분되는 임시 변수를 보유합니다. 이 값은 ActivitySession 종료 전에 점검되어 동일한 Bean 인스턴스가 사용되었음을 표시합니다. 그러면 클라이언트가 올바른 결과를 확인합니다.
- 엔터프라이즈 애플리케이션 클라이언트 컨테이너 및 다른 ActivitySession 유형의 두 개의 세션
- 이 샘플은 엔터프라이즈 애플리케이션 클라이언트 컨테이너 및
다음 세션 Bean으로 구성됩니다.
- SLB1. ActivitySession 유형이 Bean으로 구성된 Stateless 세션 Bean.
- SFB2. ActivitySession 유형이 Requires, LTC 경계가 ActivitySession, LTC 분석 제어가 APPLICATION이며 LTC 미분석 조치가 ROLLBACK으로 구성된 Stateful 세션 Bean.
두 개의 Bean 모두 TX_NOTSUPPORTED로 구성됩니다.
이 샘플에서는 다음 단계를 사용합니다.- 클라이언트가 SLB1을 시작합니다.
- SLB1이 UserActivitySession 인터페이스에 액세스하여 ActivitySession을 시작한 다음, SFB2에서 메소드를 호출합니다.
- SFB2가 UserActivitySession 인터페이스에 액세스하고, ActivitySession을 시작한 후 SFB2에 대한 메소드를 호출합니다.
- SFB2가 연결을 확보한 다음(setAutoCommit false), JDBC를 사용하여 1단계 데이터 소스를 업데이트합니다.
- 선택적으로 SLB1이 SFB2에서 별도의 메소드를 호출하여 RMLT를 커미트하거나 롤백해서 작업을 완료합니다.
- 그런 다음, SLB1이 EndModeCheckpoint로 ActivitySession을 종료합니다.
이 샘플은 다음과 같은 기능을 보여줍니다.- RMLT 포함이 ActivitySession에 바인드되지만 ActivitySession 완료 방향은 RMLT의 방향에 연결되지 않습니다.
- RMLT가 완료되지 않은 경우 해결되지 않은 조치를 사용하는 컨테이너.
- UserActivitySession 인터페이스를 사용하는 Bean 관리 ActivitySession Bean.
이 샘플은 올바른 결과를 점검하여 다시 클라이언트에 보고합니다.