Tomcat connection pooling, install jdbc driver for web-app

connection-pooling, java, jdbc, tomcat

Solution

If you don't have control over the server, then you're lost. Just create the connection pool yourself instead of letting the container do it.

I suggest to use c3p0 for this (which is far better than Tomcat's builtin DBCP since it's locked to a single thread). Put the c3p0 libraries in the `/WEB-INF/lib` and create it as per its documentation:

ComboPooledDataSource dataSource = new ComboPooledDataSource(); 
dataSource.setDriverClass("org.postgresql.Driver"); 
dataSource.setJdbcUrl("jdbc:postgresql://localhost/testdb");
dataSource.setUser("dbuser");
dataSource.setPassword("dbpassword"); 
// ...

Connection connection = null;
// ...
try {
    connection = dataSource.getConnection();
    // ...
} finally {
    // ...
    if (connection != null) try { connection.close(); } catch (SQLException logOrIgnore) {} // Always close resources in finally!
}

Problem

I am making a web-app with Tomcat 6 as the container and I'm trying to use connection pooling. The jdbc driver I am using is jtds-1.2.2. The pool works fine when the driver jar is placed under `${Catalina_Home}/lib`, but my hosting provider would not let me do so. I get a CNF-Exception when the driver is placed in the `WEB-INF/lib`. Could someone please provide a solution where I won't have to access the tomcat installation?

Original source