In Tomcat 8, WebappClassLoader disallows overrides of org.apache.tomcat.* 
classes which includes org.apache.tomcat.jdbc.*.  As a result, it is impossible 
to use the Tomcat JDBC pool with a JDBC driver in WEB-INF/lib. On Tomcat 7 this 
is possible by packaging both tomcat-jdbc.jar and the driver in WEB-INF/lib.

Would it be possible to add an exception for “org.apache.tomcat.jdbc” to the 
regex below to restore this capability?

    protected final Matcher packageTriggersPermit =
            Pattern.compile("^javax\\.servlet\\.jsp\\.jstl\\.").matcher("”);

I know the intent of the org.apache.x patterns in the corresponding 
packageTriggersDeny regex is to disallow overriding of container implementation 
classes. But really, the Tomcat JDBC Connection Pool is a reusable library that 
happens to share a package namespace with container classes. It is, after all, 
offered as a standalone module.

It is fair to debate whether it is a good idea to place JDBC drivers in 
WEB-INF/lib in the first place, but it's often quite convenient. Further, with 
the current behavior, applications using the Tomcat JDBC pool behave 
differently based on whether the container they are deployed on provides these 
non-servlet-spec classes, which seems a bit ugly, given that the module is 
intended for reuse.

John
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to