You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by David Uctaa <du...@gmail.com> on 2006/11/09 22:06:27 UTC

Cannot load JDBC driver class... but it's definitely there...

Running Tomcat 5.5.17 through Eclipse 3.2.1
Using jdk1.5.0_08
OS = Windows XP

--------------------
server.xml contains the following within the <Server> element:

  <GlobalNamingResources>
    <Resource auth="Container" driverClassName="
com.ibm.as400.access.AS400JDBCDriver" maxActive="30" maxIdle="2"
maxWait="5000" name="jdbc/myDatabase" password="pw" type="
javax.sql.DataSource" url="jdbc:as400://abc.def.com" username="uid"/>
  </GlobalNamingResources>

------------------
the web application's context.xml contains the following:

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/TestBed" reloadable="true">
          <ResourceLink global="jdbc/myDatabase" name="jdbc/myDatabase"
type="javax.sql.DataSource" />
</Context>

-----------------
my servlet code contains the following:

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

---------------
jt400.jar contains the driver class com.ibm.as400.access.AS400JDBCDriver and
the jar files resides in WEB-INF/lib under my web app.

-------------
the ds.getConnection call is causing the following exceptions to be thrown:

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver
class 'com.ibm.as400.access.AS400JDBCDriver'
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(
BasicDataSource.java:766)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(
BasicDataSource.java:540)
    at com.nuhorizons.util.TestStuff.doPost(TestStuff.java:48)
    at com.nuhorizons.util.TestStuff.doGet(TestStuff.java:34)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(
StandardWrapperValve.java:213)
    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.coyote.http11.Http11Processor.process(Http11Processor.java
:869)
    at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection
(Http11BaseProtocol.java:664)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(
PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.ClassNotFoundException:
com.ibm.as400.access.AS400JDBCDriver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:164)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(
BasicDataSource.java:760)
    ... 19 more

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

What setting in Eclipse am I overlooking?

Many thanks,
David

Re: Cannot load JDBC driver class... but it's definitely there...

Posted by David Uctaa <du...@gmail.com>.
Worked like a charm David.  Thank you so very much!

David

On 11/9/06, David Smith <dn...@cornell.edu> wrote:
>
> The driver has to be in tomcat's common/lib so tomcat's internal
> classloader can see it.  Don't know what the equivalent is in Eclipse.
> Additionally, when in common/lib it should be removed from WEB-INF/lib
> of your webapp to avoid classloader problems.
>
> --David
>
> David Uctaa wrote:
>
> > Running Tomcat 5.5.17 through Eclipse 3.2.1
> > Using jdk1.5.0_08
> > OS = Windows XP
> >
> > --------------------
> > server.xml contains the following within the <Server> element:
> >
> >  <GlobalNamingResources>
> >    <Resource auth="Container" driverClassName="
> > com.ibm.as400.access.AS400JDBCDriver" maxActive="30" maxIdle="2"
> > maxWait="5000" name="jdbc/myDatabase" password="pw" type="
> > javax.sql.DataSource" url="jdbc:as400://abc.def.com" username="uid"/>
> >  </GlobalNamingResources>
> >
> > ------------------
> > the web application's context.xml contains the following:
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <Context path="/TestBed" reloadable="true">
> >          <ResourceLink global="jdbc/myDatabase" name="jdbc/myDatabase"
> > type="javax.sql.DataSource" />
> > </Context>
> >
> > -----------------
> > my servlet code contains the following:
> >
> >            InitialContext ctx = new InitialContext();
> >            Context envCtx = (Context) ctx.lookup("java:comp/env");
> >            ds = (DataSource) envCtx.lookup("jdbc/myDatabase");
> >            con = ds.getConnection();
> >
> > ---------------
> > jt400.jar contains the driver class
> > com.ibm.as400.access.AS400JDBCDriver and
> > the jar files resides in WEB-INF/lib under my web app.
> >
> > -------------
> > the ds.getConnection call is causing the following exceptions to be
> > thrown:
> >
> > org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver
> > class 'com.ibm.as400.access.AS400JDBCDriver'
> >    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(
> > BasicDataSource.java:766)
> >    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(
> > BasicDataSource.java:540)
> >    at com.nuhorizons.util.TestStuff.doPost(TestStuff.java:48)
> >    at com.nuhorizons.util.TestStuff.doGet(TestStuff.java:34)
> >    at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> >    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> >    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> > ApplicationFilterChain.java:252)
> >    at org.apache.catalina.core.ApplicationFilterChain.doFilter(
> > ApplicationFilterChain.java:173)
> >    at org.apache.catalina.core.StandardWrapperValve.invoke(
> > StandardWrapperValve.java:213)
> >    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.coyote.http11.Http11Processor.process(Http11Processor.java
> > :869)
> >    at
> >
> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection
> >
> > (Http11BaseProtocol.java:664)
> >    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(
> > PoolTcpEndpoint.java:527)
> >    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
> > LeaderFollowerWorkerThread.java:80)
> >    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
> > ThreadPool.java:684)
> >    at java.lang.Thread.run(Thread.java:595)
> > Caused by: java.lang.ClassNotFoundException:
> > com.ibm.as400.access.AS400JDBCDriver
> >    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
> >    at java.security.AccessController.doPrivileged(Native Method)
> >    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
> >    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
> >    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
> >    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
> >    at java.lang.Class.forName0(Native Method)
> >    at java.lang.Class.forName(Class.java:164)
> >    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(
> > BasicDataSource.java:760)
> >    ... 19 more
> >
> > --------------
> >
> > What setting in Eclipse am I overlooking?
> >
> > Many thanks,
> > David
> >
>
>
> ---------------------------------------------------------------------
> To start a new topic, e-mail: users@tomcat.apache.org
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>
>

Re: Cannot load JDBC driver class... but it's definitely there...

Posted by David Smith <dn...@cornell.edu>.
The driver has to be in tomcat's common/lib so tomcat's internal
classloader can see it.  Don't know what the equivalent is in Eclipse. 
Additionally, when in common/lib it should be removed from WEB-INF/lib
of your webapp to avoid classloader problems.

--David

David Uctaa wrote:

> Running Tomcat 5.5.17 through Eclipse 3.2.1
> Using jdk1.5.0_08
> OS = Windows XP
>
> --------------------
> server.xml contains the following within the <Server> element:
>
>  <GlobalNamingResources>
>    <Resource auth="Container" driverClassName="
> com.ibm.as400.access.AS400JDBCDriver" maxActive="30" maxIdle="2"
> maxWait="5000" name="jdbc/myDatabase" password="pw" type="
> javax.sql.DataSource" url="jdbc:as400://abc.def.com" username="uid"/>
>  </GlobalNamingResources>
>
> ------------------
> the web application's context.xml contains the following:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <Context path="/TestBed" reloadable="true">
>          <ResourceLink global="jdbc/myDatabase" name="jdbc/myDatabase"
> type="javax.sql.DataSource" />
> </Context>
>
> -----------------
> my servlet code contains the following:
>
>            InitialContext ctx = new InitialContext();
>            Context envCtx = (Context) ctx.lookup("java:comp/env");
>            ds = (DataSource) envCtx.lookup("jdbc/myDatabase");
>            con = ds.getConnection();
>
> ---------------
> jt400.jar contains the driver class
> com.ibm.as400.access.AS400JDBCDriver and
> the jar files resides in WEB-INF/lib under my web app.
>
> -------------
> the ds.getConnection call is causing the following exceptions to be
> thrown:
>
> org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver
> class 'com.ibm.as400.access.AS400JDBCDriver'
>    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(
> BasicDataSource.java:766)
>    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(
> BasicDataSource.java:540)
>    at com.nuhorizons.util.TestStuff.doPost(TestStuff.java:48)
>    at com.nuhorizons.util.TestStuff.doGet(TestStuff.java:34)
>    at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
>    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java:252)
>    at org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java:173)
>    at org.apache.catalina.core.StandardWrapperValve.invoke(
> StandardWrapperValve.java:213)
>    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.coyote.http11.Http11Processor.process(Http11Processor.java
> :869)
>    at
> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection
>
> (Http11BaseProtocol.java:664)
>    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(
> PoolTcpEndpoint.java:527)
>    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
> LeaderFollowerWorkerThread.java:80)
>    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
> ThreadPool.java:684)
>    at java.lang.Thread.run(Thread.java:595)
> Caused by: java.lang.ClassNotFoundException:
> com.ibm.as400.access.AS400JDBCDriver
>    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
>    at java.security.AccessController.doPrivileged(Native Method)
>    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
>    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
>    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
>    at java.lang.Class.forName0(Native Method)
>    at java.lang.Class.forName(Class.java:164)
>    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(
> BasicDataSource.java:760)
>    ... 19 more
>
> --------------
>
> What setting in Eclipse am I overlooking?
>
> Many thanks,
> David
>


---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org