728x90
반응형

웹을 검색하면 많이 나오는 질문/답변이지만 실제로 내가 할 때 잘 안된 경험이 있어서 실제로 되었던 사례를 정리해 본다.
Tomcat6를 WAS로 하여 Spring 2.5를 사용하는데 처음에는 Spring의 DBCP를 이용한 Connection Pool을 만들어 쓰다가 원래 운영환경처럼 JNDI를 설정해서 사용을 하도록 바꾸기 위해서 변경했다.

1. server.xml 파일의 JNDI 설정
사용하려는 Context 안에서 JNDI를 다음과 같이 설정한다.
(개발환경의 세팅이기에 실제 tomcat이 아닌 WTP Servers 프로젝트 밑의 "Tomcat v6.0 Server at localhost-config"에 추가)

<Context>
    <Resource name="JNDI 명"
              auth="Container"
              type="javax.sql.DataSource"
              driverClassName="oracle.jdbc.driver.OracleDriver"
              factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
              url="jdbc:oracle:thin:@IP주소:Service명"
              username="user_name"
              password="user_password"/>
</Context>

위 예제는 Oracle에 BasicDataSource 사용 예이다.

2. web.xml 파일의 변경
web.xml 파일에 리소스 reference를 추가한다.
단, 실제 운영환경이었던 weblogic은 아래의 추가가 필요없기에 실제 사용할 web.xml 파일이 아니라 WTP Servers 프로젝트 밑의 "Tomcat v6.0 Server at localhost-config" 에 추가하였다.

    <resource-ref>
        <res-ref-name>jd_kais</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>

3. Spring Datasource의 변경
원래의 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:@IP주소/서비스명"/>
        <property name="username" value="user_name"/>
        <property name="password" value="user_password"/>
    </bean>

설정한 JNDI를 가져오기 위하여 다음과 같은 bean을 사용하여 변경 가능하다.
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="java:/comp/env/JNDI명" />
</bean>

단, Spring 2.5 이후에는 새로 생긴 jee Namespace를 활용하여 아래와 같이 더욱 편하게 설정이 가능하다.
하지만 Namespace를 XML 설정에 추가해야 하기 때문에 비슷할 수도 있다.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:jee="http://www.springframework.org/schema/jee"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd">

    <jee:jndi-lookup id="dataSource" jndi-name="jd_kais" resource-ref="true" />

</beans>

이 경우에는 bean을 사용하지 않으므로 default namespace를 jee로 놓고 하면 더 간단할 수도 있겠다.

4. JNDI 의 연결을 위해 JDBC 드라이버를 WAS에 추가해 준다.
위 경우는 오라클이므로 %Tomcat_Home%\lib에 ojdbc14.jar 파일을 추가한다.(Pooling 관련 파일들은 이미 있다.)


이후에 잊을 경우 참고를 위해...

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,