WTPでTomcatのJNDIを利用する

環境はEclipse3.4.2、WTP3.0.4、Tomcat5.5.27。プロジェクトはMavenmaven-archetype-webappで作成。今回のDBはSQL Server 2005。
まずはsrc/main/webapp/META-INF配下にcontext.xmlを作成する。context.xmlの内容は以下の通り。

<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="projectname" path="/projectname" reloadable="tr ue" source="org.eclipse.jst.j2ee.server:sjp">
  <Resource name="jdbc/sample"
    auth="Container"
    type="javax.sql.DataSource"
    factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
    driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
    url="jdbc:sqlserver://127.0.0.1:1433;databaseName=pj;"
    username="sa"
    password="pj"
    maxActive="20"
    maxIdle="10"/>
</Context>

上記のContext要素の内容は、[Servers]->[Tomcat v5.5 Server at localhost-config]->[server.xml]からコピー。

次にsrc/main/webapp/WEB-INF/web.xmlに以下の内容を追加。

    <resource-ref>
        <description>SQLServer2005 DataSource</description>
        <res-ref-name>jdbc/sample</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
        <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref>

最後に%CATALINA_HOME%\common\lib配下にJDBCドライバのjarファイルを放り込む。
これでWTPで起動したTomcatでもJNDIによるDataSourceの取得を行える。


ちなみにWTPTomcatを設定した場合、以下のディレクトリをTomcat環境と見立ててServerを起動する。

  • workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0