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!

Foi útil?

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.

  1. 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 singleton TomcatConnectionPool que tem uma função getConnection() que fornece a conexão JDBC necessária para uso em suas ações do Play.

  2. 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.

  3. 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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top