我有一个Play Framework 2.2.2应用程序,我将其部署为.war
文件并在Tomcat 7下运行。我的应用程序在我的本地开发计算机上运行了几天没有问题(通过Play的内置服务器,而不是Tomcat),但是一旦我在Tomcat下部署它,几个小时后Tomcat服务器将锁定,同时关闭在其上运行的所有其他应用程序。
我认为问题在于Play中的BoneCP
连接池和Tomcat的内置连接池是冲突的。在Tomcat日志中没有太多或任何有用的信息,所以我在这里猜测。
我想在我的Play应用程序中禁用BoneCP连接池,但无法找到有关如何执行此操作的任何信息。
任何建议表示赞赏!
答案 0 :(得分:1)
有几种可能的解决方案,对于您的部署环境可能或多或少是首选。
Play为您提供了一个“开箱即用”的数据库连接,您无需使用该连接。从构建文件中删除Play JDBC组件(从jdbc
中删除libraryDependencies
)并自行手动设置JDBC连接。例如,您可以创建一个具有函数TomcatConnectionPool
的单getConnection()
,它为您提供在Play操作中使用所需的JDBC连接。
Write your own plugin专门扩展Play's DBPlugin
interface,以便它是一个数据库插件。实现它like Play's BoneCPPlugin但是使它使用Tomcat连接池而不是BoneCP。
使用其他人已经制作的自定义Play数据库插件like this one that uses c3p0。我有一些轶事证据表明c3p0可以很好地与Tomcat一起使用,但是你的里程数会有所不同。