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アプリを同じコンテナ上で動作させたいが、設定ファイルには、同じデータソース名が記述されているため。


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

回答の条件
  • 1人1回まで
  • 登録:2007/01/10 05:59:05
  • 終了:2007/01/17 06:00:04

回答(1件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402007/01/10 11:47:56

ポイント60pt

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...

id:openseed

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


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

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

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

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

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

2007/01/10 16:38:01

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません