Tomcat setup

Note

The postgresql.jar file must be placed in $CATALINA_HOME/common/lib in both Tomcat 4 and 5.

The absolute easiest way to set this up in either tomcat instance is to use the admin web application that comes with Tomcat, simply add the datasource to the context you want to use it in.

Setup for Tomcat 4 place the following inside the tag inside conf/server.xml

 name="jdbc/postgres" scope="Shareable" type="javax.sql.DataSource"/>
 name="jdbc/postgres">
    
        validationQuery
        select version();
    
    
        url
        jdbc:postgresql://localhost/davec
    
    
        password
        davec
    
    
        maxActive
        4
    
    
        maxWait
        5000
    
    
        driverClassName
        org.postgresql.Driver
    
    
        username
        davec
    
    
        maxIdle
        2
    
   

Setup for Tomcat 5, you can use the above method, except that it goes inside the tag inside the tag. eg. ... ...

Alternatively there is a conf/Catalina/hostname/context.xml file. For example http://localhost:8080/servlet-example has a directory $CATALINA_HOME/conf/Catalina/localhost/servlet-example.xml file. Inside this file place the above xml inside the tag

Then you can use the following code to access the connection.

import javax.naming.*;
import javax.sql.*;
import java.sql.*;
public class DBTest 
{

    String foo = "Not Connected";
    int bar = -1;

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

            // /jdbc/postgres is the name of the resource above 
            DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/postgres");

            if (ds != null) 
            {
                Connection conn = ds.getConnection();

                if(conn != null) 
                {
                    foo = "Got Connection "+conn.toString();
                    Statement stmt = conn.createStatement();
                    ResultSet rst = stmt.executeQuery("select id, foo, bar from testdata");

                    if(rst.next())
                    {
                        foo=rst.getString(2);
                        bar=rst.getInt(3);
                    }
                    conn.close();
                }
            }
        }
        catch(Exception e) 
        {
            e.printStackTrace();
        }
    }

    public String getFoo() { return foo; }

    public int getBar() { return bar;}
}