데이터 액세스 분리 레벨 설정 요구사항
이 주제에서는 Enterprise JavaBeans(EJB) 2.x 이상 모듈을 구성하는 데이터 액세스 컴포넌트에 대한 분리 레벨 설정 기준 및 효과에 대해 설명합니다.
EJB 1.1 모듈에서는 메소드 레벨 또는 Bean 레벨에서 분리 레벨을 설정할 수 있습니다. 이 기능은 EJB 2.x 모듈로 어셈블하는 CMP(Container-Managed Persistence) 1.1 Bean에도 적용됩니다. WebSphere® Application Server는 전체 모듈 버전과 무관하게 CMP Bean의 배치 디스크립터가 버전 레벨 1.1을 선언하도록 허용합니다.
그러나 분리 레벨을 메소드 또는 Bean 레벨에서 설정하는 기능은 CMP 2.x Bean을 포함한 EJB 2.x 모듈 내의 다른 엔터프라이즈 Bean에는 적용되지 않습니다. WebSphere Application Server 버전 5.0은 궁극적으로 보다 효과적인 연결 사용을 제공하는 아키텍처를 전달하기 위해 EJB 2.0 모듈에서 이 기능을 제거했습니다.
- EJB 메소드 레벨 또는 Bean 레벨에서 분리 레벨을 지정할 수 없습니다.
- JDBC 애플리케이션, BMP(Bean-Managed Persistence) Bean 또는 서블릿이 글로벌 트랜잭션에 참여하도록 구성하는 경우 공유되는 연결이 사용자가 지정한 분리 레벨을 승인할 수 없습니다. WebSphere Application Server는 글로벌 트랜잭션 내에서 공유되지 않는 연결에 사용자 지정 분리 레벨만을 설정할 수 있습니다. 일반적으로 공유 가능한 연결에는 분리 레벨을 지정하지 않으려 합니다.
- 2.x CMP Bean이 사용하는 연결에 대한 분리 레벨
- EJB 2.x 모듈에서 CMP 2.x Bean이 새 데이터 소스를 사용하여 백엔드 데이터베이스에 액세스할 때 분리 레벨은 Bean 또는 호출 메소드에 지정된 액세스 목적의 유형에 기초하여 WebSphere Application Server 런타임에 의해 판별됩니다. 다른 비CMP 연결 사용자는 동일한 이 데이터 소스에 액세스하고 액세스 목적 및 애플리케이션 프로파일 지원을 사용하여 동시성 제어를 관리할 수 있습니다.
- 기타 2.x 엔터프라이즈 Bean 및 다른 비CMP 컴포넌트가 사용하는 연결
- 다른 모든 JDBC 연결 인스턴스(CMP Bean이 사용하는 것을 제외한 연결)의 경우, 데이터 소스 자원 참조에 대한
분리 레벨을 지정할 수 있습니다. 글로벌 트랜잭션에서
실행되는 공유 가능한 연결의 경우에는 이 메소드가 연결을 위해 isolationLevel을
설정하는 유일한 방법입니다.
글로벌 트랜잭션에서 실행되는 공유 가능한 연결의 setTransactionIsolation() 메소드를 통해 분리 레벨을 직접 설정할 수 없습니다.
연결의 다른 분리 레벨을 사용하려면 다른 자원 참조를 제공해야 합니다. 어셈블리 도구를 통해 이러한 기본값을
설정하십시오.
각 자원 참조는 하나의 분리 레벨과 연관됩니다. 애플리케이션이 이 자원 참조 JNDI(Java™ Naming and Directory Interface) 이름을 사용하여 데이터 소스를 검색하는 경우, 이 자원 참조를 사용하여 이 데이터 소스에서 리턴되는 모든 연결은 동일한 분리 레벨을 갖게 됩니다.
다중 분리 레벨과 공유 가능한 연결을 사용해야 하는 컴포넌트는 다중 자원 참조를 작성하여 여기에 다른 JNDI 이름을 부여하고, 이 코드로 필요한 분리 레벨에 해당하는 데이터 소스를 찾아보게 합니다. 이런 방식으로 분리된 연결을 사용 가능한 다른 분리 레벨과 함께 사용합니다.
이러한 다중 자원 참조를 동일하게 구성된 데이터 소스에 맵핑할 수 있습니다. 이와 같은 연결은 동일한 기반의 풀에서 오지만 연결 관리자는 분리 레벨이 다른 자원 참조로 요청된 연결의 공유를 허용하지 않습니다. 다음 시나리오를 고려하십시오.- 데이터 소스는 두 가지 자원 참조인 jdbc/RRResRef 및 jdbc/RCResRef에 바인드됩니다.
- RRResRef는 RepeatableRead 분리 레벨을 정의합니다. RCResRef는 ReadCommitted 분리 레벨을 정의합니다.
제품은 비CMP 애플리케이션 모듈의 데이터 소스 자원 참조에 대한 분리 레벨을 설정하도록 요구하지 않습니다. 자원 참조에 대한 분리 레벨을 지정하지 않는 경우나 TRANSACTION_NONE을 지정하는 경우, WebSphere Application Server 런타임은 데이터 소스에 대한 기본 분리 레벨을 사용합니다. Application Server는 JDBC 드라이버에 기반하여 기본 설정을 사용합니다.
대부분의 드라이버의 경우, WebSphere Application Server는 분리 레벨 기본값인 TRANSACTION_REPEATABLE_READ를 사용합니다. 그러나 Oracle 드라이버의 경우 Application Server는 TRANSACTION_READ_COMMITTED 분리 레벨을 사용합니다. 빠른 참조를 위한 다음 표를 사용하십시오.
데이터베이스: 기본 분리 레벨: DB2® RR Oracle RC Sybase RR Informix® RR Apache Derby RR SQL Server RR 참고: 다음 동일한 기본 분리 레벨은 데이터 소스의 직접적인 JNDI 찾아보기의 경우에 사용됩니다.- RR = JDBC 반복 읽기(TRANSACTION_REPEATABLE_READ)
- RC = 커미트된 JDBC 읽기(TRANSACTION_READ_COMMITTED)
기본 분리 레벨을 사용자 정의하려면 데이터 소스의 webSphereDefaultIsolationLevel 사용자 정의 특성을 사용하면 됩니다. 대부분의 경우 EAR 파일을 패키징할 때 배치 디스크립터에서 분리 레벨을 정의해야 하지만 일부 상황에서는 기본 분리 레벨을 사용자 정의해야 할 수도 있습니다. 이전 옵션 중 하나라도 사용하면 이 특성은 효과가 없습니다. 이 사용자 정의 특성은 분리 레벨을 설정할 다른 수단이 없는 상황에서 사용하도록 제공됩니다.
webSphereDefaultIsolationLevel 사용자 정의 특성에 다음 값을 사용하십시오.
데이터 소스에 대해 이 사용자 정의 특성을 정의하려면 다음을 수행하십시오.가능한 값 JDBC 분리 레벨 DB2 분리 레벨 8 TRANSACTION_SERIALIZABLE RR(Repeatable Read) 4(기본값) TRANSACTION_REPEATABLE_READ RS(Read Stability) 2 TRANSACTION_READ_COMMITTED CS(Cursor Stability) 1 TRANSACTION_READ_UNCOMMITTED UR(Uncommitted Read) 0
TRANSACTION_NONE 커미트 없음(NC) - 를 클릭하십시오.
- 추가 특성 섹션에서 데이터 소스를 클릭하십시오.
- 데이터 소스의 이름을 클릭하십시오.
- 사용자 정의 특성을 클릭하십시오.
- webSphereDefaultIsolationLevel 사용자 정의 특성을 작성하십시오.
- 새로 작성을 클릭하십시오.
- 이름 필드에 webSphereDefaultIsolationLevel을 입력하십시오.
- 값 필드에 가능한 값 중 하나를 입력하십시오.
- 자원 참조 분리 레벨
- 액세스 목적 정책으로 지정되는 분리 레벨
- 분리 레벨을 구성하는 사용자 정의 특성
- Application Server의 기본 설정