Вопрос

У меня есть приложение Play Framework 2.2.2, которое я развертываю как .war файл и работает под Tomcat 7.Мое приложение работает несколько дней без проблем на моем локальном компьютере разработчика (через встроенный сервер Play, а не Tomcat), но как только я разверну его под Tomcat, через несколько часов сервер Tomcat заблокируется, отключив все остальные приложения, работающие на нем. также.

Я думаю, проблема в том, что BoneCP Пул соединений в Play и встроенный пул соединений Tomcat конфликтуют.В журналах Tomcat не так уж и много полезной информации, так что мне остается только гадать.

Я хотел бы отключить пул соединений BoneCP в своем приложении Play, но не могу найти информацию о том, как это сделать.

Любой совет приветствуется!

Это было полезно?

Решение

Для этого существует несколько возможных решений, которые могут быть более или менее предпочтительными для вашей среды развертывания.

  1. Play предоставляет вам готовое подключение к базе данных, которое вам не нужно использовать.Удалите компонент Play JDBC из файла сборки (удалите jdbc от твоего libraryDependencies) и самостоятельно настройте соединения JDBC вручную.Например, вы можете сделать синглтон TomcatConnectionPool у которого есть функция getConnection() это дает вам соединение JDBC, необходимое для использования в действиях Play.

  2. Напишите свой собственный плагин специально расширяя Игры DBPlugin интерфейс так что это плагин базы данных.Реализуйте это как плагин BoneCPP от Play но заставьте его использовать пул соединений Tomcat вместо BoneCP.

  3. Используйте уже созданный кем-то собственный плагин базы данных Play, как этот, который использует c3p0.У меня есть некоторые неофициальные свидетельства того, что c3p0 хорошо работает с Tomcat, но ваш опыт может варьироваться.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top