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?
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:To use Tomcat's connection pool, you must copy the JDBC Driver's jar into
$CATALINA_HOME/lib
(as documented) so that the driver class is visible through the Common class loader or DBCP won't be able to find it, hence theClassNotFoundException
. Tomcat's class loaders hierarchy is illustrated below:And libraries from
WEB-INF/lib
are not visible from the Common class loader (which is a good thing).If you can't copy your driver into
$CATALINA_HOME/lib
, you won't be able to use Tomcat's connection pool. In that case, you'll have to use a standalone connection pool (and to bundle it along your driver inWEB-INF/lib
). And I second BalusC here, I would use C3P0.