Да, 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
Итак, я предполагаю, что когда вы настроили свои источники данных как javax.sql.ConnectionPoolDataSource, вы также использовали какую-то пользовательскую фабрику (это просто предположение, но я полагаю, что в противном случае у вас были бы исключения приведения классов в Tomcat, поскольку их объединение на самом деле не обеспечивает экземпляры javax.sql.ConnectionPoolDataSource, только javax.sql.DataSource).
Таким образом, чтобы ответить на вопросы о преимуществах или недостатках конкретного случая, вы должны сравнить Apache DBCP с механизмом пула в вашей фабрике DataSource, какой бы из них вы ни использовали.
person
mvmn
schedule
28.06.2011