Я запускаю 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, но будьте осторожны, авторы проглотили крючок, леску и грузило облачного евангелия :-)
Оригинальный ответ:
Уточните, вы о чем:
Что может быть полезно, так это то, что в упомянутых вами конфигурационных файлах отличается от того, что поставил в них поставщик ОС (Debian).
Общий совет, который я могу вам дать, - это ознакомиться с тем, как работают дескрипторы развертывания в Java (EE) Webapps и как используются расширения, зависящие от поставщика.