Jogue Framework 2.2.2 no Tomcat 7 - Remova BoneCP
-
21-12-2019 - |
Pergunta
Tenho um aplicativo Play Framework 2.2.2 que estou implantando como .war
arquivo e rodando no Tomcat 7.Meu aplicativo é executado por dias sem problemas em minha máquina de desenvolvimento local (por meio do servidor integrado do Play, não do Tomcat), mas depois de implantá-lo no Tomcat, após várias horas o servidor Tomcat será bloqueado, desativando todos os outros aplicativos em execução nele também.
Acho que o problema é que BoneCP
O pool de conexões no Play e o pool de conexões integrado do Tomcat estão em conflito.Não há muita ou nenhuma informação útil nos logs do Tomcat, então fico meio que adivinhando aqui.
Gostaria de desativar o pool de conexões BoneCP em meu aplicativo Play, mas não consigo encontrar nenhuma informação sobre como fazer isso.
Qualquer conselho apreciado!
Solução
Existem várias soluções possíveis para isso, que podem ser mais ou menos preferíveis para o seu ambiente de implementação.
O Play oferece uma conexão de banco de dados "pronta para uso", que você não precisa usar.Elimine o componente Play JDBC do seu arquivo de construção (remova
jdbc
de vocêlibraryDependencies
) e configure suas conexões JDBC manualmente por conta própria.Por exemplo, você pode fazer um singletonTomcatConnectionPool
que tem uma funçãogetConnection()
que fornece a conexão JDBC necessária para uso em suas ações do Play.Escreva seu próprio plugin estendendo especificamente Tocam
DBPlugin
interface para que seja um plugin de banco de dados.Implementá-lo como o BoneCPPlugin do Play mas faça com que ele use o pool de conexões do Tomcat em vez do BoneCP.Use o plug-in do Play Database personalizado já feito por outra pessoa, como este que usa c3p0.Tenho algumas evidências anedóticas de que o c3p0 funciona bem com o Tomcat, mas sua milhagem pode variar.