Apache Tomcat JNDI 설정
Apache Tomcat 도 JNDI 설정을 할 수 있다. 특히나 데이터베이스 연결을 위해서 JNDI 설정을 사용할 수 있다. JNDI 를 사용하면 Web Application 내에서 데이터베이스 연결을 할 필요가 없이 네이밍(Naming) 을 호출함으로써 간단히 해결된다.
이 문서에서는 MySQL 을 위한 Apache Tomcat JNDI 설정 에 대한 것이다.
MySQL Connector/J 설치
JNDI 를 이용해서 MySQL 연결을 설정하기 위해서는 MySQL Connector/J 를 먼저 설치해줘야 한다. 이것은 MySQL 홈페이지에서 다운로드 가능한데 파일이 jar 확장자를 가진 하나의 파일이 필요하다. 이 파일을 Apache Tomcat 라이브러리 디렉토리에 복사해주면 끝난다.
1 |
cp mysql-connector-java-5.1.39-bin.jar /opt/apache-tomcat-8.0.30/lib |
Apache Tomcat JNDI 설정
MySQL Connector/J 를 설치했다면, 이제 Apache Tomcat JDNDI 설정을 해야 한다. 이는 Apache Tomcat 의 conf 디렉토리에 context.xml 파일을 다음과 같이 설정 한다. 이 설정을 위해서는 MySQL 연결 정보를 알고 있어야 한다.
1 2 3 4 5 6 |
]# vim /opt/apache-tomcat-8.0.30/conf/context.xml <Resource name="jdbc/MySQLDS" auth="Container" type="javax.sql.DataSource" maxTotal="100" maxIdle="30" maxWaitMillis="10000" username="spring" password="ald!rjflk" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.96.30:3306/spring"/> |
이렇게 해주고 Web Application 에 web.xml 파일을 설정이 필요하다.
web.xml 설정
Java Web Application 에서는 web.xml 파일이 존재한다. 여기에 JNDI 을 인식시키기 위해서 다음과 같이 설정 해줘야 한다.
1 2 3 4 5 6 7 8 |
]# vim web.xml <resource-ref> <description>MySQL DataSource</description> <res-ref-name>jdbc/MySQLDS</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> |
Spring Context 설정
Spring 을 사용한다면 다음과 같이 JNDI 를 호출 할 수 있다.
1 2 3 4 5 6 |
]# vim root-context.xml <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="java:comp/env/jdbc/MySQLDS" /> <property name="resourceRef" value="true" /> </bean> |
여기서 주의해야할 것은 jndiName 이 ‘comp/env/’ 를 덧붙인다는데 있다. 앞에 설정을 보면 ‘jdbc/MySQLDS’ 로만 설정 된되지만 Spring 에선 ‘comp/env/’ 를 앞에서 붙여주는 것이 다르다.