본문으로 건너뛰기

9.4 데이터소스 관련 주요 CLI

데이터소스 등록하는 CLI 명령

다음 CLI는 ‘MariaDB_DS’ 데이터소스를 추가하는 명령이다.

[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"}

데이터소스 확인 하는 CLI 명령

JBoss EAP 6에서는 기본적으로 ExampleDS 라는 샘플 데이터소스가 정의되어 있다.

[standalone@localhost:9999 /] /subsystem=datasources:read-resource
{
"outcome" => "success",
"result" => {
"xa-data-source" => undefined,
"data-source" => {
"ExampleDS" => undefined,
"MariaDB_DS" => undefined
},
"jdbc-driver" => {
"h2" => undefined,
"mariadb" => undefined
}
}
}

여기에 표시되는 data-source와 xa-data-source가 데이터소스의 리소스 타입이다.

data-source와 xa-data-source의 차이는 JTA나 JTS의 분산 트랜잭션의 XA리소스로 사용할 수 있는지에 따라 다르다. 즉, data-source는 분산 트랜잭션를 지원하지 않는 데이터소스이며, xa-data-source는 분산 트랜잭션을 지원한다. 애플리케이션에서 분산 트랜잭션을 사용하는지에 따라 필요한 데이터소스 설정 항목이 달라서 JBoss EAP 6에서도 두 종류의 데이터소스 리소스 타입을 지원한다. 일반적으로 data-source를 Non-XA데이터소스라고 부르고, xa-data-source를 XA데이터소스라고 한다.

데이터소스는 Non-XA 데이터소스와 XA데이터소스의 두 가지 모두를 정의할 수도 있다. 두 가지 데이터소스를 함께 사용하는 경우 JNDI이름을 Non-XA와 XA 를 구분할 수 있도록 설정하는 것이 좋다. 데이터소스를 만들 때 JDBC 드라이버가 먼저 설치되어 있어야 한다.

데이터소스 상세 정보 확인

설정은 관리 자원의 /subsystem=datasources/data-source=<추가할 데이터소스명> 자식 속성에 대해서 :write-attirbute를 사용할 수 있지만, 아래와 같은 data-source 명령으로 설정할 수 있다.

[standalone@localhost:9999 /] data-source read-resource --name=MariaDB_DS
allocation-retry=n/a
allocation-retry-wait-millis=n/a
allow-multiple-users=false
background-validation=n/a
background-validation-millis=n/a
blocking-timeout-wait-millis=n/a
check-valid-connection-sql=n/a
connection-properties=n/a
connection-url=jdbc:mysql://localhost:3306/mysql
datasource-class=n/a
driver-class=n/a
driver-name=mariadb
enabled=true
………..[생략]
jdbc=n/a
pool=n/a

데이터소스 Enable/Disable

새로 작성한 데이터소스는 기본적으로 ‘disable’ 상태이다. ‘enable’로 변경하여야, 애플리케이션에서 사용할 수 있다. ‘disable’ 상태인 Non-XA 데이터소스는 data-source 명령으로 ‘enable’로 변경할 수 있다.

  • 데이터소스 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]`
    }
  • 데이터소스 disable

    사용 중인 Non-XA 데이터소스를 ‘disable’으로 변경하려면 다음과 같은 data-source 명령으로 ‘enable’을 ‘disable’’로 변경할 수 있지만, ‘disable’로 변경할 때는 서버를 재기동할 때까지 설정에 반영하지 않기 때문에, 서버를 재기동하여야 한다. 도메인 모드에서는 reload 명령을 실행하면 서버가 재기동 된다.

    [standalone@localhost:9999 /] data-source disable --name=MariaDB_DS
    operation-requires-reload true
    process-state reload-required
    [standalone@localhost:9999 /] /:reload

    데이터소스가 disable 되어 있을 때 연결에 대해서 연결 테스트를 하게 되면 아래와 같은 에러 메시지가 출력된다.

    [standalone@localhost:9999 /] /subsystem=datasources/data-source=MariaDB_DS:test-connection-in-pool

    {
    "outcome" => "failed",
    "failure-description" => "JBAS010440: failed to invoke operation: JBAS010442: failed to match pool. Check JndiName: java:jboss/datasources/MariaDB_DS",
    "rolled-back" => true
    }

데이터소스 제거 하기

data-source 명령의 remove를 사용하여 데이터소스를 삭제할 수 있다.

[standalone@localhost:9999 /] data-source remove --name=MariaDB_DS

JDBC 드라이버를 확인하는 CLI 명령

  • jdbc-driver-info

    설치된 JDBC 드라이버들을 확인한다.

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

    NAME SOURCE

    h2 com.h2database.h2/main

    mariadb-java-client-1.1.5.jar mariadb-java-client-1.1.5.jar
  • jdbc-driver-info mariadb

    JDBC 드라이버에 대한 상세한 정보를 확인한다.

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

    driver-name mariadb

    deployment-name n/a

    driver-module-name system.layers.base.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
  • /subsystem=datasources:installed-drivers-list

    설치된 JDBC 드라이버들에 대한 상세 정보를 표시한다.

[standalone@localhost:9999 /] /subsystem=datasources:installed-drivers-list
{
"outcome" => "success",
"result" => [
{
"driver-name" => "h2",
"deployment-name" => undefined,
"driver-module-name" => "com.h2database.h2",
"module-slot" => "main",
"driver-datasource-class-name" => "",
"driver-xa-datasource-class-name" => "org.h2.jdbcx.JdbcDataSource",
"driver-class-name" => "org.h2.Driver",
"driver-major-version" => 1,
"driver-minor-version" => 3,
"jdbc-compliant" => true
},
{
"driver-name" => "mariadb-java-client-1.1.5.jar",
"deployment-name" => "mariadb-java-client-1.1.5.jar",
"driver-module-name" => undefined,
"module-slot" => undefined,
"driver-datasource-class-name" => undefined,
"driver-xa-datasource-class-name" => undefined,
"driver-class-name" => "org.mariadb.jdbc.Driver",
"driver-major-version" => 1,
"driver-minor-version" => 1,
"jdbc-compliant" => false
}
]
}

JDBC 드라이버를 제거하는 CLI 명령

  • /subsystem=datasources/jdbc-driver에서 JDBC 드라이버 제거하기

    설치된 JDBC 드라이버를 다음과 같은 방법으로 제거한다.

[standalone@localhost:9999 /] /subsystem=datasources/jdbc-driver=mariadb:remove

{"outcome" => "success"}
[standalone@localhost:9999 /] jdbc-driver-info

NAME SOURCE

h2 com.h2database.h2/main
  • module remove 통한 JDBC 드라이버 제거하기

    설치된 JDBC 드라이버를 다음과 같은 방법으로 제거한다.

[standalone@localhost:9999 /] module remove --name=system.layers.base.org.mariadb