Question

J'ai une application Play Framework 2.2.2 que je déploie en tant que .war et fonctionnant sous Tomcat 7.Mon application fonctionne pendant des jours sans problème sur ma machine de développement locale (via le serveur intégré de Play, pas Tomcat), mais une fois que je la déploie sous Tomcat, après plusieurs heures, le serveur Tomcat se bloquera, supprimant toutes les autres applications exécutées dessus. aussi.

Je pense que le problème est que BoneCP Le pool de connexions dans Play et le pool de connexions intégré de Tomcat sont en conflit.Il n'y a pas beaucoup d'informations utiles dans les journaux Tomcat, donc je suis en train de deviner ici.

J'aimerais désactiver le regroupement de connexions BoneCP dans mon application Play, mais je ne trouve aucune information sur la façon de procéder.

Tout conseil apprécié!

Était-ce utile?

La solution

Il existe plusieurs solutions possibles pour cela, qui peuvent être plus ou moins préférables pour votre environnement de déploiement.

  1. Play vous offre une connexion à une base de données « prête à l'emploi », que vous n'avez pas besoin d'utiliser.Supprimez le composant Play JDBC de votre fichier de build (supprimez jdbc de ton libraryDependencies) et configurez vous-même vos connexions JDBC manuellement.Par exemple, vous pouvez créer un singleton TomcatConnectionPool qui a une fonction getConnection() qui vous donne la connexion JDBC dont vous avez besoin pour vos actions Play.

  2. Écrivez votre propre plugin étendant spécifiquement Pièces DBPlugin interface donc c'est un plugin de base de données.Mettre en œuvre comme BoneCPPlugin de Play mais faites-lui utiliser le pool de connexions Tomcat au lieu de BoneCP.

  3. Utilisez le plugin Play Database personnalisé déjà créé par quelqu'un d'autre, comme celui-ci qui utilise c3p0.J'ai des preuves anecdotiques selon lesquelles c3p0 fonctionne bien avec Tomcat, mais votre kilométrage peut varier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top