我如何知道 Tomcat 中使用了哪个连接池?

我如何知道 Tomcat 中使用了哪个连接池?

我在 Ubuntu 16.04 上的 Postgres 9.3 上运行 Tomcat 7 和 Apache 2.4 来提供 Web 应用程序。该 Web 应用程序最初是为 Tomcat 5 或更早版本编写的。

我正在尝试使用这个 ServerFault 答案。然而,它充满了我不理解的概念和短语,所以我试图将它们拼凑在一起。

我现在遇到的问题是弄清楚我正在使用哪个数据库连接池。从我查看过的任何配置文件(包括/etc/tomcat7/server.xml和)中都看不出这/etc/tomcat7/web.xml一点。我如何才能找到正在使用的连接池及其配置在哪里?

答案1

另一个更新

发行版供应商倾向于拆分诸如 tomcat 之类的软件包,以整合其产品线中各个软件包之间的共享依赖关系。tomcat 7 也是如此。

为了显示:

# apt install -y tomcat7
The following NEW packages will be installed:
[...]
  libcommons-collections3-java libcommons-dbcp-java libcommons-pool-java
[...]
  tomcat7-common
[...]

安装后,检查包装内容:

# dpkg -L tomcat7-common | grep dbcp
/usr/share/tomcat7/lib/commons-dbcp.jar
# ls -lhA /usr/share/tomcat7/lib/commons-dbcp.jar
lrwxrwxrwx 1 root root 27 Oct 10  2018 /usr/share/tomcat7/lib/commons-dbcp.jar -> ../../java/commons-dbcp.jar
# grep lib /etc/tomcat7/catalina.properties 
common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,${catalina.home}/common/classes,${catalina.home}/common/*.jar

catalina.properties控制启动服务器时如何设置 Tomcat 的类路径。

更新

引用文档

Apache Tomcat 中的默认数据库连接池实现依赖于 Apache Commons 项目中的库。使用以下库:

Commons DBCP 1.x
Commons Pool 1.x

这些库位于 的一个 JAR 中 $CATALINA_HOME/lib/tomcat-dbcp.jar。但是,只包括了连接池所需的类,并且已重命名这些包以避免干扰应用程序。

不过,我强烈建议您阅读下面列出的 Java (EE) Web 应用程序简介。如果您使用 Java servlet 容器,这些原则仍然适用,尤其是在企业界。

如果想在容器世界中更现代地理解 Java,我推荐云原生 Java但请注意,作者们已经完全相信了云福音 :-)

原始回应

请澄清一下,您说的是:

  • 应用程序使用了 Tomcat 配置中设置的哪些连接?
  • 定义和使用的数据库连接神奇地来自哪里?
  • 正在使用哪种连接池实现?

可能有帮助的是您提到的配置文件中的内容与操作系统供应商(Debian)在其中放置的内容不同。

我可以给你的一个大致建议是熟悉 Java(EE)Webapps 中的部署描述符的工作方式以及如何使用特定于供应商的扩展。

相关内容