Swagger не может загрузить определение API (еще один поток)

Начиная с версии 6.0.24, Tomcat поставляется с функцией обнаружения утечки памяти , что, в свою очередь, может привести к появлению подобных предупреждающих сообщений, когда в файле [app1] для веб-сервера есть JDBC 4.0-совместимый драйвер, auto- регистрирует сам во время запуска webapp, используя ServiceLoader API , но который сам не отключился deregister во время отключения Webapp. Это сообщение является чисто неофициальным, Tomcat уже принял меры по предотвращению утечки памяти.

Что вы можете сделать?

  1. Игнорировать эти предупреждения. Tomcat делает свою работу правильно. Фактическая ошибка находится в чужом коде (именно драйвер JDBC), а не в вашем. Будьте счастливы, что Tomcat выполнил свою работу должным образом и дождитесь, пока поставщик драйверов JDBC зафиксирует это, чтобы вы могли обновить драйвер. С другой стороны, вы не должны бросать JDBC-драйвер в webapp /WEB-INF/lib, но только на сервере /lib. Если вы все еще сохраняете его в файле /WEB-INF/lib в webapp, вам необходимо зарегистрировать его вручную и отменить его с помощью ServletContextListener.
  2. Перейти на Tomcat 6.0.23 или старше, чтобы вы не беспокоились об этих предупреждениях , Но он будет тихо хранить утечку памяти. Не знаю, хорошо ли это знать. Подобные утечки памяти являются одной из основных причин, стоящих перед проблемами OutOfMemoryError во время горячих рассылок Tomcat.
  3. Переместите JDBC-драйвер в папку /lib Tomcat и подключите пул данных к источнику данных для управления драйвером. Обратите внимание, что встроенный DBCP от Tomcat не отменяет регистрацию драйверов должным образом при закрытии. См. Также ошибку DBCP-322 , которая закрыта как WONTFIX. Вы хотели бы заменить DBCP другим пулом соединений, который лучше выполняет свою работу, чем DBCP. Например, HikariCP , BoneCP или, возможно, Tomcat JDBC Pool .

0
задан sergio 18 January 2019 в 07:46
поделиться