Re: JNDI Datasource configuration

From: "Luke (Terry) Vanderfluit" <luke(at)chipcity(dot)com(dot)au>
To: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: JNDI Datasource configuration
Date: 2004-08-29 20:53:41
Message-ID: 1093812821.1211.164.camel@bench.chipcity.com.au
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Hi,

Do you configure the Datasource thru Tomcat's Administrator Console
> (http://localhost:8080/admin) or by editing files? I prefer doing it
> thru the Admin Console. Do you edit any other files?
>
> Currently my datasource is set like this in the console:
> JNDI Name:
> jdbc/Test
> Data Source URL: jdbc:postgresql://foo.edu:5432/Test
> JDBC Driver Class: org.postgresql.Driver
> Username: User
> Password: Password
> Max. Active Connections: 4
> Max. Idle Connections: 2
> Max. Wait for Connection: 5000
> Validation Query:
>
> Does all this look right?

Your Data Source URL should be jdbc:postgresql:Test

but I can't gather whether your setup is correct,
myself, I found some helpful notes at:

http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jndi-datasource-examples-howto.html
and

http://66.137.16.41:8080/expresso/expresso/ (you'll find quite a bit of
info relating to their expresso stuff but also generally interesting
information for installing jdbc

particularly this section
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To use a Tomcat data source you will have to

*

Define a JNDI resource reference in your Web application
deployment descriptor
*

Map the JNDI resource reference onto a real resource (database
connection) in the context of your application
*

Look up the JNDI data source resource reference in your code to
obtain a pooled database connection

Defining a Resource Reference

First, you will need a JNDI name for your database connection;
conventionally it should begin with jdbc/. The example uses the name
jdbc/conversion. Now add a <resource-ref> element to the web.xml file
for your Web application to define the data source as follows:

<resource-ref>
<res-ref-name>jdbc/conversion</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

The <res-ref-name> element identifies the resource reference name, the
<res-type> entry defines the reference as a JDBC data source, and the
<res-auth> specifies that resource authentication is applied by the
Container. The <resource-ref> element must be added after any
<servlet-mapping> elements in the deployment descriptor.

Defining the Resource
Second, you must add an entry for the database resource to the
<CATALINA_HOME>/conf/ser
ver.xml file by adding a <ResourceParams> element to define the database
connection inf
ormation. The <ResourceParams> can be defined inside the
<DefaultContext> tag to be ava
ilable to all Web applications, or it can be defined inside the
<Context> element for a
specific application.

A suitable Tomcat 4.1 <ResourceParams> element for the example database
is shown in the
following listing (Tomcat 4.0 uses different attribute names as
explained in the notes
):

<Context path="/database" docBase="database" debug="0"
reloadable="true" >
<ResourceParams name="jdbc/conversion">
<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value>secret</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>org.gjt.mm.mysql.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost/test</value>
</parameter>
</ResourceParams>
</Context>

In the <ResourceParams> element example, the name attribute must exactly
match the <res
-ref-name> value you defined in the <resource-ref> element of the
web.xml file.

Note - As an alternative to using resource references in an
application's web.xml file, you can define the resource using a
<Resource> element in the server.xml file. You can add a <resource>
element to the <Context> element for an individual application or to the
<DefaultContext> element to define the resource for all Web
applications. The <Resource> definition for the example JDBC data source
is

<Resource name="jdbc/conversion"

auth="Container"

type="javax.sql.DataSource"/>

The various <ResourceParams> components define the database connection
parameters as follows:

Parameter

Value

username

Username for the database (root); under Tomcat 4.0 this attribute is
called user

password

Password for the user root (secret)

driverClassName

Driver class for the database connection (org.gjt.mm.mysql.Driver)

url

JDBC connection string for the database (jdbc:mysql://localhost/test);
under Tomcat 4.0
this attribute is called driverName

Caution - The server.xml file contains the unencrypted password for
accessing the d
atabase. This file should be secured so that unauthorized users cannot
read it.

The <ResourceParams> element in the server.xml file encapsulates all the
information re
quired to access the database. When moving your application from a
development environm
ent to a live environment, you need only change the values for the
parameters in the se
rver.xml file. Neither the Java code nor the web.xml resource reference
entry need to b
e modified.

Using Tomcat data sources decouples the database vendor connection
details from the ser
vlet code and gives you the performance benefits gained from using a
connection pool. P
ut simply, always use Tomcat's data sources when accessing a database.

Caution - When using data sources with both Tomcat 4.1 and Tomcat
4.0, you must pla
ce the JDBC JAR file for your database driver in the
<CATALINA_HOME>/common/lib directo
ry; otherwise, Tomcat will not be able to load the JDBC driver.

hope this helps,
Luke

--
========================
Luke (Terry) Vanderfluit
Mobile: 0421 276 282
========================

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message Antony Paul 2004-08-30 10:56:23 AutoCommit and SQLException
Previous Message Mag Gam 2004-08-29 13:19:33 JNDI Datasource configuration