Play Framework 2.2.2 на Tomcat 7 – удаление BoneCP
-
21-12-2019 - |
Вопрос
У меня есть приложение Play Framework 2.2.2, которое я развертываю как .war
файл и работает под Tomcat 7.Мое приложение работает несколько дней без проблем на моем локальном компьютере разработчика (через встроенный сервер Play, а не Tomcat), но как только я разверну его под Tomcat, через несколько часов сервер Tomcat заблокируется, отключив все остальные приложения, работающие на нем. также.
Я думаю, проблема в том, что BoneCP
Пул соединений в Play и встроенный пул соединений Tomcat конфликтуют.В журналах Tomcat не так уж и много полезной информации, так что мне остается только гадать.
Я хотел бы отключить пул соединений BoneCP в своем приложении Play, но не могу найти информацию о том, как это сделать.
Любой совет приветствуется!
Решение
Для этого существует несколько возможных решений, которые могут быть более или менее предпочтительными для вашей среды развертывания.
Play предоставляет вам готовое подключение к базе данных, которое вам не нужно использовать.Удалите компонент Play JDBC из файла сборки (удалите
jdbc
от твоегоlibraryDependencies
) и самостоятельно настройте соединения JDBC вручную.Например, вы можете сделать синглтонTomcatConnectionPool
у которого есть функцияgetConnection()
это дает вам соединение JDBC, необходимое для использования в действиях Play.Напишите свой собственный плагин специально расширяя Игры
DBPlugin
интерфейс так что это плагин базы данных.Реализуйте это как плагин BoneCPP от Play но заставьте его использовать пул соединений Tomcat вместо BoneCP.Используйте уже созданный кем-то собственный плагин базы данных Play, как этот, который использует c3p0.У меня есть некоторые неофициальные свидетельства того, что c3p0 хорошо работает с Tomcat, но ваш опыт может варьироваться.