본문으로 건너뛰기

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’을 다운로드 받는다.

Vendor다운로드 위치
MariaDBhttps://downloads.mariadb.org/
MySQLhttp://www.mysql.com/products/connector/
PostgreSQLhttp://jdbc.postgresql.org/
Oraclehttp://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html
IBM DB2http://www-306.ibm.com/software/data/db2/java/
Sybasehttp://www.sybase.com/products/allproductsa-z/softwaredeveloperkit/jconnect
Microsoft SQL Serverhttp://msdn.microsoft.com/data/jdbc/

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

배포를 통한 JDBC 드라이버 설치

따라하기

  1. JDBC jar 파일 다운로드
  2. DataSource 등록
  3. DataSource 속성 등록
  4. JDBC 드라이버 선택
  5. JDBC Connection 정보 입력
  6. 등록 데이터소스 [Enable]
  7. 데이터소스 [Enable] 확인
  8. Test Connection 선택
  9. JDBC 데이터소스 테스트 확인
  1. 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

  2. DataSource 등록

  3. DataSource 속성 등록

    데이터소스에 대한 JNDI 이름 등록

  4. JDBC 드라이버 선택

    설치한 MariaDB JDBC 드라이버 선택

  5. JDBC Connection 정보 입력

    ‘Connection Settings’ 입력 값은 다음 표와 같다.

    항목설정 값
    Connection URLjdbc:mysql://locahost:3306/test
    Usernameroot
    Passwordpassword
    Security Domain(공백)

    Connection 설정 부분은 아래의 그림과 같습니다.

  6. 등록 데이터소스 [Enable]

  7. 데이터소스 [Enable] 확인

  8. Test Connection선택

  9. JDBC 데이터소스 테스트 확인

모듈로 JDBC 드라이버 설치

배포하는 방법과 마찬가지로 MariaDB JDBC 드라이버를 모듈로 등록하는 방법을 살펴보자.

MariaDB 용 JDBC 드라이버 모듈로 등록하는 절차는 다음과 같다.

따라하기

  1. JDBC 드라이버 다운로드
  2. 사용자 모듈 배포를 위한 layers.conf 파일 작성
  3. 모듈배포를 위한 디렉터리 생성
  4. JDBC 드라이버 복사
  5. module.xml 파일 작성
  6. JDBC 드라이버등록
  1. JDBC 드라이버 다운로드

    다음URL에서 JDBC 드라이버를 다운로드한다.

    MariaDB Client Library for Java Applications 1.1.5 Stable- https://downloads.mariadb.org/client-java/1.1.5/

  2. 사용자 모듈 배포를 위한 layers.conf 파일 작성

    사용자 모듈을 별도의 디렉터리에 보관하기 위해 layers.conf 파일을 작성한다.

    vi**viJBOSS_HOME/modules/system/layers/layers.conf**

    파일의 내용은 다음과 같다.

    layers=ext

  3. 모듈 배포를 위한 디렉터리 생성

    $JBOSS_HOME/modules/system/layers/ext/ 디렉터리 아래와 같은 파일 경로를 생성한다. MariaDB의 경우 다음과 같이 디렉터리를 생성한다. mkdirp**mkdir -pJBOSS_HOME/modules/system/layers/ext/org/mariadb/main**

  4. JDBC 드라이버 복사

    $ *cd /EAP6book/download*

    $ *cp mariadb-java-client-1.1.5.jar $JBOSS_HOME/modules/system/layers/ext/org/mariadb/main/*
  5. 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.xml

    module.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는 모듈의 디렉터리 구조와 같아야 한다.

  6. JDBC 드라이버등록

    JBoss 인스턴스를 시작하고, CLI를 사용하여 모듈로 등록한 MariaDB 드라이버를 등록한다.

    $ cd $JBOSS_HOME/bin

    $ ./standalone.sh

    JBoss 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 드라이버를 등록할 수도 있다.

따라하기

  1. JDBC 드라이버를 모듈로 등록
  2. JDBC 드라이버 등록
  3. JDBC 드라이버 확인
  4. CLI를 사용한 데이터소스 등록
  5. 데이터소스 Enable
  6. 테이터소스 연결 테스트
  7. 등록된 module에 대한 정보 확인
  1. 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
  1. 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"}
  1. JDBC 드라이버 확인

    • JDBC 드라이버 리스트

      [standalone@localhost:9999 /] jdbc-driver-info

      NAME SOURCE

      h2 com.h2database.h2/main

      mariadb system.layers.ext.org.mariadb/main
    • JDBC 드라이버 등록 정보 확인

      [standalone@localhost:9999 /] jdbc-driver-info mariadb

      driver-name mariadb

      deployment-name n/a

      driver-module-name system.layers.ext.org.mariadb

      module-slot main

      driver-datasource-class-name

      driver-xa-datasource-class-name org.mariadb.jdbc.jdbc2.optional.MysqlXADataSource

      driver-class-name org.mariadb.jdbc.Driver

      driver-major-version 1

      driver-minor-version 1

      jdbc-compliant false
  2. 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"}
  1. 데이터소스 Enable
[standalone@localhost:9999 /] **data-source enable --name=MariaDB_DS**
  1. 테이터소스 연결 테스트
[standalone@localhost:9999 /] **/subsystem=datasources/data-source=MariaDB_DS:test-connection-in-pool**
{
"outcome" => "success",
"result" => [true]
}
  1. 등록된 module에 대한 정보 확인

    module 명령 실행 후 $JBOSS_HOME/modules 디렉터리 아래를 확인하면, module커멘드로 정의한 커스텀 모듈이 작성된 것을 확인 할 수 있다.

    • 등록된 module에 대한 정보 확인

      $ cd $JBOSS_HOME/modules/system/layers/ext/org/mariadb/main

      $ ls

      mariadb-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