人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Tomcat を利用したWeb開発で、JNDI 経由でDBにアクセスしたいのですが、Webアプリごとに、DBコネクションのバージョンを変更することは可能でしょうか。

通常、DB依存のJDBCドライバは、CATALINA_HOME/common/lib 等に配置しますが、コンテナのCLASSPATHに含まれてしまい、以下のようにWebアプリごとに、異なるバージョンのDBに接続が難しいです。

.../webapps/app1 << MYSQL3.x
.../webapps/app2 << MYSQL5.x

Tomcat は、5.0.28 を利用しています。

※ /META-INF/context.xml あたりに、設定すれば、何とかなりそうな気もするのですが、その場合、JDBCライブラリはどこに配置するべきでしょうか。
.../webapps/appx/WEB-INF/lib/ の配下に配置しただけではうまくいきませんでした。

追加の質問になってしまいますが、1つのコンテナ上の異なるWEBアプリで、同じJNDI名を利用して別のデータソースにアクセスすることは可能でしょうか。

※ 開発時期の違うWEBアプリを同じコンテナ上で動作させたいが、設定ファイルには、同じデータソース名が記述されているため。


どなたか、ご教示お願いいたします。

●質問者: openseed
●カテゴリ:インターネット ウェブ制作
✍キーワード:28 CLASSPATH Common dB INF
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● b-wind
●60ポイント

Webアプリごとに、DBコネクションのバージョンを変更する

Tomcat の JNDI を使う場合、Tomcat のクラスローダーがドライバを扱うので、異なるバージョンのドライバをインストールする事は不可能。

WEB-INF/lib/ に配置したものはウェブアプリケーションごとのクラスローダーが扱うので、Tomcat 本体からは見えません。


MySQL Connector/J のマニュアルいわく、Connector/J 3.0 であれば新機能は使えないがMySQL3.x 以降のどのバージョンでも使えるとあります。


同じJNDI名を利用して別のデータソースにアクセス

やった事はありませんが、ウェブアプリケーションごとの Context 以下に JNDI の登録をすれば名前の衝突は起こらないように思います。

http://www.jajakarta.org/tomcat/tomcat5.0/ja/docs/tomcat-docs/jn...

◎質問者からの返答

war ファイルで配布することを考えると、何か方法がありそうな気がしたのですが、やっぱり無理ですか・・・>Webアプリごとに、DBコネクションのバージョンを変更


時間のあるときに、Tomcatのソースコード読んでみます。

MySQLの件もありがとうございます。

実際にはMySQLではないのですが、他にもいろいろと問題があって、同じクラスローダの jar を使われると、webアプリをまたがってシングルトン(プール周り)の動作が不安になるので、common/lib に入れたくなかったのです。

同名のJNDIの件については、もう少し調査してみます。

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ