▶이동
  • 상구너 닷컴 블로그를 방문하신 여러분을 환영합니다 :)
  • 스팸 정책에 의해 일부 덧글·방명록차단될 수 있습니다.

Redhat JBoss mysql Datasource 설정하기

Study/WAS 상구너(sanguneo) 2015. 4. 14. 13:52

JBoss 서버에 데이터소스를 설정하는 내용을 담은 글들이 매우 많으나, 사실상 적용이 안되는 경우가 많았다.

톰캣처럼 컨텍스트 추가하고 읽으면 바로 사용할 수 있는 방법은 없다.


JBoss 에서 데이터소스를 사용하는 순서는 다음과 같다.


1. 드라이버 모듈 추가

2. 데이터소스 드라이버 등록

3. 데이터소스 추가

4. 데이터소스 매핑 jboss-web.xml



1. 드라이버 모듈 추가

드라이버 모듈은 modules 에 디렉토리를 생성하고 module.xml 을 생성하여 넣는 방법이 대부분 소개되어있다. 그러나 간혹 jboss 에서 인식이 되지 않는 경우가 발생한다. 모듈이 없거나 존재하지 않는다는 경고가 발생한다. 공백이나 양식, 문법등의 문제겠지만 정확히 어떤것이 문제인지는 확인할 수 없었다.


여기서는 jboss-cli 를 이용한다. jbosscli 실행하여 해당 서버콘솔에 접속하고 다음과 같이 입력한다.


1
module add --name=com.mysql --resources={mysql connector jar file 경로} --dependencies=javax.api,javax.transaction.api


그러면 자동으로 modules 아래에 com 폴더 아래에 새로운 mysql 모듈이 등록이된다.


2. 데이터소스 드라이버 등록


1
/subsystem=datasources/jdbc-driver=mysql:add(driver-module-name=com.mysql,driver-name=mysql,driver-class-name=com.mysql.jdbc.Driver)


위와같이 입력하면 데이터소스드라이버가 등록이 된다.


3. 데이터소스 등록

standalone/configuration/standalone.xml 을 편집하거나 management Web 을 이용한다. 

필자의 경우 management Web 을 이용하였으나 standalone.xml 을 편집하여 등록하는 방법을 적어본다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<subsystem xmlns="urn:jboss:domain:datasources:1.1">
 <datasources>
 <datasource...... ...="" (삽입)="" <datasource="" jta="false" jndi-name="java:/jdbc/jndi별명" pool-name="jndi별명" enabled="true" use-ccm="false">
 <connection-url>jdbc:mysql://localhost:3306/DB명.....파라미터</connection-url>
 <driver-class>com.mysql.jdbc.Driver</driver-class>
 <datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource</datasource-class>
 <driver>mysql</driver>
 <pool>
  <min-pool-size>2</min-pool-size>
  <max-pool-size>30</max-pool-size>
 </pool>
 <security>
  <user-name>아이디</user-name>
  <password>패스워드</password>
 </security>
 <validation>
  <validate-on-match>false</validate-on-match>
  <background-validation>false</background-validation>
 </validation>
 <statement>
  <share-prepared-statements>true</share-prepared-statements>
 </statement>
  
</datasource......></datasources></subsystem>

위처럼 소스를 삽입한다.


4. war 파일에 web.xml 과 함께 jboss-web.xml 을 추가한다.


1
2
3
4
5
6
7
8
9
10
<!--?xml version="1.0" encoding="UTF-8"?-->
<jboss-web>
  <context-root>/{context path}</context-root>
  <resource-ref>
    <res-ref-name>jdbc/jndi별명</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <jndi-name>java:/jdbc/jndi별명</jndi-name>
    <res-auth>Container</res-auth>
  </resource-ref>
</jboss-web>






위와같이 설정후 context lookup 시 comp/env 를 통해 lookup 하는것은 제외하도록 한다.


war 를 배포하고 배포경로를 통해 확인한다.





1