Java Mailing List Archive

http://www.junlu.com/

Home » Home (12/2007) » Tomcat Users »

Problems with Tomcat 4.1.27 and MySQL J/Connector 3.0.9 (stable)

Ilari Kontinen

2003-12-02

Replies:

Hello,

I am developing a JSP-based web application that uses database (MySQL)
to preserve data. I am using a datasource (javax.sql.DataSource) as a
global resource and a datasource realm
(org.apache.catalina.realm.DataSourceRealm) as a realm for
authenticating the users of my web application.

I encountered the following problem when I changed the plain old
JDBC-connection (java.sql.Connection) of my web application, obtained
from a call to DriverManager, to a DBCP-datasource obtained from a
JNDI-lookup. I have browsed through multiple mailing list archives, but
have not found any solutions to this.

The problem is that when I try to open the connection by calling method
dataSource.getConnection() it throws a java.sql.SQLException stating
"Cannot load JDBC driver class 'null'". The weird part is, that the
form-based authentication that uses the same datasource works fine! So
it seems that only the classes in my web application cannot find the
appropriate JDBC-driver and thus does not work. I have included the
.jar-file in $CATALINA_HOME/common/lib. Can anyone give me a good
explanation why this happens, and solve my problem?

Server.xml (important parts):
<GlobalNamingResources>
  <Resource name="jdbc/TestDB" auth="Container"
        type="javax.sql.DataSource"/>
  <ResourceParams name="jdbc/TestDB">
   <parameter>
    <name>factory</name>
    <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
   </parameter>
   <parameter>
    <name>maxActive</name>
    <value>100</value>
   </parameter>
   <parameter>
    <name>maxIdle</name>
    <value>30</value>
   </parameter>
   <parameter>
    <name>maxWait</name>
    <value>10000</value>
   </parameter>
   <parameter>
    <name>username</name>
    <value>userx</value>
   </parameter>
   <parameter>
    <name>password</name>
    <value>passx</value>
   </parameter>
   <parameter>
    <name>driverClassName</name>
    <value>com.mysql.jdbc.Driver</value>
   </parameter>
   <parameter>
    <name>url</name>
    <value>jdbc:mysql://localhost/TestDB?autoReconnect=true</value>
   </parameter>
  </ResourceParams>
</GlobalNamingResources>
<Service...>
<Engine...>
<Realm className="org.apache.catalina.realm.DataSourceRealm"
  debug="99" dataSourceName="jdbc/TestDB" userTable="UserTBL"
  userNameCol="userid" userCredCol="pass" userRoleTable="RoleTBL"
  roleNameCol="role"/>
</Engine>
</Service>

Web.xml (important parts):
<resource-ref>
  <res-ref-name>jdbc/TestDB</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
</resource-ref>

Web application code:
Context ctx = new InitialContext();
dataSource = (DataSource)ctx.lookup("java:comp/env/jdbc/TestDB");
connection = dataSource.getConnection(); //this throws the Exception

//This used to work
//Class.forName ("com.mysql.jdbc.Driver").newInstance ();
//connection = DriverManager.getConnection("jdbc:mysql://localhost/" +
          database, "userx", "passx");

Exception:
java.sql.SQLException: Cannot load JDBC driver class 'null'
    at
org.apache.commons.dbcp.BasicDataSource.createDataSource (BasicDataSource.java:529)
    at
org.apache.commons.dbcp.BasicDataSource.getConnection (BasicDataSource.java:312)
    at package.BaseDAO.openConnection(Unknown Source)
    at package.OwnDAO.ownMethod(Unknown Source)
    at org.apache.jsp.onw_jsp._jspService(own_jsp.java:76)
    at
org.apache.jasper.runtime.HttpJspBase.service (HttpJspBase.java:137)
    at javax.servlet.http.HttpServlet.service (HttpServlet.java:853)
    at
org.apache.jasper.servlet.JspServletWrapper.service (JspServletWrapper.java:210)
    at
org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:295)
    at
org.apache.jasper.servlet.JspServlet.service (JspServlet.java:241)
    at javax.servlet.http.HttpServlet.service (HttpServlet.java:853)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:247)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:193)



---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@(protected)
For additional commands, e-mail: tomcat-user-help@(protected)



©2008 junlu.com - Jax Systems, LLC, U.S.A.