I had that error too and just reproduced it again to be sure of how I
resolved it.
Let's say the following is a correct entry in server.xml:
<Context path="/DBTest" docBase="DBTest"
debug="5" reloadable="true" crossContext="true">
but I make a mistake and use
<Context path="/dBTest" docBase="DBTest"
debug="5" reloadable="true" crossContext="true">
**Notice the D vs d in the context path**
Then I get a Cannot load JDBC driver class 'null' error message
With the root context, where I had my problem, it was confusing because
I needed path="/root" and not path="/". Also, the error message is
seemingly unrelated to the actual problem
Anyway, whether or not this is the origin of your error I do not know,
but only know that I got the same message when my context path was
incorrect.
Shawn
On Sat, 2003-01-11 at 05:21, Daren R. Sefcik wrote:
> Yes I have..I have been trying for the last week
> to figure it out. I have found the same thing that
> BasicDataSource does not load the driverClassName.
> I have put my jdbcdriver.jar file in the common/lib
> dir..and I know it's in the classpath of tomcat as I
> can write a jsp page with a Class.forName and have
> it work fine.The problem only surfaces when doing
> jndi Datasource lookups. The driverClassName from
> the server.xml file is never passed to BasicDataSource.
>
> If anyone can spot errors in my configuration please
> let me know, thanks..
>
>
> I know that the server.mxl is being read from my logs:
>
> 2003-01-10 11:22:29 NamingContextListener[/Apache/localhost/intranet]: Creating JNDI
>naming context
> 2003-01-10 11:22:29 NamingContextListener[/Apache/localhost/intranet]: Resource
>parameters for jdbc/TestDB = ResourceParams[name=jdbc/TestDB,
>parameters={factory=org.apache.commons.dbcp.BasicDataSourceFactory, password=user,
>url=jdbc:jtds:sqlserver://ns1:1433/WebDB,
>driverClassName=net.sourceforge.jtds.jdbcx.TdsDataSource, username=webuser}]
> 2003-01-10 11:22:29 NamingContextListener[/Apache/localhost/intranet]: Adding
>resource ref jdbc/TestDB
> 2003-01-10 11:22:29 NamingContextListener[/Apache/localhost/intranet]:
>ResourceRef[className=javax.sql.DataSource,factoryClassLocation=null,factoryClassName=org.apache.naming.factory.ResourceFactory,{type=scope,content=Shareable},{type=auth,content=Container},{type=factory,content=org.apache.commons.dbcp.BasicDataSourceFactory},{type=password,content=user},{type=url,content=jdbc:jtds:sqlserver://ns1:1433/WebDB},{type=driverClassName,content=net.sourceforge.jtds.jdbcx.TdsDataSource},{type=username,content=webuser}]
>
> Here is the error from catalina.out:
>
> new context
> ctx lookup
> gonna try a ds.getConnection
> 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 foo.DBTest.init(DBTest.java:34)
> at org.apache.jsp.test_jsp._jspService(test_jsp.java:49)
>
>
> Here is my server.xml:
>
> <Server port="8005" shutdown="SHUTDOWN" debug="0">
>
> <GlobalNamingResources>
> <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
> </GlobalNamingResources>
>
> <Service name="Tomcat-Apache">
>
> <Connector className="org.apache.catalina.connector.warp.WarpConnector"
> port="8008" minProcessors="5" maxProcessors="75"
> enableLookups="true" appBase="webapps"
> acceptCount="10" debug="5"/>
>
> <!-- Replace "localhost" with what your Apache "ServerName" is set to -->
> <Engine className="org.apache.catalina.connector.warp.WarpEngine"
> name="Apache" debug="5">
>
> <Host name="localhost" debug="5" appBase="webapps"
> unpackWARs="true" autoDeploy="true">
>
> <Context path="/intranet" docBase="intranet"
> debug="5" reloadable="true" crossContext="true">
>
> <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>driverClassName</name>
> <value>net.sourceforge.jtds.jdbcx.TdsDataSource</value>
> </parameter>
> <parameter>
> <name>url</name>
> <value>jdbc:jtds:sqlserver://ns1:1433/WebDB</value>
> </parameter>
> <parameter>
> <name>username</name>
> <value>webuser</value>
> </parameter>
> <parameter>
> <name>password</name>
> <value>user</value>
> </parameter>
> </ResourceParams>
>
> <Logger className="org.apache.catalina.logger.FileLogger"
> prefix="intranet_log." suffix=".txt"
> timestamp="true"/>
>
> </Context>
>
> </Host>
> </Engine>
> </Service>
>
> </Server>
>
> And here is the webapps/intranet/WEB-INF/web.xml:
>
> <?xml version="1.0"?>
>
> <!DOCTYPE web-app
> PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
> "http://java.sun.com/j2ee/dtds/web-app_2.2.dtd">
>
> <web-app>
> <resource-ref>
> <description>DB Connection</description>
> <res-ref-name>jdbc/TestDB</res-ref-name>
> <res-type>javax.sql.DataSource</res-type>
> <res-auth>Container</res-auth>
> </resource-ref>
> </web-app>
>
>
>
>
>
> > Has anyone else experienced this????
> > I have read a couple of posts that I found off google,
> > and basically what they are saying is non of the information in
> > the server.xml file is being passed to the Datasource or something of
> > that nature.
>
> > The suggested fix was to hardcode everything but that kind of defeats
> > the purpose.
> >
> > > I have experience that before, but that was my fault rather than tomcat.
> > > I put the source jar instead of the driver binary. Other than that DBCP
> > > worked as described in the tomcat documents. Cannot load JDBC driver
> > > class null usually means that it couldn't find the jdbc driver that you
> > > specified in the server.xml .
> >
> > that is strange cause I have it in
> > $CATALINA_HOME/common/lib
> >
> > And it is exactly the same class that I used when I was using JDBC
> > non-jndi.
>
>
> --
> To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
--
shawn <[EMAIL PROTECTED]>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>