- PR -

tomcat で 複数のバージョンのjdbcドライバを共存させたい

1
投稿者投稿内容
mitti
会議室デビュー日: 2008/08/11
投稿数: 6
投稿日時: 2008-08-11 16:38
お世話になります

現在tomcat5.5でサーバーを構築しております
複数のアプリケーションを稼働させようとしているのですが
一つのアプリケーションはOracle8.1.7へ接続し
一方のアプリケーションはOracle10gに接続するようになっています

両者ともにコネクションプーリングを利用するため
tomcat5.5ではdbcpが配備されるcommon/lib内に
jdbcドライバを置く必要があるかと思います

しかし、Ora8.1.7を利用するアプリケーションが
先にcommon/libにojdbcの9.0.2.0.0のバージョンを配備しており
今回別のアプリケーションから上記バージョンのjdbcを使用して
接続したところ「dataformatexception」の例外が発生してしまいました

後のアプリケーションではjdbcの10.2のバージョンのjdbcを利用するように
したいのですが、このような状況で異なるバージョンのjdbcドライバを
共存させるような方法はありませんでしょうか?

よろしくお願いいたします
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-08-11 21:28
Tomcatの仕組みというより、Javaのクラスローダの仕組みとして、
同一クラス名を持つjarを複数扱うのは非常に面倒な仕組みが必要になります。

コネクションプーリング自体はJNDI経由じゃなくても使えますので、
自前で用意する必要が有りますが、Tomcatが内部で利用している、
Commons DBCPを使うとよいでしょう。
そのとき、JDBCドライバは各アプリのlibに配置してください。
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2008-08-11 22:29
THINドライバの場合は問題にはなりませんが、
OCIドライバを使っている場合は、複数のバージョンを
同一VM上に共存させることは不可能なので注意しましょう。

参考までに。
mitti
会議室デビュー日: 2008/08/11
投稿数: 6
投稿日時: 2008-08-12 08:48
かつのりさん、あしゅさん ご回答ありがとうございます

>コネクションプーリング自体はJNDI経由じゃなくても使えますので、
>自前で用意する必要が有りますが、Tomcatが内部で利用している、
>Commons DBCPを使うとよいでしょう。
>そのとき、JDBCドライバは各アプリのlibに配置してください。

これはtomcatのnaming-factory-dbcp.jarをJNDIでtomcatコンテナから
ロードせずに各アプリのローダを使用して利用する場合であれば
アプリのWEB-INF/libにjdbcとCommons DBCPを配置できるという事でしょうか?

具体的にどのような設定を行えば上記の設定が可能になるのか
何か参考になる資料等はありませんでしょうか?

よろしくお願いいたします

[ メッセージ編集済み 編集者: mitti 編集日時 2008-08-12 09:51 ]
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-08-12 10:12
WEB-INF/lib以下にJDBCドライバとCommons DBCPを配置、
ServletContextLinster等、コンテキスト初期化、破棄のタイミングで
BasicDataSourceのインスタンスを生成、コネクションの解放を行う感じです。
ServletContextにデータソースを保持しておけばよいでしょう。

具体的なサンプルコード等はBasicDataSourceでググれば、
それなりに出てくるので読んでみてください。
mitti
会議室デビュー日: 2008/08/11
投稿数: 6
投稿日時: 2008-08-12 10:47
>WEB-INF/lib以下にJDBCドライバとCommons DBCPを配置、
>ServletContextLinster等、コンテキスト初期化、破棄のタイミングで
>BasicDataSourceのインスタンスを生成、コネクションの解放を行う感じです。
>ServletContextにデータソースを保持しておけばよいでしょう。

>具体的なサンプルコード等はBasicDataSourceでググれば、
>それなりに出てくるので読んでみてください。

ありがとうございます
さっそく調べてみます
1

スキルアップ/キャリアアップ(JOB@IT)