Thread: Re: Tomcat - PostgreSQL - Cannot load JDBC driverclass"null"

Re: Tomcat - PostgreSQL - Cannot load JDBC driverclass"null"

From
"CRAIG GOLBY"
Date:
Thanks Dave,

Have extracted org.postgresql.Driver and put it under WEB-INF, creating
a structure of
Tomcat/webapps/ROOT/WEB-INF/lib/org/postgresql/Driver.class, made no
difference.

On suggestion 2, I don't appear to have a jre/lib/ext from root or
anywhere in the Tomcat structure, am I missing something here ??

Suggestion 3, would love to, but havent written any servlets before so
will need to get the book out.  Will let you know.


-----Original Message-----
From: Dave Cramer [mailto:Dave@micro-automation.net]
Sent: 26 September 2003 18:24
To: CRAIG GOLBY

Craig,

Ok, couple of things you can try. I seem to remember it not working in
common/lib, but then I've also given up on tomcat.

1) move the driver into the WEB-INF/lib dir
2) move the driver into the jre/lib/ext dir    this is real overkill
3) try writing a very small servlet that just loads the driver, remember
you have to set autoload or whatever in the web.xml file for this
servlet.

ie

class servletclass
{
    init(....)

    load postgres

}


Cheers,

Dave

On Fri, 2003-09-26 at 13:09, CRAIG GOLBY wrote:
> Sorry, bound to miss the obvious, it throws an Exception:-
>
> java.sql.SQLException: Cannot load JDBC driver class 'null'
>
> -----Original Message-----
> From: Dave Cramer [mailto:Dave@micro-automation.net]
> Sent: 26 September 2003 18:03
> To: CRAIG GOLBY
> Cc: pgsql-jdbc@postgresql.org
>
> Craig,
>
> So what happens, does it fail, does it run, does it throw an exeption?
>
> Dave
> On Fri, 2003-09-26 at 12:29, CRAIG GOLBY wrote:
> > 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
> >
> >
> >
> >
> >
> --
> Dave Cramer <Dave@micro-automation.net>
>
>
>
--
Dave Cramer <Dave@micro-automation.net>




Re: Tomcat - PostgreSQL - Cannot load JDBC driverclass"null"

From
"Nick Fankhauser"
Date:
Craig-

It sure seems like you are having a simple class path problem. (simple but
elusive.)

A couple of things to think about if you haven't already:

Remember that *your* classpath is not necessarily the classpath of the
process that runs tomcat, so classpath changes should go where they get
picked up by that process.

To make sure the tomcat process can see the JDBC drivers, take a look at
/etc/init.d/tomcat -You can either put the jdbc jar file in one of the
directories it already looks in, or add your own entry to the classpath.

-Nick



> -----Original Message-----
> From: pgsql-jdbc-owner@postgresql.org
> [mailto:pgsql-jdbc-owner@postgresql.org]On Behalf Of CRAIG GOLBY
> Sent: Friday, September 26, 2003 1:15 PM
> To: Dave@micro-automation.net
> Cc: pgsql-jdbc@postgresql.org
> Subject: Re: [JDBC] Tomcat - PostgreSQL - Cannot load JDBC
> driverclass"null"
>
>
> Thanks Dave,
>
> Have extracted org.postgresql.Driver and put it under WEB-INF, creating
> a structure of
> Tomcat/webapps/ROOT/WEB-INF/lib/org/postgresql/Driver.class, made no
> difference.
>
> On suggestion 2, I don't appear to have a jre/lib/ext from root or
> anywhere in the Tomcat structure, am I missing something here ??
>
> Suggestion 3, would love to, but havent written any servlets before so
> will need to get the book out.  Will let you know.
>
>
> -----Original Message-----
> From: Dave Cramer [mailto:Dave@micro-automation.net]
> Sent: 26 September 2003 18:24
> To: CRAIG GOLBY
>
> Craig,
>
> Ok, couple of things you can try. I seem to remember it not working in
> common/lib, but then I've also given up on tomcat.
>
> 1) move the driver into the WEB-INF/lib dir
> 2) move the driver into the jre/lib/ext dir    this is real overkill
> 3) try writing a very small servlet that just loads the driver, remember
> you have to set autoload or whatever in the web.xml file for this
> servlet.
>
> ie
>
> class servletclass
> {
>     init(....)
>
>     load postgres
>
> }
>
>
> Cheers,
>
> Dave
>
> On Fri, 2003-09-26 at 13:09, CRAIG GOLBY wrote:
> > Sorry, bound to miss the obvious, it throws an Exception:-
> >
> > java.sql.SQLException: Cannot load JDBC driver class 'null'
> >
> > -----Original Message-----
> > From: Dave Cramer [mailto:Dave@micro-automation.net]
> > Sent: 26 September 2003 18:03
> > To: CRAIG GOLBY
> > Cc: pgsql-jdbc@postgresql.org
> >
> > Craig,
> >
> > So what happens, does it fail, does it run, does it throw an exeption?
> >
> > Dave
> > On Fri, 2003-09-26 at 12:29, CRAIG GOLBY wrote:
> > > 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
> > >
> > >
> > >
> > >
> > >
> > --
> > Dave Cramer <Dave@micro-automation.net>
> >
> >
> >
> --
> Dave Cramer <Dave@micro-automation.net>
>
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 8: explain analyze is your friend
>