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: [email protected]
For additional commands, e-mail: [email protected]