- PR -

TOMCATでのデータソース接続

投稿者投稿内容
Oz
会議室デビュー日: 2006/12/14
投稿数: 15
投稿日時: 2006-12-18 23:15
お世話になっております、二度目の書き込みになります。
TOMCATでのDB2データソース接続を試みているのですが、どうも上手くいかず
原因が分かりません。
WebSphereApplicationServerではできたので、JAVA側ではなくて
TOMCAT側に何か問題がありそうなのですが…。

TOMCATのserver.xmlに追加
<Context path="/Test" docBase="Test" debug="0" reloadable="true">
<Resource name="jdbc/sample" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/sample">
<parameter>
<name>username</name>
<value>[DB2のユーザ名]</value>
</parameter>
<parameter>
<name>password</name>
<value>[DB2のパスワード]</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>COM.ibm.db2.jdbc.app.DB2Driver</value></parameter>
<parameter>
<name>url</name>
<value>jdbc:db2:SAMPLE</value>
</parameter>
</ResourceParams>
</Context>

アプリケーションのweb.xmlに追加
<resource-ref>
<description />
<res-ref-name>jdbc/sample</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Application</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

また、TOMCATのcommon/libにDB2のdb2java.zipの拡張子をjarに変えたものを入れました。
クラスパスを通すやり方はこれでよかったのでしょうか?

サーブレットの記述
 Properties env = new Properties();
 env.setPropert(Context.INITIAL_CONTEXT_FACTORY,
  "com.ibm.websphere.naming.WsnInitialContextFactory");
 Context ctx = new InitialContext(env);
 DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/sample");
ここを書き換えたりするのでしょうか?

[ メッセージ編集済み 編集者: Oz 編集日時 2006-12-18 23:27 ]
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-12-18 23:51
どう上手くいかないのでしょう?
クラスパスの通し方は no suitable driver といった例外がドライバロード時に出ていないのであれば合っていると思います。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2006-12-19 10:19
Tomcatのバージョンがわからないのですが、5.5だとすると以下が参考になりませんか?

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=34807&forum=12&start=16&20
Oz
会議室デビュー日: 2006/12/14
投稿数: 15
投稿日時: 2006-12-19 12:19
>インギ様
返信ありがとうございます。
同じプログラムをデータベースに直接接続したときは正常に表示され、
データソース接続にしたときにエラーが出ました。
そのほかのプログラムは全く変えていないのでそう判断しました。

>uk様
ありがとうございます。
バージョンを書き忘れていました。失礼いたしました。
5.5.17です。
お教えいただいたURLが参考になりそうなので拝見しましたが、
C:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\Catalina\localhost
にコンテキスト名.xmlというファイルがなかったのですが
新規作成しないといけないのでしょうか。
context.xmlというファイルはあるので、そちらに書けばよいのでしょうか。
お教えいただいた記事に従ってconf/server.xmlやアプリケーションのWEB-INF/web.xmlに
記述を追加してみましたがやはりうまくいかないです・・・(エラーが出ます)
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-12-19 12:41
どう上手くいかないのでしょう?
別の言い方をすると、どのようなエラーがでるのでしょう?
エラーメッセージをキーワードに Google でしらべたりすると回答が出てくる場合がありますよ。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2006-12-19 12:44
引用:

お教えいただいたURLが参考になりそうなので拝見しましたが、
C:Program FilesApache Software FoundationTomcat 5.5confCatalinalocalhost
にコンテキスト名.xmlというファイルがなかったのですが
新規作成しないといけないのでしょうか。


はい、その通りです。Testというコンテキスト名のようですので、Test.xmlを作成して
ください。
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2006-12-19 13:29
引用:

Ozさんの書き込み (2006-12-18 23:15) より:
サーブレットの記述
 Properties env = new Properties();
 env.setPropert(Context.INITIAL_CONTEXT_FACTORY,
  "com.ibm.websphere.naming.WsnInitialContextFactory");
 Context ctx = new InitialContext(env);
 DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/sample");



Tomcatにcom.ibm.websphere.naming.WsnInitialContextFactory
なんてないと思うのですが。どなたもツッコミ入れないので書いておきます。

アプリケーションでInitialContextに環境プロパティを指定すると
移植性が損なわれるので可能な限り避けた方が無難だと思いますよ。
その辺りはJ2EEコンテナが構成してくれているはずです。

ところで、なぜエラーの詳細を書かないのでしょう?
Oz
会議室デビュー日: 2006/12/14
投稿数: 15
投稿日時: 2006-12-19 14:24
>インギ様 あしゅ様
申し訳ありません。
エラーの詳細ですが、PrintWriterのprintlnでExceptionをブラウザ表示させてもjava.lang.NullPointerExceptionとしか出てこず、あまり参考にならないかと思い
書き込みしませんでした。
すいませんでした。

サーブレットの記述を
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/sample");
としてみましたがやはり同じでした。

>uk様
ありがとうございます。
Test.xmlに
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/Test" reloadable="true">
<Resource auth="Container" name="jdbc/sample" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/sample">
<parameter>
<name>username</name>
<value>ユーザ名</value>
</parameter>
<parameter>
<name>password</name>
<value>パスワード</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>COM.ibm.db2.jdbc.DB2DataSource</value></parameter>
<parameter>
<name>url</name>
<value>jdbc:db2:sample</value>
</parameter>
</ResourceParams>
</Context>
と記述し、何度かTOMCATを再起動してみましたが変わらないです・・・。
(同じくNullPointerExceptionが出ます)

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