I found the problem.

To get it working I needed to have the <Resource> and <ResourceParams>
in the Global section and then add a <ResourceLink> in the context for
my webapp. This enabled Tomcat to resolve the parameters.

I've posted my config files here for anyone interested:

http://www.codefutures.com/weblog/openknowledge/archives/000077.html

On Mon, 2004-04-05 at 15:08, Andy Grove wrote:

> Thanks Harry but the problem is that it is not even trying to load the
> Postgres driver - it is not getting that far. It is trying to load JDBC
> driver class '' (empty string) and is trying to access JDBC URL of
> 'null'. It seems that the ResourceParams section is not being used. 
> 
> I do have the postgres jar deployed to common/lib.
> 
> Thanks.
> 
> On Mon, 2004-04-05 at 14:52, Harry Mantheakis wrote:
> 
> > Hello
> > 
> > 
> > > My web.xml contains:
> > 
> > 
> > That looks the same as mine (which works) so no problem there. You do not
> > actually *need* this element in the deployment descriptor if you are using
> > Tomcat 5, but it makes your code portable, should you ever (God forbid!)
> > switch to another servlet container.
> > 
> > 
> > > My $TOMCAT_HOME/conf/server.xml contains the following...
> > 
> > 
> > BTW, it is $CATALINA_HOME that matters - $TOMCAT_HOME is not used.
> > 
> > Looking at your resource definitions, this sub-element:
> > 
> > 
> > <parameter>
> >      <name>url</name>
> >      <value>
> >          jdbc:postgresql://localhost/mydb
> >      </value>
> > </parameter>
> > 
> > 
> > Maybe should read:
> > 
> > 
> > <parameter>
> >      <name>url</name>
> >      <value>
> >          jdbc:postgresql://localhost:5432/mydb
> >      </value>
> > </parameter>
> > 
> > 
> > Mine, at least, needs a port number to be specified.
> > 
> > The rest of the resource element looks okay to me. Also, your look-up code
> > looks good too, so my only guess is that you have forgotten to put the
> > PostgreSQL JDBC driver under the container's classpath.
> > 
> > You probably have the driver located under your application's 'WEB-INF/lib'
> > directory.
> > 
> > Try placing the driver in the '$CATALINA_HOME/common/lib' directory, but do
> > not have it both places! (Remove it from the 'WEB-INF/lib' directory.)
> > 
> > Also, make sure you have a driver named 'pg74.1jdbc3.jar'. The one that
> > comes bundled with the PostgreSQL 7.4 RPM is out of date. You can download
> > the 7.4 driver from PG's JDBC site.
> > 
> > Good luck.
> > 
> > Harry Mantheakis
> > London, UK
> > 
> > 
> > 
> > 
> > > Hi,
> > > 
> > > I am trying to convert my Tomcat web application to use JNDI to lookup a
> > > DataSource rather than using DriverManager directly. My application
> > > works fine using DriverManager so I know I have my classpath set up
> > > correctly. 
> > > 
> > > The problem I have seems to be a very common one yet I cannot find a
> > > solution to it using Google. I am getting the following error message
> > > when I attempt to look up a DataSource:
> > > 
> > > Cannot create JDBC driver of class '' for connect URL 'null'
> > > 
> > > This implies to me that Tomcat is recognizing my <Resource> declaration
> > > in my conf/server.xml but is not loading the associated
> > > <ResourceParams>. I get this problem with Tomcat 4.1 and 5.0 on Red Hat
> > > 9 with Sun JDK 1.4.2.
> > > 
> > > My web.xml contains:
> > > 
> > > <resource-ref>
> > >   <description>DB Connection</description>
> > >   <res-ref-name>jdbc/mydb</res-ref-name>
> > >   <res-type>javax.sql.DataSource</res-type>
> > >   <res-auth>Container</res-auth>
> > > </resource-ref>
> > > 
> > > My $TOMCAT_HOME/conf/server.xml contains the following (I have tried
> > > defining this within the context of my webapp and also in the
> > > GlobalNamingResources section).
> > > 
> > > <Resource name="jdbc/mydb" auth="Container" type="javax.sql.DataSource"
> > > />
> > >                  
> > > <ResourceParams name="jdbc/mydb">
> > >   <parameter>
> > >     <name>factory</name>
> > >     <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
> > >   </parameter>
> > >   <parameter>
> > >     <name>maxActive</name>
> > >     <value>100</value>
> > >   </parameter>
> > >   <parameter>
> > >     <name>maxIdle</name>
> > >     <value>30</value>
> > >   </parameter>
> > >   <parameter>
> > >     <name>maxWait</name>
> > >     <value>10000</value>
> > >   </parameter>
> > >   <parameter>
> > >    <name>username</name>
> > >    <value>ebay</value>
> > >   </parameter>
> > >   <parameter>
> > >    <name>password</name>
> > >    <value></value>
> > >   </parameter>
> > >   <parameter>
> > >      <name>driverClassName</name>
> > >      <value>org.postgresql.Driver</value>
> > >   </parameter>
> > >   <parameter>
> > >     <name>url</name>
> > >     <value>jdbc:postgresql://localhost/mydb</value>
> > >   </parameter>
> > > </ResourceParams>
> > > 
> > > Lastly, my Java code is as follows:
> > > 
> > > InitialContext initCtx = new InitialContext();
> > > Object obj = initCtx.lookup( "java:comp/env/jdbc/mydb" );
> > > DataSource ds = (DataSource) obj;
> > > return ds.getConnection();
> > > 
> > > Does anyone have JNDI working with Tomcat? Any help would be much
> > > appreciated!
> > > 
> > > Thanks,
> > > 
> > > Andy Grove.
> > > 
> > > 
> > 
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> > 

Reply via email to