Sun Java System Application Server 9.1 관리 설명서

3장 JDBC 자원

이 장에서는 데이터베이스에 액세스하는 응용 프로그램에서 필요한 JDBC 자원을 구성하는 방법에 대해 설명합니다. 이 장은 다음 내용으로 구성되어 있습니다.

JDBC 자원

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

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

JDBC 자원을 만들려면 해당 자원을 식별하는 고유한 JNDI 이름을 지정합니다. 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 자원이 단일 연결 풀을 지정할 수 있습니다.

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

연결 풀의 등록 정보는 데이터베이스 공급업체에 따라 다를 수 있습니다. 일부 공통된 등록 정보는 데이터베이스 이름(URL), 사용자 이름 및 비밀번호입니다.

참고 항목:

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

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

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

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

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

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

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

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

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

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

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

데이터베이스 액세스 설정

데이터베이스 액세스를 설정하려면 다음을 수행합니다.

  1. 지원되는 데이터베이스 제품을 설치합니다.

    Application Server가 지원하는 데이터베이스 제품 목록에 대한 자세한 내용은 릴리스 노트를 참조하십시오.

  2. 데이터베이스 제품용 JDBC 드라이버를 설치합니다.

  3. 드라이버의 JAR 파일이 도메인의 서버 인스턴스에 액세스할 수 있게 합니다.

  4. 데이터베이스를 만듭니다.

    대개, 응용 프로그램 공급자가 데이터베이스를 만들고 채우는 스크립트를 제공합니다.

  5. 데이터베이스의 연결 풀을 만듭니다.

  6. 연결 풀을 가리키는 JDBC 자원을 만듭니다.

JDBC 드라이버를 관리 도메인에 통합하기 위해 다음 중 하나를 수행합니다.

  1. 드라이버가 공통 클래스 로더에 액세스할 수 있게 합니다.

    드라이버의 JAR 및 ZIP 파일을 domain-dir/lib 디렉토리로 복사하거나 해당 클래스 파일을 domain-dir/lib/ext 디렉토리로 복사합니다.

  2. 도메인을 다시 시작합니다.

  3. 드라이버의 JAR 파일에 대한 정규화된 경로 이름을 지정합니다.

JDBC 연결 풀 정보

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

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

JDBC 연결 풀 편집

JDBC 연결 풀 편집 페이지에서 이름을 제외한 기존 풀의 모든 설정을 변경할 수 있는 방법을 제공합니다.

  1. 일반 설정을 변경합니다.

    일반 설정 값은 설치된 특정 JDBC 드라이버에 따라 다릅니다. 이 설정은 Java 프로그래밍 언어로 된 인터페이스나 클래스의 이름입니다.

    매개 변수 

    설명 

    데이터 소스 클래스 이름 

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

    자원 유형 

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

  2. 풀 설정을 변경합니다.

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

    매개 변수 

    설명 

    초기 및 최소 풀 크기 

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

    최대 풀 크기 

    풀의 최대 연결 수입니다. 

    풀 크기 조정 개수 

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

    유휴 시간 초과 

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

    최대 대기 시간 

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

  3. 연결 검증 설정을 변경합니다.

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

    매개 변수 

    설명 

    연결 검증 

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

    검증 방법 

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

    자동 완결 및 메타데이터 - Application Server는 con.getAutoCommit()con.getMetaData() 메소드를 호출하여 연결을 검증합니다.


    주 –

    많은 JDBC 드라이버에서 이러한 호출의 결과를 캐시하기 때문에 항상 신뢰할 수 있는 검증을 제공하는 것은 아닙니다. 이러한 호출의 캐시 여부를 판단하려면 드라이버 공급업체에 확인합니다.


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

    테이블 이름 

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

    실패 시 

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

    구성 요소가 아닌 호출자 허용 

    서블릿 필터 및 라이프사이클 모듈과 같이 구성 요소가 아닌 호출자가 풀을 사용할 수 있도록 하려면 이 확인란을 누릅니다.  

  4. 트랜잭션 격리 설정을 변경합니다.

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

    매개 변수 

    설명 

    트랜잭션이 아닌 연결 

    Application Server에서 트랜잭션이 아닌 모든 연결을 반환하도록 하려면 이 확인란을 누릅니다. 

    트랜잭션 격리 

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

    격리 수준 보장 

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

  5. 등록 정보를 변경합니다.

    추가 등록 정보 테이블에서 데이터베이스 이름(URL), 사용자 이름 및 비밀번호 같은 등록 정보를 지정할 수 있습니다. 데이터베이스 공급업체에 따라 등록 정보가 다르기 때문에 자세한 내용은 공급업체의 설명서를 참조하십시오.

JDBC 연결 풀 고급 속성 편집

연결 누수를 진단하고 사용 편의성을 향상시키기 위해 Application Server 9.1은 연결 풀이 만들어지는 시점에서 이를 구성하기 위한 몇 가지 새로운 속성을 제공합니다.

  1. 고급 탭을 열고 다음 속성을 지정합니다.

    속성 

    설명 

    이름 

    편집할 등록 정보를 포함하는 JDBC 연결 풀의 이름입니다. 하지만 풀 이름은 변경할 수 없습니다. 

    명령문 시간 초과 

    비정상적으로 길게 실행되는 쿼리를 종료하기 전까지의 시간(초 단위)입니다. Application Server는 만들어지는 명령문에 "쿼리 시간 초과"를 설정합니다. 기본값인 -1은 속성이 활성화되지 않음을 의미합니다. 

    JDBC 객체 래핑 

    true로 설정하면 응용 프로그램은 Statement, PreparedStatement, CallableStatement, ResultSet, DatabaseMetaData에 대해 래핑된 JDBC 객체를 가져옵니다. 기본값은 false입니다. 

  2. 연결 설정은 다음 표의 설명과 같이 지정합니다.

    속성 

    설명 

    최대 1회 검증 

    연결이 최대 한 번 검증되기까지의 시간(초 단위)입니다. 연결의 검증 요청 수를 줄이는 데 도움이 됩니다. 기본값 0은 연결 검증이 활성화되지 않음을 의미합니다. 

    누수 시간 초과 

    연결 풀의 연결 누수를 추적할 시간(초 단위)입니다. 기본값 0은 연결 누수 추적이 비활성화됨을 의미합니다. 연결 누수 추적이 활성화되면 자원 모니터링 탭에서 연결 누수의 수에 대한 통계를 얻을 수 있습니다. 이 탭을 보려면 Application Server > 모니터링 > 자원으로 이동하십시오.  

    누수 재생 

    이 옵션을 활성화하면 누수된 연결이 누수 연결 추적 완료 후 풀로 복원됩니다. 

    만들기 재시도 횟수 

    새 연결 만들기에 실패한 경우 재시도할 횟수입니다. 기본값 0은 연결 만들기를 다시 시도하지 않음을 의미합니다. 

    재시도 간격 

    두 연결 만들기 시도 간의 간격(초 단위)을 지정합니다. 기본값은 10초입니다. 이 속성은 만들기 재시도 횟수의 값이 0보다 큰 경우에만 사용됩니다. 

    지연 연결 참여 

    메소드에 실제로 사용되는 자원만 트랜잭션에 참여시키려는 경우 이 옵션을 활성화합니다. 

    지연 연관 

    작업이 해당 연결에서 수행될 때 연결이 느리게 연결됩니다. 또한 트랜잭션이 완료되고 구성 요소 메소드가 종료되면 연관이 해제되어 물리적 연결의 재사용을 돕습니다. 기본값은 false입니다. 

    스레드와 연결 

    연결을 스레드와 연관시켜 연결에서 같은 스레드가 필요할 때 해당 스레드에 이미 연관된 연결을 재사용함으로써 풀에서 연결을 가져올 때 수반되는 오버헤드를 줄이려면 이 옵션을 활성화합니다. 기본값은 false입니다. 

    연결 일치 

    이 옵션을 사용하여 풀에 대한 연결 일치를 켜거나 끕니다. 풀의 연결이 항상 같은 종류이며 따라서 풀에서 선택된 연결을 자원 어댑터와 일치시킬 필요가 없음을 관리자가 알고 있을 때 false로 설정할 수 있습니다. 기본값은 false입니다. 

    최대 연결 사용 수 

    풀이 재사용할 연결 횟수를 지정합니다. 연결을 지정된 횟수만큼 재사용한 다음에는 해당 연결이 닫힙니다. 예를 들어 명령문 누수를 피하려고 할 때 유용합니다. 기본값인 0은 연결이 재사용되지 않음을 의미합니다. 

JDBC 자원 정보

JDBC 자원(데이터 소스)은 응용 프로그램에 데이터베이스 연결 수단을 제공합니다.

JDBC 자원을 만들기 전에 먼저 JDBC 연결 풀을 만드십시오.

JDBC 자원을 만들 때는 다음을 지정해야 합니다.

  1. JNDI 이름. 일반적으로 이 이름은 jdbc/ 문자열로 시작합니다. 예를 들면 다음과 같습니다. jdbc/payrolldb. 슬래시를 반드시 입력합니다.

  2. 새 JDBC 자원에 연관시킬 연결 풀을 선택합니다.

  3. 자원의 설정을 지정합니다.

  4. 자원을 사용할 수 있는 대상(클러스터 및 독립 실행형 서버 인스턴스)을 지정합니다.

특정 JDBC 드라이버에 대한 구성

Application Server 9.1은 모든 데이터베이스 관리 시스템 연결을 해당하는 JDBC 드라이버를 사용하여 지원하도록 개발되었습니다. 다음 JDBC 드라이버 및 데이터베이스 조합이 지원됩니다. 이 조합은 Application Server 9.1에서 테스트되었으며 J2EE와 호환됩니다. CMP에 대해서도 지원됩니다.

현재 지원되는 JDBC 드라이버의 최신 목록을 보려면 Sun Java System Application Server 9.1 릴리스 노트를 참조하십시오.

다른 JDBC 드라이버를 Application Server 9.1에서 사용할 수도 있지만 다른 드라이버의 경우 J2EE 호환성 테스트가 완료되지 않았습니다. Sun에서는 이러한 드라이버에 대한 제품 지원을 제공하지 않지만 Application Server 9.1에서 사용하는 경우에는 제한적으로 지원을 제공합니다.

JDBC 드라이버를 통합하는 방법과 관리 콘솔이나 명령줄 인터페이스를 사용하여 구성을 구현하는 방법에 대한 자세한 내용은 Sun Java System Application Server 9.1 관리 설명서를 참조하십시오.


주 –

스키마를 소유하지 않은 Oracle 데이터베이스 사용자가 capture-schema 명령을 실행하는 경우 ANALYZE ANY TABLE 권한이 있어야 합니다. 이러한 권한은 데이터베이스 관리자가 부여합니다. capture-schema 에 대한 자세한 내용은 Sun Java System Application Server 9.1 Reference Manual을 참조하십시오.


Derby Type 4 드라이버

Derby JDBC 드라이버는 Derby가 포함되지 않은 Solaris 번들 설치를 제외하고 Application Server에 기본적으로 포함되어 있습니다. 따라서 Solaris 번들 설치를 사용하는 경우가 아니면 이 JDBC 드라이버를 Application Server와 통합할 필요가 없습니다.

Derby 드라이버의 JAR 파일은 derbyclient.jar입니다.

다음 설정을 사용하여 연결 풀을 구성합니다.

DB2 데이터베이스용 Sun Java System JDBC 드라이버

이 드라이버의 JAR 파일은 smbase.jar, smdb2.jarsmutil.jar입니다. 다음 설정을 사용하여 연결 풀을 구성합니다.

Oracle 8.1.7 및 9.x 데이터베이스용 Sun Java System JDBC 드라이버

이 드라이버의 JAR 파일은 smbase.jar, smoracle.jarsmutil.jar입니다. 다음 설정을 사용하여 연결 풀을 구성합니다.

Microsoft SQL Server 데이터베이스용 Sun Java System JDBC 드라이버

이 드라이버의 JAR 파일은 smbase.jar, smsqlserver.jarsmutil.jar입니다. 다음 설정을 사용하여 연결 풀을 구성합니다.

Sybase 데이터베이스용 Sun Java System JDBC 드라이버

이 드라이버의 JAR 파일은 smbase.jar, smsybase.jarsmutil.jar입니다. 다음 설정을 사용하여 연결 풀을 구성합니다.

IBM DB2 8.1 Type 2 드라이버

DB2 드라이버의 JAR 파일은 db2jcc.jar, db2jcc_license_cu.jardb2java.zip입니다. 환경 변수를 다음과 같이 설정합니다.

LD_LIBRARY_PATH=/usr/db2user/sqllib/lib:${j2ee.home}/lib
DB2DIR=/opt/IBM/db2/V8.1
DB2INSTANCE=db2user
INSTHOME=/usr/db2user
VWSPATH=/usr/db2user/sqllib
THREADS_FLAG=native

다음 설정을 사용하여 연결 풀을 구성합니다.

Sybase ASE 12.5 데이터베이스용 JConnect Type 4 드라이버

Sybase 드라이버의 JAR 파일은 jconn2.jar입니다. 다음 설정을 사용하여 연결 풀을 구성합니다.

MM MySQL Type 4 드라이버(비XA)

MySQL 드라이버의 JAR 파일은 mysql-connector-java- version-bin-g.jar(예: mysql-connector-java-3.1.12-bin-g.jar)입니다. 다음 설정을 사용하여 연결 풀을 구성합니다.

MM MySQL Type 4 드라이버(XA 전용)

MySQL 드라이버의 JAR 파일은 mysql-connector-java- version-bin-g.jar(예: mysql-connector-java-3.1.12-bin-g.jar)입니다. 다음 설정을 사용하여 연결 풀을 구성합니다.

Oracle 8.1.7 및 9.x 데이터베이스용 Inet Oraxo JDBC 드라이버

Inet Oracle 드라이버의 JAR 파일은 Oranxo.jar입니다. 다음 설정을 사용하여 연결 풀을 구성합니다.

Microsoft SQL Server 데이터베이스용 Inet Merlia JDBC 드라이버

Inet Microsoft SQL Server 드라이버의 JAR 파일은 Merlia.jar입니다. 다음 설정을 사용하여 연결 풀을 구성합니다.

Sybase 데이터베이스용 Inet Sybelux JDBC 드라이버

Inet Sybase 드라이버의 JAR 파일은 Sybelux.jar입니다. 다음 설정을 사용하여 연결 풀을 구성합니다.

Oracle 8.1.7 및 9.x 데이터베이스용 Oracle Thin Type 4 드라이버

Oracle 드라이버의 JAR 파일은 ojdbc14.jar입니다. 다음 설정을 사용하여 연결 풀을 구성합니다.

Oracle 8.1.7 및 9.x 데이터베이스용 OCI Oracle Type 2 드라이버

OCI Oracle 드라이버의 JAR 파일은 ojdbc14.jar입니다. LD_LIBRARY_PATH를 통해 공유 라이브러리를 사용할 수 있으며 ORACLE_HOME 등록 정보가 설정되었는지 확인하십시오. 다음 설정을 사용하여 연결 풀을 구성합니다.

IBM Informix Type 4 드라이버

다음 설정을 사용하여 연결 풀을 구성합니다.

CloudScape 5.1 Type 4 드라이버

CloudScape 드라이버의 JAR 파일은 db2j.jar, db2jtools.jar, db2jcview.jar, jh.jar, db2jcc.jardb2jnet.jar입니다. 다음 설정을 사용하여 연결 풀을 구성합니다.