Re: Tomcat - PostgreSQL - Cannot load JDBC driver class "n - Mailing list pgsql-jdbc

From Andreas Prohaska
Subject Re: Tomcat - PostgreSQL - Cannot load JDBC driver class "n
Date
Msg-id A11D9B8C48C1D411AE0C000062A129947B1C93@ganymed.allocation.net
Whole thread Raw
Responses Tomcat - PostgreSQL - Perfomance Tunning
List pgsql-jdbc
Hm, what a strange and weird problem you are having. Your setup is look
exactly the
same as mine. When you start Tomcat and have a look at it's log, what does
the log
say about the configured resources. Is it something like this:

    NamingContextListener[...]: Creating JNDI naming context
    NamingContextListener[...]:   Resource parameters for
jdbc/PersonalDb= ResourceParams[name=jdbc/PersonalDb,
    NamingContextListener[...]:   Adding resource ref jdbc/PersonalDb
    NamingContextListener[...]:
ResourceRef[className=javax.sql.DataSource,.......
    NamingContextListener[...]:   Resource parameters for
UserTransaction = null

which would be ok, or more something like that

    NamingContextListener[...]: Creating JNDI naming context
    NamingContextListener[...]:   Resource parameters for
jdbc/PersonalDb= null
    NamingContextListener[...]:   Adding resource ref jdbc/PersonalDb
    NamingContextListener[...]:
ResourceRef[className=javax.sql.DataSource,...
    NamingContextListener[...]:   Resource parameters for
UserTransaction = null

which would be wrong, because it doesn't assign the resource parameters.

Besides that you seem to have multiple versions of some libraries in your
common/lib directory. Although it should still work, I would remove those
copies. Who knows? It might help.

You don't have to do anything with your classpath.

I think that there is a problem if you do not have compatible versions
of commons-dbpc.jar and commons-pool.jar. As far as I can remember there
have been some bugfixes for DBPC that are only available in a nightly
build (not the release version), but the nightly build requires a not
yet released version of commons-pool. However, it should report this with
an exception, shouldn't it?

Sorry, that I can only guess...

    Andreas


-----Ursprüngliche Nachricht-----
Von: CRAIG GOLBY [mailto:craig@golby.me.uk]
Gesendet: Freitag, 26. September 2003 18:30
An: pgsql-jdbc@postgresql.org
Betreff: [JDBC] Tomcat - PostgreSQL - Cannot load JDBC driver class "null"


Help, I am tearing my hair out.

I am a newbie to Linux and Tomcat, and am therefore amazed that I have got
as far as I have, that said I now seem to be stuck in front of a brick wall,
with no ladder !!

Tomcat 4.1.24 is running on ServerOne (Red Hat 9), it is currently serving
out a couple of very basic JSP's and seems to be working quite well.
ServerOne also has J2SDK 1.4.1_03 installed.  PostgreSQL 7.3 is running on
ServerTwo (Red Hat 9).  Have also installed pgAdminIII on both a Windows
Laptop and ServerTwo.  The Laptop version works fine, if a little unstable,
so TCP/IP connectivity is working fine.

Within PostgreSQL I have created a new Db called "PersonalDb", within the
public Schema I have created a table called "testOne".  TestOne has three
columns, Id, FieldOne and DateStamp, and there are currently 2 rows of data
within the table

Sample of code used is below, along with a list of the Jar files in
common/lib.

I have read through so many mailing lists now and tried so many things that
I dont know what I have and havent done, am fairly sure that it is either a
configuration issue or a missing file so will no doubt kick myself when I
find out the answer.

Any assistance would be greatly appreciated.

Regards


Craig


*******************************************************
Server XML :- Tomcat/conf
*******************************************************
<Context path="/DBTest"
         docBase="DBTest"
         debug="5"
         reloadable="true"
         crossContext="true">

<Logger className="org.apache.catalina.logger.FileLogger"
        prefix="localhost_DBTest_log." suffix=".txt"
        timestamp="true"/>

<Resource name="jdbc/PersonalDb"
          type="javax.sql.DataSource"
          auth="Container"/>

<ResourceParams name="jdbc/PersonalDb">
 <parameter>
  <name>factory</name>
  <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
 </parameter>

 <parameter>
  <name>driverClassName</name>
  <value>org.postgresql.Driver</value>
 </parameter>

 <parameter>
  <name>url</name>
  <value>jdbc:postgresql://ServerTwo:5432/PersonalDb</value>
 </parameter>

 <parameter>
  <name>username</name>
  <value>myUser</value>
 </parameter>

 <parameter>
  <name>password</name>
  <value>myPassword</value>
 </parameter>

 <parameter>
  <name>maxActive</name>
  <value>10</value>
 </parameter>

 <parameter>
  <name>maxIdle</name>
  <value>30</value>
 </parameter>

 <parameter>
  <name>maxWait</name>
  <value>10000</value>
 </parameter>

</ResourceParams>
</Context>

</Host>
</Engine>
</Service>


*******************************************************
Web XML  :-  Tomcat/webapps/root/WEB-INF
*******************************************************
  <description>PostgreSQL Test App</description>
    <resource-ref>
       <description>postgreSQL Datasource example</description>
       <res-ref-name>jdbc/PersonalDb</res-ref-name>
       <res-type>javax.sql.DataSource</res-type>
       <res-auth>Container</res-auth>
   </resource-ref>



*******************************************************
My Class File
*******************************************************

  public void init() {
    try{
      Context ctx = new InitialContext();
      if(ctx == null )
          throw new Exception("Boom - No Context");
      status = "checking CTX";

      DataSource ds =
(DataSource)ctx.lookup("java:comp/env/jdbc/PersonalDb");
      status = "Completing Lookup of CTX";

      if (ds != null)
        {
         status = "Creating Connection";
         Connection conn = ds.getConnection();   <----- FAILS HERE
         status = "Created Connection";
         if(conn != null)
           {
            foo = "Got Connection "+conn.toString();
            Statement stmt = conn.createStatement();
            ResultSet rst =
                stmt.executeQuery(
                  "select Id, FieldOne, DateStamp from Public.testOne");
            status = "Completing Select";
            if(rst.next())
            {
               foo=rst.getString(2);
               bar=rst.getInt(3);
            }
            status = "Looped through Resultset";
            conn.close();
           }
        }
      else {status = "Fell into Else";}
    }catch(Exception e) {
      e.printStackTrace();
        status = status + ", now in exception block :-" + e.toString();

    }
 }

*******************************************************
Class Files in Tomcat/common/lib
*******************************************************
activation.jar
ant.jar
collections-2.1.jar
commons-collections.jar
commons-dbcp-1.0.jar
commons-dbcp.jar
commons-logging-api.jar
commons-pool.jar
jasper-compiler.jar
jasper-runtime.jar
jdbc2_0-stdext.jar
jndi.jar
jta.jar
mail.jar
naming-common.jar
naming-factory.jar
naming-resources.jar
pg73jdbc3.jar
pool-1.0.1.jar
postgresql.jar    (Copy of  pg73jdbc3.jar)
servlet.jar

pgsql-jdbc by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: Statement.cancel() may cancel queries in the future
Next
From: Tom Lane
Date:
Subject: Re: Statement.cancel() may cancel queries in the future