12.2. JDBC 드라이버
애플리케이션에서 사용할 데이터 소스를 JBoss EAP에 정의하기 전에 먼저 적절한 JDBC 드라이버를 설치해야 합니다.
12.2.1. JDBC 드라이버를 코어 모듈로 설치
JDBC 드라이버를 핵심 모듈로 설치하려면 먼저 JDBC 드라이버를 핵심 모듈로 추가한 다음 데이터 소스 하위 시스템에서
JDBC 드라이버를 등록해야 합니다.
12.2.1.1. JDBC 드라이버를 코어 모듈로 추가
JDBC 드라이버는 다음 단계를 사용하여 관리 CLI를 사용하여 코어 모듈로 설치할 수 있습니다.
JDBC 드라이버를 다운로드합니다.
데이터베이스 벤더에서 적절한 JDBC 드라이버를 다운로드합니다. JDBC 드라이버의 공통 데이터베이스의 표준 다운로드 위치는 JDBC 드라이버 다운로드 위치를 참조하십시오.
JDBC 드라이버 JAR 파일이 ZIP 또는 TAR 아카이브에 포함된 경우 아카이브를 추출해야 합니다.
- JBoss EAP 서버 시작.
관리 CLI를 시작합니다.
$ EAP_HOME/bin/jboss-cli.sh
모듈 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 드라이버에 권장되는 설치 방법은 핵심 모듈로 설치하는 것입니다.
JDBC 드라이버를 다운로드합니다.
데이터베이스 벤더에서 적절한 JDBC 드라이버를 다운로드합니다. JDBC 드라이버의 공통 데이터베이스의 표준 다운로드 위치는 JDBC 드라이버 다운로드 위치를 참조하십시오.
JDBC 드라이버 JAR 파일이 ZIP 또는 TAR 아카이브에 포함된 경우 아카이브를 추출해야 합니다.
- JDBC 드라이버가 JDBC 4 규격이 아닌 경우 JDBC 드라이버 JAR을 JDBC 4Compliant로 업데이트하는 단계를 참조하십시오.
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 규격이 아닌 경우 다음 단계를 사용하여 배포할 수 있습니다.
- 빈 임시 디렉터리를 만듭니다.
-
META-INF
하위 디렉터리를 만듭니다. -
META-INF/services
하위 디렉터리를 만듭니다. META-INF/services/java.sql.Driver
파일을 생성하고 한 행을 추가하여 JDBC 드라이버의 정규화된 클래스 이름을 나타냅니다.예를 들어 아래 행은 MySQL JDBC 드라이버에 대해 추가됩니다.
com.mysql.cj.jdbc.Driver
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 | |
PostgreSQL | |
Oracle | http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html |
IBM | |
Sybase | jConnect JDBC 드라이버는 SAP ASE 설치용 SDK의 일부입니다. 현재 이 드라이버에는 별도의 다운로드 사이트가 없습니다. |
Microsoft |
12.2.4. 벤더별 클래스 액세스
경우에 따라 애플리케이션에서 JDBC API의 일부가 아닌 벤더별 기능을 사용해야 합니다. 이러한 경우 해당 애플리케이션에 종속성을 선언하여 벤더별 API에 액세스할 수 있습니다.
이는 고급 사용량입니다. JDBC API에서 찾을 수 없는 기능이 필요한 애플리케이션만 이 절차를 구현해야 합니다.
이 프로세스는 재인증 메커니즘을 사용하고 공급업체별 클래스에 액세스할 때 필요합니다.
MANIFEST.MF 파일 또는
파일을 사용하여 애플리케이션에 대한 종속성을 정의할 수 있습니다.
jboss-deployment-structure.
xml
아직 완료하지 않은 경우 JDBC 드라이버를 코어 모듈로 설치합니다.
MANIFEST.MF
파일 사용
-
애플리케이션의
META-INF/MANIFEST.MF
파일을 편집합니다. 종속성 행
을 추가하고 모듈 이름을 지정합니다.예를 들어 아래 행은
com.mysql
모듈을 종속성으로 선언합니다.Dependencies: com.mysql
jboss-deployment-structure.xml
파일 사용
-
애플리케이션의
META
이라는 파일을 생성합니다.-INF/ 또는
structure.xmlWEB-INF/ 폴더에 jboss-
deployment- 종속성
요소를 사용하여 모듈을 지정합니다.예를 들어 다음 예제
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 지침을 밀접하게 따르십시오.