Spielen Sie Framework 2.2.2 auf Tomcat 7 – Entfernen Sie BoneCP
-
21-12-2019 - |
Frage
Ich habe eine Play Framework 2.2.2-Anwendung, die ich als bereitstelle .war
Datei und läuft unter Tomcat 7.Meine Anwendung läuft tagelang ohne Probleme auf meinem lokalen Entwicklungscomputer (über den integrierten Server von Play, nicht über Tomcat), aber sobald ich sie unter Tomcat bereitstelle, stürzt der Tomcat-Server nach einigen Stunden ab und stürzt alle anderen darauf ausgeführten Anwendungen ab sowie.
Ich denke, das Problem ist, dass die BoneCP
Der Verbindungspool in Play und der integrierte Verbindungspool von Tomcat stehen in Konflikt.Da es in den Tomcat-Protokollen nicht viele oder gar keine nützlichen Informationen gibt, bleibe ich hier eher im Ungewissen.
Ich möchte das BoneCP-Verbindungspooling in meiner Play-Anwendung deaktivieren, finde aber keine Informationen dazu.
Jeder Rat ist willkommen!
Lösung
Hierfür gibt es mehrere mögliche Lösungen, die für Ihre Bereitstellungsumgebung mehr oder weniger vorteilhaft sein können.
Play bietet Ihnen eine „out-of-the-box“-Datenbankverbindung, die Sie nicht verwenden müssen.Löschen Sie die Play JDBC-Komponente aus Ihrer Build-Datei (entfernen Sie sie
jdbc
von deinerlibraryDependencies
) und richten Sie Ihre JDBC-Verbindungen manuell selbst ein.Sie können beispielsweise einen Singleton erstellenTomcatConnectionPool
das hat eine FunktiongetConnection()
Dadurch erhalten Sie die JDBC-Verbindung, die Sie für die Verwendung in Ihren Play-Aktionen benötigen.Schreiben Sie Ihr eigenes Plugin gezielt erweitern Theaterstücke
DBPlugin
Schnittstelle sodass es sich um ein Datenbank-Plugin handelt.Füge es ein wie das BoneCPPlugin von Play aber lassen Sie es den Tomcat-Verbindungspool anstelle von BoneCP verwenden.Verwenden Sie das bereits erstellte benutzerdefinierte Play-Datenbank-Plugin einer anderen Person. wie dieses, das c3p0 verwendet.Ich habe einige anekdotische Beweise dafür, dass c3p0 gut mit Tomcat funktioniert, aber Ihre Laufleistung variiert.