Sun Java System Application Server Enterprise Edition 8.2 관리 설명서

3장 JDBC 자원

JDBC 자원(데이터 소스)은 응용 프로그램에 데이터베이스 연결 수단을 제공합니다. 일반적으로 관리자는 도메인에 배포된 응용 프로그램에서 액세스한 데이터베이스마다 JDBC 자원을 만듭니다. 그러나 한 데이터베이스에 대해 JDBC 자원을 여러 개 만들 수 있습니다.

이 장은 다음 내용으로 구성되어 있습니다.

JDBC 자원 만들기

데이터 저장과 구성 및 검색을 위해 대부분의 응용 프로그램은 관계형 데이터베이스를 사용합니다. Java EE 응용 프로그램은 JDBC API를 통해 관계형 데이터베이스에 액세스합니다.

JDBC 자원(데이터 소스)은 응용 프로그램에 데이터베이스 연결 수단을 제공합니다. JDBC 자원을 만들기 전에 먼저 JDBC 연결 풀을 만드십시오.

JDBC 자원을 만들려면 해당 자원을 식별하는 고유한 JNDI 이름을 지정합니다. java:comp/env/jdbc 하위 컨텍스트에서 JDBC 자원의 JNDI 이름을 찾을 수 있습니다. 예를 들어, 급여 데이터베이스의 자원에 대한 JNDI 이름은 java:comp/env/jdbc/payrolldb일 수 있습니다. 모든 자원 JNDI 이름이 java:comp/env 하위 컨텍스트로 되어 있기 때문에 관리 콘솔에서 JDBC 자원의 JNDI 이름을 지정할 때 jdbc/name만 입력합니다. 예를 들어, 급여 데이터베이스의 경우 jdbc/payrolldb를 지정합니다.

관리 콘솔을 사용하여 JDBC 자원을 만들려면 자원 > JDBC 자원을 선택합니다. 다음과 같이 자원 설정을 지정합니다.

명령줄 유틸리티를 사용하여 JDBC 자원을 만들려면 create-jdbc-resource 명령을 사용합니다.

JDBC 연결 풀 만들기

JDBC 자원을 만들려면 연관된 연결 풀을 지정하십시오. 여러 JDBC 자원이 단일 연결 풀을 지정할 수 있습니다.

JDBC 연결 풀은 특정 데이터베이스에 대해 재사용 가능한 연결 그룹입니다. 새로운 물리적 연결을 만드는 데 시간이 많이 소모되기 때문에 서버에서는 사용 가능한 연결 풀을 유지 관리하여 성능을 증가시킵니다. 응용 프로그램은 연결을 요청할 때 풀에서 연결을 가져옵니다. 응용 프로그램에서 연결을 닫으면 연결이 풀로 반환됩니다.

연결 풀을 만들 때 특정 데이터베이스에 대한 연결 부분을 실제로 정의합니다. 풀을 만들기 전에 먼저 JDBC 드라이버를 설치 및 통합해야 합니다. 연결 풀의 등록 정보는 데이터베이스 공급업체에 따라 다를 수 있습니다. 일부 공통된 등록 정보는 데이터베이스 이름(URL), 사용자 이름 및 비밀번호입니다.

JDBC 드라이버와 관련된 특정 데이터 및 데이터베이스 공급업체를 입력해야 합니다. 계속하기 전에 다음 정보를 수집합니다.

JDBC 연결 풀은 특정 데이터베이스에 대해 재사용 가능한 연결 그룹입니다. 관리 콘솔에서 풀을 만들 때 관리자가 특정 데이터베이스에 대한 연결 부분을 실제로 정의합니다.

풀을 만들기 전에 먼저 JDBC 드라이버를 설치 및 통합해야 합니다. 연결 풀 만들기 페이지를 구축할 때 JDBC 드라이버와 관련된 특정 데이터와 데이터베이스 공급업체를 입력해야 합니다. 계속하기 전에 다음 정보를 수집합니다.

설치한 JDBC 드라이버에서 지정된 대로 일반 설정 값을 정의합니다. 이 설정은 Java 프로그래밍 언어로 된 인터페이스나 클래스의 이름입니다.

매개 변수

설명

데이터 소스 클래스 이름

DataSource 및/또는 XADataSource API를 구현하는 공급업체별 클래스 이름입니다. 이 클래스는 JDBC 드라이버에 있습니다.

자원 유형

선택 항목에는 javax.sql.DataSource(로컬 트랜잭션에만 해당), javax.sql.XADataSource(전역 트랜잭션) 및 java.sql.ConnectionPoolDataSource(로컬 트랜잭션, 성능 향상 가능)가 포함됩니다.

또한, 풀에 상주하는 물리적 데이터베이스 연결 집합을 정의해야 합니다. 응용 프로그램에서 연결을 요청하면 풀에서 연결이 제거되고 응용 프로그램에서 연결을 해제하면 연결이 풀로 반환됩니다.

매개 변수

설명

초기 및 최소 풀 크기 

풀의 최소 연결 수입니다. 풀 값에 따라 풀을 먼저 작성하거나 응용 프로그램 서버를 시작할 때 풀에 있는 연결 수도 결정합니다. 

최대 풀 크기 

풀의 최대 연결 수입니다. 

풀 크기 조정 개수 

풀이 최소 풀 크기로 줄어들 경우 일괄적으로 크기가 조정됩니다. 이 값은 일괄적으로 처리할 연결 수를 지정합니다. 이 값을 너무 크게 하면 연결 재순환이 지체되며, 너무 작게 하면 효율성이 떨어집니다. 

유휴 시간 초과  

풀에서 연결이 유휴 상태로 있을 수 있는 최대 시간(초)입니다. 이 시간이 만료되면 연결이 풀에서 제거됩니다. 

최대 대기 시간 

연결을 요청한 응용 프로그램이 연결 시간 초과까지 대기하는 시간입니다. 기본 대기 시간이 길기 때문에 응용 프로그램이 무기한 중지될 수 있습니다. 

선택에 따라 Application Server는 연결을 응용 프로그램에 전달하기 전에 연결을 검증할 수 있습니다. 이렇게 검증을 하면 네트워크 실패나 데이터베이스 서버 충돌로 인해 데이터베이스를 사용할 수 없는 경우 Application Server가 데이터베이스 연결을 자동으로 다시 설정합니다. 연결 검증을 수행하면 추가 오버헤드가 발생하여 성능이 약간 저하됩니다.

매개 변수

설명

연결 검증 

연결 검증을 활성화하려면 필수 확인란을 선택합니다. 

검증 방법  

Application Server는 데이터베이스 연결을 자동 완결, 메타데이터 및 테이블의 세 가지 방법으로 검증할 수 있습니다. 

자동 완결 및 메타데이터 - Application Server는 con.getAutoCommit()con.getMetaData() 메소드를 호출하여 연결을 검증합니다. 그러나, 많은 JDBC 드라이버에서 이러한 호출의 결과를 캐시하기 때문에 항상 신뢰할 수 있는 검증을 제공하는 것은 아닙니다. 이러한 호출의 캐시 여부를 판단하려면 드라이버 공급업체에 확인합니다.

테이블 - 응용 프로그램에서 지정된 데이터베이스 테이블을 쿼리합니다. 테이블이 반드시 필요하며 액세스할 수 있어야 하지만 행은 없어도 됩니다. 행이 많이 있는 기존 테이블이나 이미 자주 액세스하는 테이블은 사용하지 마십시오. 

테이블 이름 

검증 방법 콤보 상자에서 테이블을 선택한 경우 여기에서 데이터베이스 테이블 이름을 지정합니다. 

실패 시 

모든 연결 닫기 확인란을 선택한 경우 연결이 한 번 실패하면 Application Server는 풀의 모든 연결을 닫고 연결을 다시 설정합니다. 이 확인란을 선택하지 않으면 개별 연결을 사용할 경우에만 연결이 다시 설정됩니다. 

대개 많은 사용자가 동시에 데이터베이스에 액세스하기 때문에 한 트랜잭션에서 데이터를 읽는 동안 다른 트랜잭션에서 해당 데이터를 업데이트할 수 있습니다. 트랜잭션의 격리 수준은 업데이트되는 데이터를 다른 트랜잭션에 표시하는 정도를 정의합니다. 격리 수준에 대한 자세한 내용은 데이터베이스 공급업체의 설명서를 참조하십시오.

매개 변수

설명

트랜잭션 격리 

이 풀의 연결에 대한 트랜잭션 격리 수준을 선택할 수 있게 합니다. 이 확인란을 선택하지 않으면 연결은 JDBC 드라이버에서 제공하는 기본 격리 수준으로 실행됩니다. 

격리 수준 보장 

격리 수준이 지정된 경우에만 적용할 수 있습니다. 보장 확인란이 선택된 경우 풀에서 가져온 모든 연결은 동일한 격리 수준을 갖게 됩니다. 예를 들어, 마지막으로 사용 시 연결의 격리 수준을 프로그래밍 방식으로 변경한 경우(예: con.setTransactionIsolation 사용) 이 메커니즘은 상태를 지정한 격리 수준으로 다시 변경합니다.

JDBC 자원 및 연결 풀을 함께 작업하는 방법

데이터 저장과 구성 및 검색을 위해 대부분의 응용 프로그램은 관계형 데이터베이스를 사용합니다. Java EE 응용 프로그램은 JDBC API를 통해 관계형 데이터베이스에 액세스합니다. 데이터베이스에 액세스하려면 먼저 응용 프로그램에서 연결해야 합니다.

런타임 시 응용 프로그램이 데이터베이스에 연결할 경우 다음과 같은 현상이 발생합니다.

  1. 응용 프로그램이 JNDI API를 통해 호출하여 데이터베이스에 연관된 JDBC 자원(데이터 소스)을 가져옵니다.

    자원의 JNDI 이름으로 이름 지정 및 디렉토리 서비스에서 JDBC 자원을 찾습니다. JDBC 자원마다 연결 풀을 지정합니다.

  2. JDBC 자원을 통해 응용 프로그램은 데이터베이스 연결을 가져옵니다.

    반면, Application Server는 데이터베이스에 해당하는 연결 풀에서 물리적인 연결을 검색합니다. 풀은 데이터베이스 이름(URL), 사용자 이름 및 비밀번호 같은 연결 속성을 정의합니다.

  3. 이제 데이터베이스에 연결되어 응용 프로그램에서 데이터베이스의 데이터를 읽고 수정하며 추가할 수 있습니다.

    응용 프로그램이 JDBC API를 호출하여 데이터베이스에 액세스합니다. JDBC 드라이버가 응용 프로그램의 JDBC 호출을 데이터베이스 서버의 프로토콜로 변환합니다.

  4. 데이터베이스 액세스를 완료하면 응용 프로그램에서 연결을 닫습니다.

    Application Server가 연결을 연결 풀로 반환합니다. 연결이 풀로 반환되면 다음 응용 프로그램에 연결을 사용할 수 있습니다.

데이터베이스 액세스 설정

데이터베이스 액세스를 설정하려면 먼저 지원되는 데이터베이스 제품을 설치해야 합니다. Application Server가 지원하는 데이터베이스 제품 목록에 대한 자세한 내용은 릴리스 노트를 참조하십시오. 그런 다음 데이터베이스 제품의 JDBC 드라이버를 설치하고 드라이버의 JAR 파일이 도메인의 서버 인스턴스에 액세스할 수 있도록 설정해야 합니다. 이후 데이터베이스와 데이터베이스에 대한 연결 풀 및 연결 풀을 가리키는 JDBC 자원을 만듭니다.

JDBC 드라이버를 설치한 후에는 드라이버가 응용 프로그램의 JDBC 호출을 데이터베이스 서버의 프로토콜로 변환할 수 있도록 드라이버를 통합해야 합니다. JDBC 드라이버를 관리 도메인에 통합하려면 다음 중 하나를 수행합니다.

지속성 관리자 자원

이 기능은 역방향 호환성을 위해 필요합니다. Application Server의 버전 7에서 컨테이너 관리 지속성 Bean(EJB 구성 요소 유형)이 있는 응용 프로그램을 실행하기 위해서는 지속성 관리자 자원이 필요했습니다. 대신 JDBC 자원을 사용하는 것이 좋습니다.

관리 콘솔을 사용하여 지속성 관리자 자원을 만들려면 자원 노드를 선택합니다. 지속성 관리자 노드 > 지속성 관리자 페이지로 이동합니다. 명령줄 유틸리티를 사용하려면 create-persistence-resource 명령을 사용합니다.