Tomcat 8.0系でのデータソース定義
Tomcat上で動くWebアプリでDB接続する必要があり
データソースの定義ってどうやるんだ?!と思って調べてみました。
ちなみにEclipseでDynamic Web Projectで開発したケース......です。
検証環境は以下の通り。
1. context.xmlを作成する
META-INFフォルダの直下にcontext.xmlという名前でファイルを作成します。
このファイルをTomcatが読み込んでコネクションプーリングを行います。
従ってデータベースの場所やら接続情報、JNDIのアクセス名などの情報を書き込みます。
<Context> <Resource name="jdbc/myapp" auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/webapp" username="" password="" /> </Context>
今回は設定していませんが
「maxActive(最大接続数)」「maxIdle(最低接続維持数)」「maxWait(タイムアウト時間)」
などの設定も付与可能です。
詳しくはTomcat公式をご覧くださいー。
2. web.xmlに参照情報を付与する
Tomcatが確保したコネクションをWebアプリから取得するため
web.xmlに参照情報を付与します。
<resource-ref> <res-ref-name>jdbc/myapp</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>
注意点としては、各要素の設定情報は
「context.xml」でのネーミングと一致させることです。
3. 設定が上手くいってるか確かめてみる
実際にコードを書いて試してみます。
単純にDataSourceインスタンスが取れるかどうかで判定する例。
InitialContext context = new InitialContext(); DataSource ds = (DataSource) context.lookup("java:comp/env/jdbc/myapp"); if (ds != null) { System.out.println("データ取得できたー!"); }
さて、上手く取れてるでしょうか?