- PR -

TOMCAT5でMySQLにDBCP接続ができません。

1
投稿者投稿内容
じーる
会議室デビュー日: 2005/03/13
投稿数: 2
投稿日時: 2005-03-13 01:06
初めて投稿します。長文で申し訳ありません。
かなりはまっています。どなかお力添えをお願いいたします。

現在、TOMCAT5.5.4とMySQLを用いてデータソースの設定を行っております。

環境は

RedHat9
JDK1.5.0
TOMCAT5.5.4
MySQL4.0.23

を使用しています。現在JSPからdriverManagerを使用してMySQLに接続できています。
これをデータソースを使って接続させたいのですが、うまくいきません。

server.xml の中に

<Context path="/DBtest" docBase="/DBtest"
reloadable="true" crossContext="true">
<Resource name="jdbc/MySQL" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/MySQL">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>username</name>
<value>testuser</value>
</parameter>
<parameter>
<name>password</name>
<value>testpass</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>org.gjt.mm.mysql.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://192.168.1.4:3306/testdb?useUnicode=true</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
</ResourceParams>
</Context>

と記述し、web.xml には

<description>MySQL Test App</description>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/MySQL</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

と書いてあります。また、$CATALINA_HOME/common/lib には

mysql-connector-java-3.0.16-ga-bin.jar

を配置しています。

同じ設定ファイルを用いてWindowsマシンで動かすとうまくいきます。環境は
下記のようになっていて違っていますが。

Microsoft Windws 2000 5.00.2195 Service Pack4
Tomcat/5.0.25
j2sdk1.4.2_04
(データベースは同じマシンのもの)

テスト用のJSPは下記のものです。windowマシンでは動いてしまいます。

<%@ page language="java" contentType="text/html;charset=Shift_JIS" %>
<%@ page import="java.sql.Connection"%>
<%@ page import="java.sql.ResultSet"%>
<%@ page import="java.sql.Statement"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%@ page import="javax.servlet.*"%>
<%@ page import="javax.servlet.http.*"%>
<%@ page import="java.io.*"%>
<%@ page import="javax.naming.*"%>

<%
Connection con = null;
Statement stmt = null;
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/MySQL");
%>

<b>ds</b><%=ds%><br><%

con = ds.getConnection();
%><b>con</b><%=con%><br><%
stmt = con.createStatement();
%><b>stmt</b><%=stmt%><br><%

StringBuffer datas = new StringBuffer();
String syouhin_name = "";

String sql = "SELECT * from mst_syouhin limit 10";
ResultSet rs = stmt.executeQuery(sql);
%>sql<%=sql%><br><%
while(rs.next()) {
syouhin_name= rs.getString("syouhin_name");
%>syouhin_name<%=syouhin_name%><br><%
datas.append(syouhin_name+"/");
}
rs.close();stmt.close();

%>
<html>
<body>
<br>
<%=datas.toString()%><br>
</body>
</html>


Linuxマシンで実行すると、下記のようなエラーとなります。

次のようなエラーが発生しました。 javax.servlet.ServletException: Cannot create JDBC driver of class '' for connect URL 'null'

--------------------------------------------------------------------------------

javax.servlet.ServletException: Cannot create JDBC driver of class '' for connect URL 'null'
at org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:845)
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:778)
at org.apache.jsp.m.test_jsp._jspService(org.apache.jsp.m.test_jsp:158)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:300)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:383)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:743)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:675)
at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:866)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)

javax.servlet.ServletException: Cannot create JDBC driver of class '' for connect URL 'null'

かなりいろいろ調べたましたが、お手上げ状態です。恐縮ですがどなたか教えていただけないでしょうか。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-03-13 06:52
ちょっとまえのスレッドですが参考になるのではないでしょうか。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=19567&forum=12&5
しゅう
会議室デビュー日: 2004/02/07
投稿数: 7
投稿日時: 2005-03-13 10:29
はじめまして。
私も同じようにはまったことがあるのですが、5.5系のリファレンスを見るとserver.xmlの書き方が違っていて、そのとおりに書いたところ動きましたので試してみてはいかがでしょうか?

http://jakarta.apache.org/tomcat/tomcat-5.5-doc/jndi-datasource-examples-howto.html
じーる
会議室デビュー日: 2005/03/13
投稿数: 2
投稿日時: 2005-03-13 16:15
インギさん、しゅうさんありがとうございます。

しゅうさんのご指摘どおり、5.5系のリファレンスを参照して下記のようにserver.xmlのコンテキスト内を書き換えた所、接続できました。

<Resource name="jdbc/MySQL" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="testuser" password="testpass"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/testDB?useUnicode=true"/>

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

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