Назад | Перейти на главную страницу

Как узнать, какой пул подключений я использую с Tomcat?

Я запускаю Tomcat 7 с Apache 2.4 на Postgres 9.3 на Ubuntu 16.04 для обслуживания веб-приложения. Веб-приложение изначально было написано для Tomcat 5 или более ранней версии.

Я пытаюсь понять ошибку памяти, используя этот ответ ServerFault. Он наполнен концепциями и фразами, которых я не понимаю, поэтому я пытаюсь собрать все воедино.

Сейчас я застрял в том, чтобы выяснить, какой пул соединений с базой данных я использую. Это не очевидно ни из одного из файлов конфигурации, на которые я смотрел, включая /etc/tomcat7/server.xml и /etc/tomcat7/web.xml. Как узнать, какой пул соединений используется и где его конфигурация?

Другое обновление:

Поставщики дистрибутивов, как правило, разбивают пакеты, такие как 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), перечисленные ниже. Если вы используете контейнеры сервлетов Java, эти принципы все еще сохраняются, особенно в корпоративном мире.

Для более современного взгляда на Java в мире контейнеров я рекомендую Собственная облачная Java, но будьте осторожны, авторы проглотили крючок, леску и грузило облачного евангелия :-)

Оригинальный ответ:

Уточните, вы о чем:

  • Какое из подключений, установленных в конфигурациях Tomcat, используется приложением?
  • Откуда волшебным образом исходит определенное и используемое соединение с БД?
  • Какая реализация пула соединений используется?

Что может быть полезно, так это то, что в упомянутых вами конфигурационных файлах отличается от того, что поставил в них поставщик ОС (Debian).

Общий совет, который я могу вам дать, - это ознакомиться с тем, как работают дескрипторы развертывания в Java (EE) Webapps и как используются расширения, зависящие от поставщика.