12.2. JDBC 드라이버

애플리케이션에서 사용할 데이터 소스를 JBoss EAP에 정의하기 전에 먼저 적절한 JDBC 드라이버를 설치해야 합니다.

12.2.1. JDBC 드라이버를 코어 모듈로 설치

JDBC 드라이버를 핵심 모듈로 설치하려면 먼저 JDBC 드라이버를 핵심 모듈로 추가한 다음 데이터 소스 하위 시스템에서 JDBC 드라이버를 등록해야 합니다.

12.2.1.1. JDBC 드라이버를 코어 모듈로 추가

JDBC 드라이버는 다음 단계를 사용하여 관리 CLI를 사용하여 코어 모듈로 설치할 수 있습니다.

  1. JDBC 드라이버를 다운로드합니다.

    데이터베이스 벤더에서 적절한 JDBC 드라이버를 다운로드합니다. JDBC 드라이버의 공통 데이터베이스의 표준 다운로드 위치는 JDBC 드라이버 다운로드 위치를 참조하십시오.

    JDBC 드라이버 JAR 파일이 ZIP 또는 TAR 아카이브에 포함된 경우 아카이브를 추출해야 합니다.

  2. JBoss EAP 서버 시작.
  3. 관리 CLI를 시작합니다.

    $ EAP_HOME/bin/jboss-cli.sh
  4. 모듈 add management CLI 명령을 사용하여 새 core 모듈을 추가합니다.

    [disconnected /] module add --name=MODULE_NAME --resources=PATH_TO_JDBC_JAR --dependencies=DEPENDENCIES

    예제

    다음 명령은 MySQL JDBC 드라이버 모듈을 추가합니다.

    [disconnected /] module add --name=com.mysql --resources=/path/to/mysql-connector-java-8.0.12.jar --dependencies=javax.transaction.api,sun.jdk,ibm.jdk,javaee.api,javax.api

    예제

    관리 CLI를 시작하고 단일 단계에서 새 core 모듈을 추가하려면 다음 명령을 사용하십시오.

    $ EAP_HOME/bin/jboss-cli.sh --command="module add --name=MODULE_NAME --resources=PATH_TO_JDBC_JAR --dependencies=DEPENDENCIES"
    중요

    모듈 관리 CLI 명령을 사용하여 모듈 추가 및 제거는 기술 프리뷰로만 제공됩니다. 이 명령은 관리형 도메인에서 사용하거나 관리 CLI에 원격으로 연결하는 데 적합하지 않습니다. 모듈은 프로덕션 환경에서 수동으로 추가제거해야 합니다.

    기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원하지 않으며, 기능상 완전하지 않을 수 있어 프로덕션에 사용하지 않는 것이 좋습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

    기술 프리뷰 기능에 대한 지원 범위에 대한 자세한 내용은 Red Hat 고객 포털의 기술 프리뷰 기능 지원 범위를 참조하십시오.

    이 명령을 사용하여 모듈 추가 및 제거에 대한 자세한 내용은 module --help 를 실행합니다.

애플리케이션 데이터 소스에서 참조하려면 다음에 JDBC 드라이버로 등록해야 합니다.

12.2.1.2. JDBC 드라이버 등록

드라이버가 코어 모듈로 설치되면 다음 관리 CLI 명령을 사용하여 JDBC 드라이버로 등록해야 합니다. 관리형 도메인에서 실행하는 경우 이 명령 앞에 /profile=PROFILE_NAME 을 사용해야 합니다.

/subsystem=datasources/jdbc-driver=DRIVER_NAME:add(driver-name=DRIVER_NAME,driver-module-name=MODULE_NAME,driver-xa-datasource-class-name=XA_DATASOURCE_CLASS_NAME, driver-class-name=DRIVER_CLASS_NAME)
참고

driver-class-name 매개 변수는 JDBC 드라이버 jar가 /META-INF/services/java.sql.Driver 파일에 둘 이상의 클래스를 정의하는 경우에만 필요합니다.

예를 들어 MySQL 5.1.36 JDBC 드라이버 JAR의 /META-INF/services/java.sql.Driver 파일은 다음 두 개의 클래스를 정의합니다.

  • com.mysql.cj.jdbc.Driver
  • com.mysql.fabric.jdbc.FabricMySQLDriver

이 경우 driver-class-name=com.mysql.cj.jdbc.Driver 로 전달합니다.

예를 들어 다음 명령은 MySQL JDBC 드라이버를 등록합니다.

/subsystem=datasources/jdbc-driver=mysql:add(driver-name=mysql,driver-module-name=com.mysql,driver-xa-datasource-class-name=com.mysql.cj.jdbc.MysqlXADataSource, driver-class-name=com.mysql.cj.jdbc.Driver)

이제 애플리케이션 데이터 소스에서 JDBC 드라이버를 참조할 수 있습니다.

12.2.2. JDBC 드라이버를 JAR 배포로 설치

JDBC 드라이버는 관리 CLI 또는 관리 콘솔을 사용하여 JAR 배포로 설치할 수 있습니다. 드라이버가 JDBC 4 규격인 한 배포 시 JDBC 드라이버로 자동 인식 및 설치됩니다.

다음 단계에서는 관리 CLI를 사용하여 JDBC 드라이버를 설치하는 방법을 설명합니다.

참고

JDBC 드라이버에 권장되는 설치 방법은 핵심 모듈로 설치하는 것입니다.

  1. JDBC 드라이버를 다운로드합니다.

    데이터베이스 벤더에서 적절한 JDBC 드라이버를 다운로드합니다. JDBC 드라이버의 공통 데이터베이스의 표준 다운로드 위치는 JDBC 드라이버 다운로드 위치를 참조하십시오.

    JDBC 드라이버 JAR 파일이 ZIP 또는 TAR 아카이브에 포함된 경우 아카이브를 추출해야 합니다.

  2. JDBC 드라이버가 JDBC 4 규격이 아닌 경우 JDBC 드라이버 JAR을 JDBC 4Compliant로 업데이트하는 단계를 참조하십시오.
  3. JAR을 JBoss EAP에 배포합니다.

    deploy PATH_TO_JDBC_JAR
    참고

    관리형 도메인에서 적절한 서버 그룹을 지정합니다.

    예를 들어 다음 명령은 MySQL JDBC 드라이버를 배포합니다.

    deploy /path/to/mysql-connector-java-8.0.12.jar

    데이터 소스를 정의할 때 사용할 배포된 드라이버 이름을 표시하는 JBoss EAP 서버 로그에 메시지가 표시됩니다.

    WFLYJCA0018: Started Driver service with driver-name = mysql-connector-java-8.0.12.jar

이제 애플리케이션 데이터 소스에서 JDBC 드라이버를 참조할 수 있습니다.

JDBC 드라이버 JAR을 JDBC 4 Compliant로 업데이트

JDBC 드라이버 JAR이 JDBC 4 규격이 아닌 경우 다음 단계를 사용하여 배포할 수 있습니다.

  1. 빈 임시 디렉터리를 만듭니다.
  2. META-INF 하위 디렉터리를 만듭니다.
  3. META-INF/services 하위 디렉터리를 만듭니다.
  4. META-INF/services/java.sql.Driver 파일을 생성하고 한 행을 추가하여 JDBC 드라이버의 정규화된 클래스 이름을 나타냅니다.

    예를 들어 아래 행은 MySQL JDBC 드라이버에 대해 추가됩니다.

    com.mysql.cj.jdbc.Driver
  5. JAR 명령줄 도구를 사용하여 이 새 파일을 JAR에 추가합니다.

    jar \-uf jdbc-driver.jar META-INF/services/java.sql.Driver

12.2.3. JDBC 드라이버 다운로드 위치

다음 표에는 JBoss EAP와 함께 사용되는 공통 데이터베이스의 JDBC 드라이버에 대한 표준 다운로드 위치가 나와 있습니다.

참고

이러한 링크는 Red Hat에서 제어하거나 적극적으로 모니터링하지 않는 타사 웹 사이트를 가리킵니다. 데이터베이스용 최신 드라이버의 경우 데이터베이스 벤더의 설명서 및 웹사이트를 확인하십시오.

표 12.1. JDBC 드라이버 다운로드 위치

벤더위치 다운로드

MySQL

http://www.mysql.com/products/connector/

PostgreSQL

http://jdbc.postgresql.org/

Oracle

http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html

IBM

http://www-01.ibm.com/support/docview.wss?uid=swg21363866

Sybase

jConnect JDBC 드라이버는 SAP ASE 설치용 SDK의 일부입니다. 현재 이 드라이버에는 별도의 다운로드 사이트가 없습니다.

Microsoft

http://msdn.microsoft.com/data/jdbc/

12.2.4. 벤더별 클래스 액세스

경우에 따라 애플리케이션에서 JDBC API의 일부가 아닌 벤더별 기능을 사용해야 합니다. 이러한 경우 해당 애플리케이션에 종속성을 선언하여 벤더별 API에 액세스할 수 있습니다.

주의

이는 고급 사용량입니다. JDBC API에서 찾을 수 없는 기능이 필요한 애플리케이션만 이 절차를 구현해야 합니다.

중요

이 프로세스는 재인증 메커니즘을 사용하고 공급업체별 클래스에 액세스할 때 필요합니다.

MANIFEST.MF 파일 또는 jboss-deployment-structure. xml 파일을 사용하여 애플리케이션에 대한 종속성을 정의할 수 있습니다.

아직 완료하지 않은 경우 JDBC 드라이버를 코어 모듈로 설치합니다.

MANIFEST.MF 파일 사용
  1. 애플리케이션의 META-INF/MANIFEST.MF 파일을 편집합니다.
  2. 종속성 행 을 추가하고 모듈 이름을 지정합니다.

    예를 들어 아래 행은 com.mysql 모듈을 종속성으로 선언합니다.

    Dependencies: com.mysql
jboss-deployment-structure.xml 파일 사용
  1. 애플리케이션의 META -INF/ 또는 WEB-INF/ 폴더에 jboss- deployment- structure.xml 이라는 파일을 생성합니다.
  2. 종속성 요소를 사용하여 모듈을 지정합니다.

    예를 들어 다음 예제 jboss-deployment-structure.xml 파일은 com.mysql 모듈을 종속성으로 선언합니다.

    <jboss-deployment-structure>
      <deployment>
        <dependencies>
          <module name="com.mysql"/>
        </dependencies>
      </deployment>
    </jboss-deployment-structure>

아래 예제 코드는 MySQL API에 액세스합니다.

import java.sql.Connection;
...
Connection c = ds.getConnection();
if (c.isWrapperFor(com.mysql.jdbc.Connection.class)) {
    com.mysql.jdbc.Connection mc = c.unwrap(com.mysql.jdbc.Connection.class);
}
중요

연결은 IronJacamar 컨테이너에서 제어하기 때문에 벤더별 API 지침을 밀접하게 따르십시오.