- PR -

tomcat4とDB2の連携

投稿者投稿内容
うど
会議室デビュー日: 2003/05/21
投稿数: 10
投稿日時: 2003-05-21 10:17
はじめまして。

現在tomcat4.0.3をWin2000上で動作させていまして
tomcatからDB2(Ver8.1)への接続を試みているのですがDataSourceをlookupしようと
すると失敗してしまいます。
tomcatとDB2は別サーバとなっています。
tomcatのマシンにはDB2クライアントをインストールし、
ローカルで別名は設定済みです。
server.xmlの設定などもいろいろサンプル等を見て自分なりに
設定はしたのですが、エラーがでてしまいます。

以下に各設定とエラートレースを記載しますので
どなかたアドバイスください。(かなり行き詰まっています。。。)


=========== [発生エラー] =============
TyrexDataSourceFactory: Cannot create DataSource, Exception
java.sql.SQLException: java.lang.UnsatisfiedLinkError: no db2jdbc in java.librar
y.path
at COM.ibm.db2.jdbc.app.DB2Driver.<init>(Unknown Source)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstruct

=========== [server.xml] ===========
<Context path="/db2test" docBase="db2test" debug="0" reloadable="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="db2test." suffix=".txt"
timestamp="true"/>
<Resource name="db2test" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="db2test">
<parameter>
<name>user</name>
<value>user</value>
</parameter>
<parameter>
<name>password</name>
<value>pswd</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>COM.ibm.db2.jdbc.app.DB2Driver</value>
</parameter>
<parameter>
<name>driverName</name>
<value>jdbc:db2:TestDB</value>
</parameter>
</ResourceParams>
</Context>

=========== [web.xml] ===========
<resource-ref>
<res-ref-name>db2test</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

=========== [DataSourceの取得] ===========
Context context = new InitialContext();
DataSource ds = (DataSource)context.lookup("java:comp/env/db2test");
※上記のlookup時にエラーとなります。
まりり
ぬし
会議室デビュー日: 2001/12/05
投稿数: 329
投稿日時: 2003-05-21 10:24
> java.sql.SQLException: java.lang.UnsatisfiedLinkError: no db2jdbc in java.library.path

エラー読んでます?
原因書いてありますよ。
yuzy
大ベテラン
会議室デビュー日: 2002/02/14
投稿数: 117
投稿日時: 2003-05-21 10:25
>java.sql.SQLException: java.lang.UnsatisfiedLinkError: no db2jdbc in java.librar
y.path

が出ているということは、DB2のType2 Driverを使っていて、そのDLLへのパスが通っていないのではないでしょうか?

tomcat を起動するときの環境設定で、SET PATH= に DB2のJDBC Driver(DLL)を含めてみたらどうでしょう?
うど
会議室デビュー日: 2003/05/21
投稿数: 10
投稿日時: 2003-05-21 10:43
こんにちは。

早速のアドバイスありがとうございます。
(あまりの速さにびっくりしました。)

引用:

tomcat を起動するときの環境設定で、SET PATH= に DB2のJDBC Driver(DLL)を含めてみたらどうでしょう?



環境変数にはdb2jdbc.dllへのパスは通っています。
それで前回説明が足りなかったのですが、
Class.forName()で通常にJDBC接続を行うと正常につながるのです。
それをDataSourceを使用した方法に変更したとたんつながらなくなりました。

ちなみにDLLは
%DB2クライアントのインストールdir%/SQLLIB/BIN/.
でJDBCドライバは
%tomcat_dir%/common/lib
に格納しています。
また、db2java.zipは拡張子をjarに変更してあります。

db2jdbc.dllへのパスの通し方が間違っているのでしょうか?

へげもん
ベテラン
会議室デビュー日: 2002/04/14
投稿数: 87
お住まい・勤務地: 埼玉県
投稿日時: 2003-05-21 12:12
引用:

Class.forName()で通常にJDBC接続を行うと正常につながるのです。
それをDataSourceを使用した方法に変更したとたんつながらなくなりました。


Tomcatに対して、DataSourceの設定はどうなってますか?
うど
会議室デビュー日: 2003/05/21
投稿数: 10
投稿日時: 2003-05-21 13:19
うどです。

引用:

Tomcatに対して、DataSourceの設定はどうなってますか?



一番最初に記述したとおり
server.xmlに設定しましたが、その他に何か設定って必要なのですか?
へげもん
ベテラン
会議室デビュー日: 2002/04/14
投稿数: 87
お住まい・勤務地: 埼玉県
投稿日時: 2003-05-21 14:06
server.xmlの設定ですが、
引用:

<parameter>
<name>driverName</name>
<value>jdbc:db2:TestDB</value>
</parameter>


とあるのはdriverNameではなくurlではないでしょうか?
へげもん
ベテラン
会議室デビュー日: 2002/04/14
投稿数: 87
お住まい・勤務地: 埼玉県
投稿日時: 2003-05-21 14:56
もう一つ。
引用:

Context context = new InitialContext();
DataSource ds = (DataSource)context.lookup("java:comp/env/db2test");
※上記のlookup時にエラーとなります。


lookup()にはurlではなくデータソース名を指定します。
====
上記を訂正。ちゃんとリソース名が指定されてました。

[ メッセージ編集済み 編集者: へげもん 編集日時 2003-05-21 15:39 ]

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