본문 바로가기

개발

[이클립스] Spring, Tomcat7 JNDI 설정


테스트 환경

OS  : Windows10 64bit

이클립스 : egovframe 3.2

Was : Tomcat7

Database : MariaDB



소스 배포를 위해 리눅스 서버에서 톰캣 설정만 며칠 째 삽질중.. 

로컬에서는 실행이 잘 되는데 서버에서는.. 


로컬에서도 JNDI를 사용하고 있지만 tomcat에 직접 설정하지 않았다.

테스트를 위해 tomcat에 JNDI를 설정해보고 과정을 기록한다.



1. 메이븐을 이용해서 mariadb 커넥터를 내려받는다. 

<dependency>

 <groupId>org.mariadb.jdbc</groupId>

 <artifactId>mariadb-java-client</artifactId>

 <version>1.1.8</version>

</dependency>



2. mariadb-java-client-1.1.8.jar 파일을 %CATALINA_HOME%\lib에 복사한다. (톰캣 설치 폴더 아래 lib)

 - maven, tomcat7 lib에 둘다 있어도 상관없는듯..



3. %CATALINA_HOME%\conf\server.xml 아래 내용 입력

<GlobalNamingResources>

    <Resource name="jdbc/testdb"

     auth="Container"

     type="javax.sql.DataSource"

     maxActive="100"

     maxIdle="30"

     maxWait="10000"

     username="test"

     password="1234"

     driverClassName="org.mariadb.jdbc.Driver"

     url="jdbc:mysql://xxx.xxx.xxx.xxx:3306/testdb?useUnicode=true&amp;characterEncoding=UTF-8&amp;autoReconnect=true"

     />

    

  </GlobalNamingResources>



4. Spring - webapp/META-INF/context.xml 아래 내용 입력 

<Context>   

    <WatchedResource>WEB-INF/web.xml</WatchedResource>

    <ResourceLink global="jdbc/testdb" name="jdbc/testdb" type="javax.sql.DataSource"/>

</Context>



5. Spring - webapp/WEB-INF/web.xml 아래 내용 입력

<web-app>

  ...

<resource-ref>

    <description>DB Connection</description>

    <res-ref-name>jdbc/testdb</res-ref-name>

    <res-type>javax.sql.DataSource</res-type>

    <res-auth>Container</res-auth>

</resource-ref>    

  ...

</web-app>



6. Spring - WEB-INF/설정파일 경로/database.xml 아래 내용 입력

<beans>

 ...


<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">

    <property name="jndiName" value="jdbc/testdb"/>

    <property name="resourceRef" value="true" />

</bean>


 ...

</beans>



7. 이클립스 톰캣 재시작 후 db연결이 잘되는지 확인

 역시 잘 돌아간다. 서버에서는 왜 그러는겨~~ ㅠ_ㅠ







맨 위로