- PR -

Tomcat+MySQLでJNDIのLookupができない

投稿者投稿内容
ベータ
会議室デビュー日: 2006/11/10
投稿数: 14
投稿日時: 2006-11-10 11:17
はじめまして。
Tomcat + MySQL で JNDIのLookupを行っているのですが、エラーになります。
ケアレスミスだと思うのですが、困っています。どなたかアドバイスをお願いします。

【エラー】
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:780)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)



【環境】
Tomcat 5.5.20
MySQL 5.0.24
JDBCドライバ : [TomcatインストールDIR]\common\lib\mysql-connector-java-5.0.3-bin.jar

【server.xml の追記】

<Context path="/test01" docBase="/test01" debug="0"
reloadable="false" crossContext="true">

<Resource name="jdbc/Struts" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="user" password="password" driverClassName="org.gjt.mm.mysql.Driver"
url="jdbc:mysql://localhost/test?useUnicode=true&amp;characterEncoding=Windows-31J"/>
</Context>


【web.xml の追記】
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/Struts</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>


【JNDI lookup部分のソース】

Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/Struts");
db = ds.getConnection();

【URL】

http://localhost:8080/test01/・・・
vincent
大ベテラン
会議室デビュー日: 2004/07/09
投稿数: 142
投稿日時: 2006-11-10 11:23
<Resource>タグに以下のようなfactory属性を入れてみるとどうでしょうか。

<Resource
 ...中略...
 factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" />
ベータ
会議室デビュー日: 2006/11/10
投稿数: 14
投稿日時: 2006-11-10 11:37
vincentさんアドバイスありがとうございます。
ご指摘の通りにして試してみましたが、結果は同じでした。

<Resource name="jdbc/Struts" auth="Container" type="javax.sql.DataSource"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
maxActive="100" maxIdle="30" maxWait="10000"
username="user" password="password" driverClassName="org.gjt.mm.mysql.Driver"
url="jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=Windows-31J"/>

他に何か考えられる方法はないでしょうか・・・。

なお、StackTraceの最後に

Caused by: java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getDriver(Unknown Source)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:773)

と表示されていましたので、付け加えておきます。
よろしくお願いします。

[ メッセージ編集済み 編集者: ひろし 編集日時 2006-11-10 11:39 ]
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2006-11-10 11:51
引用:

ひろしさんの書き込み (2006-11-10 11:37) より:
Caused by: java.sql.SQLException: No suitable driver



JDBCドライバがないって出てるし・・・。
エラーメッセージはちゃんと読みましょう。
ベータ
会議室デビュー日: 2006/11/10
投稿数: 14
投稿日時: 2006-11-10 12:00
あしゅさんコメントありがとうございます。

JDBCドライバがない理由が分からないのです。

Eclipse => Tomcat => JVM の設定

mysql-connector-java-5.0.3-bin.jar
をクラスパスに通していますし、JAR内に

org.gjt.mm.mysql.Driver

があることも確認しています。

[ メッセージ編集済み 編集者: ひろし 編集日時 2006-11-10 12:00 ]
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2006-11-10 12:32
引用:

ひろしさんの書き込み (2006-11-10 12:00) より:
Eclipse => Tomcat => JVM の設定



TomcatでJDBCドライバを置くべき場所は、
${CATALINA_HOME}/common/libです。
小僧
ぬし
会議室デビュー日: 2002/08/14
投稿数: 526
投稿日時: 2006-11-10 12:49
二ヶ月前にも同じような質問が来てましたよ。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=33165&forum=12&7
http://tomcat.apache.org/tomcat-5.5-doc/jndi-resources-howto.html

ベータ
会議室デビュー日: 2006/11/10
投稿数: 14
投稿日時: 2006-11-10 13:20
みなさん回答ありがとうございます。

引用:

ひろしさんの書き込み (2006-11-10 11:17) より:

【環境】
Tomcat 5.5.20
MySQL 5.0.24
JDBCドライバ : [TomcatインストールDIR]/common/lib/mysql-connector-java-5.0.3-bin.jar



ですのでちゃんとJDBCドライバは配置できていると思うのですが・・・。

[ メッセージ編集済み 編集者: ひろし 編集日時 2006-11-10 13:47 ]

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