[JBoss] JNDI 설정


개요

JBOSS를 사용했던 프로젝트의 JNDI 설정 내용을 간략히 정리해본다.

프로젝트 Deploy 경로 “/WebApp/deploy/프로젝트명.war” 기준으로 설정.

standalone.xml


  • standalone.xml 파일에서 DB설정 추가
  • 경로 : /JBOSS/domains/프로젝트명/configuration/standalone.xml
  • <datasources> 에 하단 내용 추가
      <datasource jndi-name="java:/jdbc/tb" pool-name="tb" enabled="true" use-java-context="true">
         <connection-url>jdbc:oracle:thin:@192.168.0.119:1521:XE</connection-url>
         <driver>oracle</driver>
         <pool>
           <min-pool-size>10</min-pool-size>
           <max-pool-size>15</max-pool-size>
           <prefill>true</prefill>
         </pool>
         <security>
           <user-name>tb</user-name>
           <password>1234</password>
         </security>
         <validation>
           <check-valid-connection-sql>select 1 from dual</check-valid-connection-sql>
           <validate-on-match>false</validate-on-match>
           <background-validation>true</background-validation>
           <background-validation-millis>10000</background-validation-millis>
           <use-fast-fail>false</use-fast-fail>
         </validation>
           <statement>
           <prepared-statement-cache-size>100</prepared-statement-cache-size>
           <share-prepared-statements>true</share-prepared-statements>
         </statement>
      </datasource>
    
    • Oracle 기준으로 jndi-name, pool-name, connection-url, user-name, password 등 DB 관련 설정을 입력한다.
  • <Drivers> 에 하단 내용 추가
      <driver name="oracle" module="com.oracle">
         <driver-class>oracle.jdbc.OracleDriver</driver-class>
      </driver>
    
    • 연결하고 싶은 DB의 드라이버 정보를 입력한다.


module.xml


  • 오라클 드라이버 파일 추가를 해줘야 한다.
  • 경로 : /JBOSS/jboss-eap-7.4/modules/system/layers/base/com/ 위 경로를 보면 다양한 DB연결 api들이 있다. 해당 경로에 oracle 폴더가 있는지 확인하고, 없다면 /oracle/main/ 추가.
  • ojdbc 등 DB접속에 필요한 파일을 위 폴더에 복사해 넣고, 동일 폴더에 module.xml 파일을 생성한다.
  • module.xml 파일에 하단 내용 추가.
      <?xml version="1.0" encoding="UTF-8"?>
      <module xmlns="urn:jboss:module:1.1" name="com.oracle">
          <resources>
               <resource-root path="ojdbc8-19.8.0.0.jar" />
               <resource-root path="orai18n-19.3.0.0.jar" />
          </resources>
          <dependencies>
              <module name="javax.api"/>
              <module name="javax.transaction.api"/>
          </dependencies>
      </module>
    
    • standalone.xml 파일 내 Drivers 테그 내에 입력한 driver 의 module 속성에 입력한 값을 module 테그의 name과 맞춰준다.
    • resource-root 부분을 추가한 파일에 맞게 수정한다.


web.xml


  • 경로 : 프로젝트 소스 내 /WEB-INF/web.xml 파일 수정

  • 아래 내용 추가

      <resource-ref>
          <description>Datasource Contents Server</description>
          <res-ref-name>jdbc/tb</res-ref-name> <!-- JNDI 명 -->
          <res-type>javax.sql.DataSource</res-type>
          <res-auth>Container</res-auth>
      </resource-ref>
    
    • standalone.xml 파일 내 datasource 테그의 jndi-name=”java:/jdbc/tb” 의 “java:/” 이후 부분을 <res-ref-name> 테그값과 맞춰준다.


jboss-web.xml


  • 경로 : 프로젝트 소스 내 /WEB-INF/jboss-web.xml
  • jboss-web.xml 하단과 같이 수정(없으면 생성)한다.
	<!DOCTYPE jboss-web PUBLIC
	   "-//JBoss//DTD Web Application 5.0//EN"
	   "http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd">
	   
	<jboss-web> 
		<resource-ref>
			<res-ref-name>jdbc/jdbc/tb</res-ref-name>
			<jndi-name>java:/jdbc/tb</jndi-name> <!-- standalone.xml 파일의 JNDI-NAME -->
		</resource-ref>
	</jboss-web>
  • res-ref-name 테그 값을 jdbc/{web.xml 내 res-ref-name} 으로 맞춰준다.

간단하게 정리만 해 두었다. 정확한 정보가 아닐 수 있지만 나중에 참고하긴 좋을 것 같다.