SERVER

[Tomcat] JNDI, Tomcat 설정

보겸삼촌 2021. 1. 28. 12:08
 이번 포스팅에서는 톰캣에서 JNDI를 설정하는 방법에 대해 기술할 것,
1.1에서는 MySQL, 1.2에서는 Oracle 세팅하는 방법이며 세팅할 DB를 결정하면 됨

 

 

1. JNDI - Tomcat 설정

    : JNDIWAS에 설정하는 것

 

 

  1.1. MySQL Setting

<GlobalNamingResources>
  <Resource 
      name="jdbc/EgovData"
      auth="Container"
      type="javax.sql.DataSource"
      maxActive="100" 
      maxIdle="30"
      maxWait="10000"
      validationQuery="SELECT 1"
      validationInterval="30000"
      username="root"
      password="passwd"
      driverClassName="com.mysql.jdbc.Driver"
      url="jdbc:mysql://localhost:3306/myDB?useUnicode=true&amp;characterEncoding=utf8&amp;autoReconnect=true" 
  />
</GlobalNamingResources>

   - username, password은 DB의 사용자명, 패스워드를 입력하고, myDB 자리에 DB명을 입력할 것

 

 

 

  1.2. Oracle Setting

<GlobalNamingResources>
  <Resource 
      name="jdbc/EgovDataOracle"
      auth="Container"
      type="javax.sql.DataSource"
      maxActive="100" 
      maxIdle="30"
      maxWait="10000"
      validationQuery="SELECT 1 FROM DUAL"
      validationInterval="30000"
      username="system"
      password="manager11"
      driverClassName="oracle.jdbc.driver"
      url="jdbc:mysql://localhost:1521/orcl"
  />
</GlobalNamingResources>

   - username, password은 DB의 사용자명, 패스워드를 입력하고, orcl 자리에 DB명을 입력할 것

 

 

 

 

  1.3. ResourceLink 추가

    : 보통 Tomcat 설치폴더/conf/context.xml에 추가해야하나, teletalk 프로젝트에서는 WebContent/META-

     INF/context.xml에 위치

 

// WebContent/META-INF/context.xml

<Context>
    <ResourceLink global="jdbc/프로젝트_DS" name="jdbc/프로젝트_DS" type="javax.sql.DataSource" />
</Context>

  - 이 때, name, global의 값을 맞춰줌

 

 

 

  1.4. web.xml 코드 추가

// 프로젝트/WEB-INF/web.xml

<resource-ref>
  <description></description>
  <res-ref-name>jdbc/orcl</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
</resource-ref>

 

 

 

  1.5. context-datasource.xml 코드 추가 (Spring의 경우)

// 프로젝트/src/spring/context-datasource

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
        <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl" />
        <property name="username" value="user"/>
        <property name="password" value="password"/>
</bean>

 

 

 

  1.6. properites 수정

    : 프로젝트 WAS JNDI 사용 선언 위치

// 프로젝트/src/spring/context-datasource.xml

<bean id="jdbc/프로젝트" class="org.springframework.jndi.JndiObjectFactoryBean">
	<property name="jndiName" value="java:comp/env/jdbc/프로젝트_DS" />
</bean>