Да, Tomcat по умолчанию использует пул Apache DBCP для источников данных, определенных как ресурсы контекста JNDI.
Из документации на
http://tomcat.apache.org/tomcat-7.0-doc/jndi-resources-howto.html#JDBC_Data_Sources
ПРИМЕЧАНИЕ. - Поддержка источника данных по умолчанию
в Tomcat основан на DBCP
пул соединений от Commons
проект. Однако возможно
использовать любой другой пул соединений, который
реализует javax.sql.DataSource, путем
написать свой собственный ресурс
завод, как описано ниже.
Копание источников Tomcat 6 показало, что они получают фабрику соединений таким образом (в случае, если вы не указываете свой собственный, используя атрибут фабрики контекста):
ObjectFactory factory = (ObjectFactory)Class.forName(System.getProperty("javax.sql.DataSource.Factory", "org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory")).newInstance();
И org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory, который реализует javax.naming.spi.ObjectFactory, заботится о создании экземпляров DataSource:
http://www.jarvana.com/jarvana/view/org/apache/tomcat/tomcat-dbcp/7.0.2/tomcat-dbcp-7.0.2-sources.jar!/org/apache/tomcat/dbcp/dbcp/BasicDataSourceFactory.java?format=ok
Я вижу, что они создают экземпляры org.apache.tomcat.dbcp.dbcp.BasicDataSource:
http://www.jarvana.com/jarvana/view/org/apache/tomcat/tomcat-dbcp/7.0.2/tomcat-dbcp-7.0.2-sources.jar!/org/apache/tomcat/dbcp/dbcp/BasicDataSource.java?format=ok
Как ни странно, этот класс не реализует сам ConnectionPoolDataSource, равно как и org.apache.tomcat.dbcp.dbcp.PoolingDataSource, который внутренне возвращается BasicDataSource.
http://www.jarvana.com/jarvana/view/org/apache/tomcat/tomcat-dbcp/7.0.2/tomcat-dbcp-7.0.2-sources.jar!/org/apache/tomcat/dbcp/dbcp/PoolingDataSource.java?format=ok
Поэтому я предполагаю, что когда вы настроили ваши DataSources как javax.sql.ConnectionPoolDataSource, вы также использовали некоторую настраиваемую фабрику (это всего лишь предположение, но я полагаю, что в противном случае у вас были бы исключения приведения классов в Tomcat, поскольку их пул не t действительно предоставляют экземпляры javax.sql.ConnectionPoolDataSource, только javax.sql.DataSource).
Таким образом, чтобы ответить на вопросы о преимуществах или недостатках конкретного случая, вы должны сравнить Apache DBCP с механизмом пула на вашей фабрике источников данных, какой бы вы ни использовали.