- PR -

JDNIにてデータベースに接続できません

投稿者投稿内容
Yuki
会議室デビュー日: 2007/09/05
投稿数: 4
投稿日時: 2007-09-05 11:01
初めて投稿します

tomcat5.5を使用してpostgreSQLに接続しようと試みているのですが
エラー

org.apache.tomcat.dbcp.dbcp.SQLNestedException:
Cannot create JDBC driver of class '' for connect URL 'null'

と出てしまい出来ません

環境が
All-in-one Eclipse3.1
tomcat5.5
struts1.3.8
postgresSQL8.2

server.xml

<DefaultContext>

<Resource name="jdbc/posegres" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/postgres">
<parameter>
<name>username</name>
<value>postgres</value>
</parameter>
<parameter>
<name>password</name>
<value></value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>org.postgressql.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:postgresql://192.168.1.138:5432/webcomtest</value>
</parameter>
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
</ResourceParams>
</DefaultContext>

web.xml

<resource-ref>
<description>postgreSQL DataSource example</description>
<res-ref-name>jdbc/postgres</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>CONTAINER</res-auth>
</resource-ref>

jdbcドライバpostgresql-8.2-504.jdbc3.jarをweb-inf上の
libファイルにコピーしてあります。

どなたか分かる方ご教授いただけないでしょうか?
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2007-09-05 11:49
JNDIはTomcatがWebアプリなどに提供するサービスなんですから、
JDBCドライバは、Webアプリのライブラリとして追加するのではなく、
Tomcatのクラスローダから見えるように、
Tomcatのライブラリとして追加する必要があります。
$CATALINA_HOME/common/libや$CATALINA_HOME/server/libなどにあるものがそれです。

どこに入れればいいのかは、検索してみてください。
Yuki
会議室デビュー日: 2007/09/05
投稿数: 4
投稿日時: 2007-09-05 13:04
早速の返信ありがとうございます。

ご摘通りにjdbcをtomcatのライブラリに追加いたしましたがエラーは変わりませんでした。
xml設定でどこかおかしな点などありますでしょうか?
yos
常連さん
会議室デビュー日: 2004/08/24
投稿数: 27
投稿日時: 2007-09-05 13:22
org.postgresql.Driver では?
Yuki
会議室デビュー日: 2007/09/05
投稿数: 4
投稿日時: 2007-09-05 13:56
ご指摘ありがとうございます。

ですが、直してもエラーは変わりませんでした。

このエラーはユーザ名やパスワードが間違っていても
出すものなのでしょうか?
Java僧
ぬし
会議室デビュー日: 2003/11/06
投稿数: 261
投稿日時: 2007-09-05 15:08
文法が違うのでは?
「UserGuide」の“9) JDBC DataSources”は読みましたか?
http://tomcat.apache.org/tomcat-5.5-doc/jndi-datasource-examples-howto.html
koe
大ベテラン
会議室デビュー日: 2003/07/13
投稿数: 198
投稿日時: 2007-09-05 15:14
Java僧さんの言うとおり、コンテキスト記述子の記述誤りですね。

Tomcat5.5系と5.0系では、JNDIリソースの設定方法が異なります。
詳しくはこちらを見て下さい。
http://tomcat.apache.org/tomcat-5.5-doc/jndi-resources-howto.html
http://tomcat.apache.org/tomcat-5.5-doc/jndi-datasource-examples-howto.html

ちなみに、こちらが5.0系のものです。
http://tomcat.apache.org/tomcat-5.0-doc/jndi-resources-howto.html
http://tomcat.apache.org/tomcat-5.0-doc/jndi-datasource-examples-howto.html

ところで、5.0系の書き方をどこから見つけたのか気になります。
どこかに5.0系の方法を喧伝しているサイトか本があるのでしょうか?
同じような質問が、私の覚えている限りで既に3回もあったものですから。
Yuki
会議室デビュー日: 2007/09/05
投稿数: 4
投稿日時: 2007-09-05 15:36
返信ありがとうございます

解決しました。

他のサイトにあったMETA-INF上にcontext.xmlを新しく作り
その中に記述し
tomcat/conf上にあったcontext.xmlの中に
<WatchedResource>META-INF/context.xml</WatchedResource>

と書き込み読みにいかせることで解決しました

こうすることでwarにして他のパソの持ち込んでもtomcatのserver.xmlを書き換える
必要が無いらしいので・・・

以前書き込んでいたものは
この記述方法はネット上で拾ってきたものです。
トムのバージョンによって書き方が変わるとは知りませんでした

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

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