본문 바로가기
프로그래밍/스프링프레임워크

전자정부표준프레임워크 Tomcat + jndi로 dataSource 사용하기

by pentode 2018. 4. 20.

전자정부표준프레임워크에서 Tomcat 을 사용할때 dataSource를 Tomcat에 설정된 dataSource를 jndi 로 가져와서 사용하는 방법을 알아 봅니다. 이 예는 전자정부표준프레임워크 비즈니스 템플릿에 MySQL을 사용한것 입니다.



1. Tomcat의 server.xml 파일의 Global 리소스 영역에 데이터베이스 연결을 정의합니다.


<GlobalNamingResources>


    ...


    <Resource name="jdbc/mysqldb"

              global="jdbc/mysqldb"

              auth="Container"

              type="javax.sql.DataSource"

              driverClassName="com.mysql.jdbc.Driver"

              url="jdbc:mysql://127.0.0.1:3306/businessdb"

              username="businessdbadm"

              password="businessdbadm"

              maxActive="8"

              maxIdle="8"

              minIdle="0"

              maxWait="-1" />


</GlobalNamingResources>



2. Tomcat 의 context.xml 파일에 <ResourceLink> 를 정의합니다.


<Context>


   ...


    <ResourceLink name="jdbc/mysqldb"

                  global="jdbc/mysqldb"

                  auth="Container"

                  type="javax.sql.DataSource" />


</Context>



3. 전자정부표준프레임워크의 context-datasource.xml 파일에 기존의 데이터소스를 주석 처리하고, jndi 데이터소스를 지정합니다.


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

    <property name="jndiName" value="java:comp/env/jdbc/mysqldb"/>

</bean>


<!-- 기존 데이터소스 부분은 삭제 또는 주석처리합니다. -->

<!--

<bean id="dataSource-mysql" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

    <property name="driverClassName" value="${Globals.DriverClassName}"/>

    <property name="url" value="${Globals.Url}" />

    <property name="username" value="${Globals.UserName}"/>

    <property name="password" value="${Globals.Password}"/>

</bean>

-->


이제 모든 설정이 완료되었습니다. DBCP 의 각 설정 항목들에 대해서는 "전자정부 표준프레임워크 - dataSource (DBCP) 설정하기" 를 참고하세요.

반응형