9.6 XA JDBC 드라이버와 데이터소스 설정
XA데이터소스 작성 및 설정 방법에 대해 설명한다. XA 데이터소스를 설정하기 위해서는 먼저 분산 트랜잭션을 지원하는 JDBC 드라이버가 설치되어 있어야 한다.
XA데이터소스를 추가하는 절차도 Non-XA 데이터소스를 추가하는 절차와 같이 ‘데이터소스 등록’ ‘연결 정보 수정’ ‘JDBC 드라이버 선택’ ‘데이터소스 Enable’ 순서로 설정한다.
XA데이터소스
다음에서 MariaDBXA_DS라는 이름의 XA 데이터소스를 작성한다. xa-data-source 자원을 추가하려면, 아래와 같은 항목들을 설정해야 한다.
| 항목 | 설명 | 설정 예제 |
|---|---|---|
| connection-url | 접속할 데이터베이스에 대한 연결 URL | jdbc:mysql://localhost:3306/mysql |
| name | XA 데이터소스 이름 | MariaDB_XA_DS |
| driver-name | 사용할 JDBC 드라이버 이름을 설정. JDBC 드라이버를 배포하여 사용하는 경우 deployments 디렉터리 아래의 JDBC 드라이버의 파일명으로 설정한다. JDBC 드라이버를 모듈로 등록해 사용하는 경우 jdbc-driver에 추가한 이름을 사용한다. | mariadb |
| jndi-name | 데이터소스를 lookup 할 때에 사용하는 JNDI 이름을 설정. 이 설정은 ‘java:/’나 ‘java:jboss/’로 시작하는 JNDI이름을 사용하여야 한다. | java:/MariaDB_XA_DS |
| user-name | 데이터베이스 사용자 이름을 설정. | root |
| password | 데이터베이스 사용자에 대한 패스워드. | password |
| jta | JTA사용여부. JTA를 사용한 트랜잭션에 데이터소스를 참가시키려고 할 때 true로 설정한다. JPA에서 데이터소스를 사용하는 경우, persistence.xml의 <jta-data-source>로 정의하면 true로 설정한다. | true |
표 5. XA 데이터소스 주요 설정 항목
Non-XA 데이터소스에서 data-source라는 명령을 사용해 데이터소스를 등록하고 설정했지만, XA데이터소스에서는 xa-data-source라는 명령을 사용한다.
XA데이터소스를 추가하려면 아래와 같이 xa-data-source 명령을 사용한다.
CLI를 사용한 MariaDB XA데이터소스 등록방법을 따라 해 보자.
따라하기
- 데이터소스 등록
- 연결 정보설정
- JDBC 드라이버 선택
- 데이터소스 Enable
- 데이터소스 연결 테스트
- 데이터소스 등록
[standalone@localhost:9999 /] /subsystem=datasources/xa-data-source="MariaDB_XA_DS":add(jndi-name="java:/MariaDB_XA_DA",driver-name=mariadb,user-name=root,password=password)
{"outcome" => "success"}
-
연결 정보설정
connection 프로퍼티는 RDBMS와 접속하기 위한 설정 정의이다. 설정할 수 있는 프로퍼티 항목은 사용하려는 JDBC 드라이버에 따라서 다르다.
XA데이터소스의 경우 xa-datasource-properties 자원을 사용해 이것를 설정한다.
설정할 수 있는 프로퍼티에 대한 상세한 정보는 JDBC 드라이버를 제공하는 각 벤더의 웹 사이트에서 확인하여야 한다. 데이터베이스마다 설정하는 프로퍼티 이름이 달라서 주의하여야 한다.
[standalone@localhost:9999 /] /subsystem=datasources/xa-data-source=MariaDB_XA_DS/xa-datasource-properties=URL/:add(value="jdbc:mysql://localhost:3306/test")
{"outcome" => "success"}
- JDBC 드라이버 선택
[standalone@localhost:9999 /] **/subsystem=datasources/xa-data-source=MariaDB_XA_DS/:write-attribute(name=xa-datasource-class,value=org.mariadb.jdbc.MySQLXAResource)**
{"outcome" => "success"}
-
데이터소스 Enable
XA데이터소스도 Non-XA 데이터소스와 같이 추가된 후 바로 사용할 수 없다. xa-data-source 명령을 사용해 XA데이터소스를 사용함으로 변경해야 한다.
[standalone@localhost:9999 /] **/subsystem=datasources/xa-data-source=MariaDB_XA_DS:enable**
{"outcome" => "success"}
- 데이터소스 연결 테스트
[standalone@localhost:9999 /] **/subsystem=datasources/xa-data-source=MariaDB_XA_DS:test-connection-in-pool**
{"outcome" => "success"}
추가로 사용 중인 XA데이터소스를 사용하지 않으려면 위의 xa-data-source 명령의 ‘enable’ 파라미터를 ‘disable’으로 변경하면 된다. 다만, Non-XA 데이터소스와 같이 ‘disable’ 로 설정 후에는 서버를 재기동 하여야 한다.