9.3 JDBC 드라이버 등록
JBoss EAP 6 에서 JDBC 드라이버를 등록하는 두 가지의 방법이 있다. 하나는 JDBC 드라이버인 jar 파일 자체를 애플리케이션처럼 배포하여 등록하는 방법과 JDBC 드라이버 jar 파일을 모듈 형태로 패키징하여 등록하는 방법이다. 다음의 표는 두 가지 JDBC 드라이버 등록 방법에 대한 비교표이다.
-
JDBC 드라이버 등록 방법 - jar 파일 배포와 모듈 패키지 배포의 비교
항목 jar 파일 배포 모듈형태 배포 설치 방법 jar 파일로 배포하는 경우에 동적 모듈로 인식하여 데이터소스로부터 참조 가능한 상태가 된다. •$JBOSS_HOME/modules 디렉터리 아래에 복사하여 모듈화한다. 이러한 커스텀 모듈은 다른 모듈로부터 의존관계(dependencies)로 참조되는 경우 사용된다. 도메인 관리 여부 도메인 환경에서 여러 개의 인스턴스를 관리하는 경우 배포도 일괄 관리할 수 있어, 여러 개의 인스턴스가 사용하고 있는 JDBC 드라이버를 일괄적으로 버전 업그레이드하는 관리가 가능하다. 커스텀 모듈은 도메인모드의 관리 대상이 아니어서, 여러 개의 노드에 대해 일괄 관리할 수 없다. JDBC 드라이버 패키지 JDBC 드라이버가 여러 개의 jar 파일로 구성된 경우, 배포하면 다른 모듈로 인식되기 때문에, 이 방법을 사용할 수 없다. 모듈을 정의할 때 jar 파일을 여러 개 지정할 수 있기 때문에 JDBC 드라이버의 jar 파일이 여러 개일 경우에도 사용할 수 있다. 표 1. JDBC 드라이버 배포 방법 비교
위의 두 가지 방법은 설치나 사용 조건이 달라서, 필요에 따라서 구분하여 사용하여야 한다.
다음에서 두 가지 방법에 대해서 JDBC 드라이버의 설치 방법을 순서대로 설명한다. 관리 리소스의 /subsystem=datasources 리소스 아래에 jdbc-driver라는 리소스 타입이 존재한다. JAR 파일을 배포하여 설치하는 경우 jdbc 리소스를 작성할 필요는 없지만, 커스텀 모듈을 작성하여 설치하는 경우에는 jdbc 에 대한 모듈 리소스를 작성해야 한다.
JDBC 드라이버 다운로드
데이터베이스에 연결하려면 먼저 데이터베이스 벤더에서 제공하는 JDBC 드라이버가 필요하다. 사용하려는 데이터베이스 벤더가 제공하는 JDBC 드라이버를 다음 표의 URL에서 다운로드 받을 수 있다. 이 책에서는 MariaDB를 사용하고 있어 ‘MariaDB Client Library for Java Applications’을 다운로드 받는다.
표2. JDBC 드라이버 다운로드 위치
배포를 통한 JDBC 드라이버 설치
따라하기
- JDBC jar 파일 다운로드
- DataSource 등록
- DataSource 속성 등록
- JDBC 드라이버 선택
- JDBC Connection 정보 입력
- 등록 데이터소스 [Enable]
- 데이터소스 [Enable] 확인
- Test Connection 선택
- JDBC 데이터소스 테스트 확인
-
JDBC jar 파일 다운로드
다음의 URL에서 JDBC 드라이버를 다운로드 한다.
-
MariaDB Client Library for Java Applications 1.1.5 Stable- https://downloads.mariadb.org/client-java/1.1.5/
-
JDBC 드라이버 jar 파일의 배포는 일반 애플리케이션과 마찬가지로 관리도구를 사용하면 된다. 관리 콘 솔로 JDBC 드라이버를 설치하는 방법은 일반적인 애플리케이션archive파일을 배포하는 것과 같다.
아래는 관리 CLI를 사용해 JDBC 드라이버 mariadb-java-client-1.1.5.jar를 설치하는 예이다.
[standalone@localhost:9999 /] deploy /EAP6book/download/mariadb-java-client-1.1.5.jar
-
-
DataSource 등록

-
DataSource 속성 등록
데이터소스에 대한 JNDI 이름 등록

-
JDBC 드라이버 선택
설치한 MariaDB JDBC 드라이버 선택

-
JDBC Connection 정보 입력
‘Connection Settings’ 입력 값은 다음 표와 같다.
항목 설정 값 Connection URL jdbc:mysql://locahost:3306/test Username root Password password Security Domain (공백) Connection 설정 부분은 아래의 그림과 같습니다.

-
등록 데이터소스 [Enable]

-
데이터소스 [Enable] 확인

-
Test Connection선택

-
JDBC 데이터소스 테스트 확인

모듈로 JDBC 드라이버 설치
배포하는 방법과 마찬가지로 MariaDB JDBC 드라이버를 모듈로 등록하는 방법을 살펴보자.
MariaDB 용 JDBC 드라이버 모듈로 등록하는 절차는 다음과 같다.
따라하기
- JDBC 드라이버 다운로드
- 사용자 모듈 배포를 위한 layers.conf 파일 작성
- 모듈배포를 위한 디렉터리 생성
- JDBC 드라이버 복사
- module.xml 파일 작성
- JDBC 드라이버등록
-
JDBC 드라이버 다운로드
다음URL에서 JDBC 드라이버를 다운로드한다.
MariaDB Client Library for Java Applications 1.1.5 Stable- https://downloads.mariadb.org/client-java/1.1.5/
-
사용자 모듈 배포를 위한 layers.conf 파일 작성
사용자 모듈을 별도의 디렉터리에 보관하기 위해 layers.conf 파일을 작성한다.
JBOSS_HOME/modules/system/layers/layers.conf**
파일의 내용은 다음과 같다.
layers=ext
-
모듈 배포를 위한 디렉터리 생성
$JBOSS_HOME/modules/system/layers/ext/디렉터리 아래와 같은 파일 경로를 생성한다. MariaDB의 경우 다음과 같이 디렉터리를 생성한다. JBOSS_HOME/modules/system/layers/ext/org/mariadb/main** -
JDBC 드라이버 복사
$ *cd /EAP6book/download*$ *cp mariadb-java-client-1.1.5.jar $JBOSS_HOME/modules/system/layers/ext/org/mariadb/main/* -
module.xml 파일 작성
$JBOSS_HOME/system/layers/base/org/mariadb/main/디렉터리에 다음 내용과 같은 MariaDB를 위한 module.xml 파일을 만든다.$ cd $JBOSS_HOME/modules/system/layers/ext/org/mariadb/main$ vi module.xmlmodule.xml 파일의 내용은 다음과 같다.
<?xml version="1.0" encoding="UTF-8"?><module xmlns="urn:jboss:module:1.1" name="org.mariadb"><resources><resource-root path="mariadb-java-client-1.1.5.jar"/></resources><dependencies><module name="javax.api"/><module name="javax.transaction.api"/><module name="javax.servlet.api" optional="true"/></dependencies></module>모듈 이름 org.mariadb는 모듈의 디렉터리 구조와 같아야 한다.
-
JDBC 드라이버등록
JBoss 인스턴스를 시작하고, CLI를 사용하여 모듈로 등록한 MariaDB 드라이버를 등록한다.
$ cd $JBOSS_HOME/bin$ ./standalone.shJBoss CLI를 시작한다.
$ cd $JBOSS_HOME/bin$ ./jboss-cli.sh -c모듈을 등록한다.
[standalone@localhost:9999 /] /subsystem=datasources/jdbc-driver=mariadb:add(driver-name=mariadb,driver-module-name=org.mariadb)
{"outcome" => "success"}
CLI의 module 명령을 사용한 등록방법
아래와 같이 CLI의 module 명령을 사용하여 JDBC 드라이버를 등록할 수도 있다.
따라하기
- JDBC 드라이버를 모듈로 등록
- JDBC 드라이버 등록
- JDBC 드라이버 확인
- CLI를 사용한 데이터소스 등록
- 데이터소스 Enable
- 테이터소스 연결 테스트
- 등록된 module에 대한 정보 확인
- JDBC 드라이버를 모듈로 등록
[standalone@localhost:9999 /] module add --name=system.layers.ext.org.mariadb --resources=/EAP6book/download/mariadb-java-client-1.1.5.jar --dependencies=javax.api,javax.transaction.api
- JDBC 드라이버 등록
[standalone@localhost:9999 /] **/subsystem=datasources/jdbc-driver=mariadb:add(driver-module-name=system.layers.ext.org.mariadb,driver-name=mariadb,driver-xa-datasource-class-name=org.mariadb.jdbc.jdbc2.optional.MysqlXADataSource)**
{"outcome" => "success"}
-
JDBC 드라이버 확인
-
JDBC 드라이버 리스트
[standalone@localhost:9999 /] jdbc-driver-infoNAME SOURCEh2 com.h2database.h2/mainmariadb system.layers.ext.org.mariadb/main -
JDBC 드라이버 등록 정보 확인
[standalone@localhost:9999 /] jdbc-driver-info mariadbdriver-name mariadbdeployment-name n/adriver-module-name system.layers.ext.org.mariadbmodule-slot maindriver-datasource-class-namedriver-xa-datasource-class-name org.mariadb.jdbc.jdbc2.optional.MysqlXADataSourcedriver-class-name org.mariadb.jdbc.Driverdriver-major-version 1driver-minor-version 1jdbc-compliant false
-
-
CLI를 사용한 데이터소스 등록
[standalone@localhost:9999 /] **/subsystem=datasources/data-source=MariaDB_DS:add(jndi-name="java:jboss/datasources/MariaDB_DS",use-java-context=true,user-name=root,password=password,connection-url="jdbc:mysql://localhost:3306/test",min-pool-size=20,max-pool-size=50,driver-name=mariadb,flush-strategy=FailingConnectionOnly)**
{"outcome" => "success"}
- 데이터소스 Enable
[standalone@localhost:9999 /] **data-source enable --name=MariaDB_DS**
- 테이터소스 연결 테스트
[standalone@localhost:9999 /] **/subsystem=datasources/data-source=MariaDB_DS:test-connection-in-pool**
{
"outcome" => "success",
"result" => [true]
}
-
등록된 module에 대한 정보 확인
module 명령 실행 후 $JBOSS_HOME/modules 디렉터리 아래를 확인하면, module커멘드로 정의한 커스텀 모듈이 작성된 것을 확인 할 수 있다.
-
등록된 module에 대한 정보 확인
$ cd $JBOSS_HOME/modules/system/layers/ext/org/mariadb/main$ lsmariadb-java-client-1.1.5.jar module.xml -
해당 디렉터리의 module.xml 을 확인해 보면 다음과 같다.
<?xml version="1.0" ?><module xmlns="urn:jboss:module:1.1" name="system.layers.ext.org.mariadb"><resources><resource-root path="mariadb-java-client-1.1.5.jar"/></resources><dependencies><module name="javax.api"/><module name="javax.transaction.api"/></dependencies></module>
-
모듈 등록 시 사용하는 파라미터
표3. 모듈 등록 시 사용하는 주요 파라미터
| 속성 | 설명 | 예제 |
|---|---|---|
| name | * 모듈 이름을 지정 * 이 모듈 이름은 $JBOSS_HOME/modules 디렉터리로부터의 상대 경로를 ‘. ‘로 연결한 것이다. | org.mariadb |
| resource | 모듈화 대상이 되는 리소스를 지정. 절대 경로 또는 $JBOSS_HOME/bin부터의 상대 경로로 지정 | /EAP6book/download/mariadb-java-client-1.1.5.jar |
| dependencies | * 의존관계(dependencies)를 지정 * 여러 개를 지정하려면 컴마로 구분한다. * JDBC 드라이버는 javax.api와 javax.transaction.api를 지정해야 한다. | * javax.api * javax.transaction.api |