검색
다른 검색어로 검색을 시도하시기 바랍니다.
Redhat JBoss mysql Datasource 설정하기
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" > < 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 를 배포하고 배포경로를 통해 확인한다.