Sun Java System Application Server Enterprise Edition 8.1 2005Q2 고가용성 관리 설명서

Stateful Session Bean 페일오버

SFSB(Stateful Session Bean)에는 클라이언트 특정 상태가 포함됩니다. 클라이언트와 Stateful Session Bean 간에는 일대일 관계가 있습니다. SFSB 작성 시 EJB 컨테이너는 SFSB를 클라이언트에 바인딩하는 고유한 세션 ID를 각 SFSB에 지정합니다.

서버 인스턴스에 장애가 발생할 경우 SFSB의 상태는 지속형 저장소에 저장될 수 있습니다. SFSB의 상태는 수명 주기 중 미리 정의된 시점에 지속형 저장소에 저장됩니다. 이것을 검사점 지정이라고 합니다. 검사점을 활성화하면 트랜잭션이 롤백된 경우에도 일반적으로 Bean이 트랜잭션을 완료한 후에 검사점이 지정됩니다.

그러나 SFSB가 Bean 관리 트랜잭션에 참여할 경우 Bean 메소드 실행 중간에 트랜잭션이 완결될 수 있습니다. 메소드 호출의 결과로 Bean의 상태가 전이 중일 수 있으므로 Bean의 상태에 검사점을 지정할 적절한 시간이 없습니다. Bean이 메소드가 끝날 때 EJB 컨테이너가 다른 트랜잭션의 범위에 있지 않는다고 가정할 경우, 해당 메소드 끝에 Bean의 상태에 검사점을 지정합니다. Bean 관리 트랜잭션이 여러 메소드에 걸쳐 있는 경우 후속 메소드 끝에 활성 트랜잭션이 나오지 않을 때까지 검사점 지정이 지연됩니다.

SFSB의 상태가 반드시 트랜잭션인 것은 아니며 비트랜잭션 비즈니스 메소드의 결과로 크게 바뀔 수 있습니다. 이 경우 검사점을 지정할 메소드 지정에 설명된 대로 검사점이 지정된 메소드 목록을 지정할 수 있습니다.

분산 가능 웹 응용 프로그램이 SFSB를 참조하고 웹 응용 프로그램의 세션이 페일오버되면 EJB 참조 또한 페일오버됩니다.

Application Server 인스턴스가 중지된 동안 세션 지속성을 사용하는 SFSB의 배포가 해제되면 지속성 저장소의 세션 데이터가 지워지지 않을 수 있습니다. 이를 방지하려면 Application Server 인스턴스가 실행 중인 동안 SFSB의 배포를 해제합니다.

EJB 컨테이너에 대한 가용성 구성

ProcedureEJB 컨테이너에 대한 가용성 활성화

  1. EJB 컨테이너 가용성 탭을 선택합니다.

  2. 가용성 서비스 상자를 선택합니다.

    가용성을 비활성화하려면 이 상자를 선택하지 마십시오.

  3. 가용성 설정에 설명된 대로 다른 설정을 변경합니다.

  4. 저장 버튼을 누릅니다.

  5. 서버 인스턴스를 다시 시작합니다.

해당 asadmin 명령

EJB 컨테이너에 대한 가용성을 활성화하려면 asadmin set 명령을 사용하여 구성에 대해 다음의 세 가지 등록 정보를 설정합니다.

예를 들어, config1이 구성 이름이면 다음 명령을 사용합니다.

asadmin set --user admin --passwordfile password.txt --host localhost --port 4849config1.availability-service.ejb-container-availability.availability-enabled="true"

asadmin set --user admin --passwordfile password.txt --host localhost --port 4849config1.availability-service.ejb-container-availability.sfsb-persistence-type="file"

asadmin set --user admin --passwordfile password.txt --host localhost --port 4849config1.availability-service.ejb-container-availability.sfsb-ha-persistence-type="ha"

가용성 설정

가용성 서비스에 대한 EJB 컨테이너 가용성 탭을 사용하여 다음 설정을 변경할 수 있습니다.

HA 지속성 유형: 가용성이 설정된 SFSB에 대해 세션 지속성 및 비활성화 메커니즘을 지정합니다. 허용되는 값은 file(파일 시스템) 및 ha(HADB)입니다. 세션 지속성이 필요한 프로덕션 환경의 경우 기본값인 ha를 사용합니다.

SFSB 지속성 유형: 가용성이 활성화되지 않은 SFSB에 대해 비활성화 메커니즘을 지정합니다. 허용되는 값은 file(파일 시스템) 및 ha입니다.

지속성 유형을 file로 설정한 경우 EJB 컨테이너는 비활성화된 Session Bean 상태가 저장되는 파일 시스템 위치를 지정합니다. 파일 시스템에 검사점을 지정하는 것은 테스트에는 유용하지만 프로덕션 환경에는 도움이 되지 않습니다. 자세한 내용은 Sun Java System Application Server Enterprise Edition 8.1 2005Q2 관리 설명서저장소 등록 정보를 구성하는 방법을 참조하십시오.

HA 지속성을 사용하면 서버 인스턴스에 장애가 발생할 경우 서버 인스턴스 클러스터가 SFSB 상태를 복구할 수 있습니다. HADB는 비활성 및 활성 저장소로 사용되기도 합니다. 이 옵션은 SFSB 상태 지속성이 필요한 프로덕션 환경에서 사용하십시오. 자세한 내용은 configure-ha-cluster(1)를 참조하십시오.

SFSB 저장소 풀 이름: 세션 지속성을 위해 HADB 연결에 사용한 JDBC 자원을 변경한 경우 SFSB 저장소 풀 이름을 변경할 수 있습니다. 자세한 내용은 configure-ha-cluster(1)를 참조하십시오.

가용성이 비활성화된 경우 SFSB 세션 저장소 구성

가용성이 비활성화되면 로컬 파일 시스템은 SFSB 지속성이 아닌 상태 비활성화에 사용됩니다. SFSB 상태가 저장되는 장소를 변경하려면 EJB 컨테이너의 세션 저장소 위치 설정을 변경합니다. 자세한 내용은 Sun Java System Application Server Enterprise Edition 8.1 2005Q2 관리 설명서저장소 등록 정보를 구성하는 방법을 참조하십시오.

개별 응용 프로그램 또는 EJB 모듈에 대한 가용성 구성

배포 중에 개별 응용 프로그램 또는 EJB 모듈에 대한 SFSB 가용성을 활성화할 수 있습니다.

개별 Bean에 대한 가용성 구성

개별 SFSB에 대해 가용성을 활성화하고 검사점을 지정할 메소드를 선택하려면 sun-ejb-jar.xml 배포 설명자 파일을 사용합니다. .

고가용성 세션 지속성을 활성화하려면 ejb 요소에서 availability-enabled="true"를 설정합니다. SFSB 캐시의 크기 및 동작을 제어하려면 다음 요소를 사용합니다.

sun-ejb-jar.xml에 대한 자세한 내용은 Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Developer’s GuideThe sun-ejb-jar.xml File을 참조하십시오.


예 8–1 가용성이 활성화된 EJB 배포 설명자의 예

<sun-ejb-jar>
    ...
    <enterprise-beans>
        ...
        <ejb availability-enabled="true">
            <ejb-name>MySFSB</ejb-name>
        </ejb>
        ...
    </enterprise-beans>
</sun-ejb-jar>

검사점을 지정할 메소드 지정

검사점을 활성화하면 트랜잭션이 롤백된 경우에도 일반적으로 Bean이 트랜잭션을 완료한 후에 검사점이 지정됩니다. Bean의 상태를 크게 바꾸는 비트랜잭션 비즈니스 메소드의 끝에 SFSB의 선택적 검사점을 지정하려면 sun-ejb-jar.xml 배포 설명자 파일의 ejb 요소에 있는 checkpoint-at-end-of-method 요소를 사용합니다.

checkpoint-at-end-of-method 요소의 비트랜잭션 메소드는 다음과 같을 수 있습니다.


주 –

SFSB가 트랜잭션에 참여하지 않고 어떠한 메소드도 checkpoint-at-end-of-method 요소에 명시적으로 지정되지 않았다면 이 Bean에 대해 availability-enabled="true"인 경우에도 Bean의 상태는 검사되지 않습니다.

더 나은 성능을 위해 적은 수의 메소드를 지정하십시오. 이러한 메소드는 많은 양의 작업을 수행하거나 Bean의 상태를 크게 바꿉니다.



예 8–2 메소드 검사점을 지정하는 EJB 배포 설명자의 예

<sun-ejb-jar>
    ...
    <enterprise-beans>
        ...
        <ejb availability-enabled="true">
            <ejb-name>ShoppingCartEJB</ejb-name>
            <checkpoint-at-end-of-method>
                <method>
                    <method-name>addToCart</method-name>
                </method>
            </checkpoint-at-end-of-method>
        </ejb>
        ...
    </enterprise-beans>
</sun-ejb-jar>