Re: Tomcat - PostgreSQL - Cannot load JDBC driver class "null" - Mailing list pgsql-jdbc
From | David Drazic |
---|---|
Subject | Re: Tomcat - PostgreSQL - Cannot load JDBC driver class "null" |
Date | |
Msg-id | 33398.155.239.180.238.1064608733.squirrel@verang.co.za Whole thread Raw |
In response to | Tomcat - PostgreSQL - Cannot load JDBC driver class "null" ("CRAIG GOLBY" <craig@golby.me.uk>) |
List | pgsql-jdbc |
Hi Craig, I've done a similar implementation, and can only offer what worked for me: 1. I've used the convenience RPM's from jpackage.org, and made sure the following jar files are in the <CATALINA_HOME>/commons/lib folder: a) pg73b1jdbc3.jar b) jndi.jar c) commons-dbcp.jar d) commons-pool.jar 2. The relevant context in the server.xml file is: <Context path="/webapps/DBTest" docBase="DBTest" debug="0" reloadable="true" crossContext="true"> <Resource name="jdbc/postgres" auth="Container" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/postgres"> <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://127.0.0.1:5432/DBTest</value> </parameter> <parameter> <name>username</name> <value>username</value> </parameter> <parameter> <name>password</name> <value>password</value> </parameter> <parameter> <name>maxActive</name> <value>20</value> </parameter> <parameter> <name>maxIdle</name> <value>10</value> </parameter> <parameter> <name>maxWait</name> <value>-1</value> </parameter> <parameter> <name>removeAbandoned</name> <value>true</value> </parameter> <parameter> <name>removeAbandonedTimeout</name> <value>60</value> </parameter> </ResourceParams> </Context> 3. The relevant entry in the <DBTest>/WEB-INF/web.xml file is: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <description>DBTest</description> <resource-ref> <res-ref-name>jdbc/postgres</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> </web-app> 4. I've referenced this resource in a jsp as follows: Context ic = new InitialContext(); DataSource source = (DataSource)ic.lookup("java:comp/env/jdbc/postgres"); Connection con = source.getConnection(); That's it. If I had to guess at the error, I would presume it being that you did not specify the resource type as javax.sql.DataSource in your server.xml file. Hope this helps. David On Fri, 2003-09-26 at 18: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 >
pgsql-jdbc by date: