我有一个 Play Framework 2.2.2 应用程序,我将其部署为 .war 文件并在 Tomcat 7 下运行。我的应用程序在我的本地开发计算机上运行了几天没有问题(通过 Play 的内置服务器,而不是 Tomcat),但是一旦我将其部署在 Tomcat 下,几个小时后 Tomcat 服务器将锁定,从而关闭其上运行的所有其他应用程序以及。

我认为问题在于 BoneCP Play中的连接池和Tomcat内置的连接池有冲突。Tomcat 日志中没有太多或任何有用的信息,所以我在这里有点猜测。

我想在 Play 应用程序中禁用 BoneCP 连接池,但找不到有关如何执行此操作的任何信息。

任何建议表示赞赏!

有帮助吗?

解决方案

有几种可能的解决方案,这些解决方案可能或多或少更适合您的部署环境。

  1. Play 为您提供了“开箱即用”的数据库连接,您不需要使用它。从构建文件中删除 Play JDBC 组件(删除 jdbc 从你的 libraryDependencies)并自行手动设置 JDBC 连接。例如,您可以创建一个单例 TomcatConnectionPool 有一个功能 getConnection() 这为您提供了在 Play 操作中使用所需的 JDBC 连接。

  2. 编写自己的插件 特别延伸 玩的 DBPlugin 界面 所以它是一个数据库插件。实施它 就像 Play 的 BoneCPPlugin 但让它使用 Tomcat 连接池而不是 BoneCP。

  3. 使用别人已经制作的自定义播放数据库插件, 就像这个使用 c3p0 的. 。我有一些轶事证据表明 c3p0 与 Tomcat 配合良好,但您的情况可能有所不同。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top