Как узнать, почему мой WAR так долго развертывается на Tomcat?

У меня есть веб-приложение, развертывание которого на Tomcat часто занимает слишком много времени.Я подозреваю, что где-то есть соединение с базой данных, которое ожидает истечения времени ожидания, но это всего лишь предположение, и я хочу точно выяснить, что вызывает задержку, чтобы я мог исправить проблему. Может ли кто-нибудь предложить способ, которым я могу это сделать? Должен ли я профилировать Tomcat, когда он загружает WAR, и искать там подсказки? Если да, то есть ли учебник где-нибудь, что хорошо для новичка?

Если это имеет значение, мое веб-приложение использует Spring и Hibernate. Мой коллега сказал мне, что, возможно, это вызывает замедление, потому что они настолько велики, что где-то загрузчик классов задыхается от огромного количества классов, которые ему нужно загрузить.

Также я вижу это, когда останавливаю Tomcat или запускаю WAR на уже работающем Tomcat:

Jun 1, 2012 6:03:33 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
SEVERE: The web application [/nacem-rest] registered the JDBC driver [oracle.jdbc.OracleDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
Jun 1, 2012 6:03:34 PM org.apache.catalina.startup.HostConfig deployWAR

Возможно, это часть проблемы? Повторное развертывание моего веб-приложения также почти всегда требует перезапуска Tomcat, и я всегда предполагал, что виновата вышеупомянутая проблема с драйвером JDBC, но, может быть, это также как-то связано с медленным временем запуска?

8
задан James Adams 18 August 2019 в 04:34
поделиться