이노무 Tomcat 은 JNDI 등록때문에 받는 스트레스가 심하다. 버전에 따라 JNDI 등록하는 방법이 다르기 때문인데
이번에는 Tomcat 5.5 를 기준으로 한다.
인터넷 검색 해보면 각양 각색으로 설명이 틀린데, 뭐 META-INF 에 context.xml 을 작성해라, server.xml 만 작성하면 된다는 등등.. 그런데 왜 난 잘 안되는걸까..
결론부터 말하자면, Tomcat 5.5 에선, server.xml 과 web.xml 에 모두 설정을 해줘야 한다.
server.xml 설정
<GlobalNamingResources> ... </GlobalNamingResources> 내 이건, <Host> 내의 <Context>... </Context> 이건 관계 없이 아래와 같이 설정한다
[Derby]
<Resource description="Test database connection" name="jdbc/testDs"
auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30"
maxWait="10000" username="userid" password="password" driverClassName="org.apache.derby.jdbc.ClientDriver"
url="jdbc:derby://localhost:1527/C:/MyDevTool/bin/db-derby-10.4.2.0/officedb" />
[MySQL]
<Resource description="Test database connection" name="testDs2"
auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30"
maxWait="10000" username="userid" password="password" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/my_db?autoReconnect=true" />
web.xml 설정
server.xml 만 설정해서 되는건 아니고, web.xml 도 설정 해줘야 하는데, 이놈때문에 좀 해멨다.
web.xml 의 가장 마지막 정도에 아래와 같이 정의해줘야 한다.
[Derby]
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/testDs</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
[MySQL]
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/testDs</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
이렇게 server.xml / web.xml 두가지를 해줘야 정상 작동 한다.
그리고, Tomcat 에서도, name 을, jdbc/testDs 로 하지 않고
testDs 로만 설정 해줘도 잘 동작 한다.