【问题标题】:Catch a configuration error in Play! Framework 2.0.4在 Play 中发现配置错误!框架 2.0.4
【发布时间】:2013-01-29 09:31:12
【问题描述】:

我的游戏! 2.0.4 web应用目前连接多个RDS MySQL数据库,配置文件如下:

    # Africa
    db.afr.url="jdbc:mysql://<africa-server>:3306/users"
    db.afr.driver=com.mysql.jdbc.Driver
    db.afr.user=user1
    db.afr.password=****
    db.afr.logStatements=true

    # Europe
    db.eur.url="jdbc:mysql://<europe-server>:3306/users"
    db.eur.driver=com.mysql.jdbc.Driver
    db.eur.user=user1
    db.eur.password=****
    db.eur.logStatements=true

当所有数据库都在运行时,这非常有效。但是,如果其中一个数据库关闭(无论出于何种原因),整个应用程序都会失败,并引发配置错误(无法连接到数据库 [afr])。

如何在启动时捕获配置错误以捕获并忽略/记录这些消息,而不是完全杀死服务器?我已经研究过使用 Global.java 的 onError() 覆盖,但我没有运气。

谢谢, 大卫

【问题讨论】:

    标签: java database configuration playframework-2.0 global


    【解决方案1】:

    这就是我最终要做的。不是一个很好的解决方案,但可能是一个好的解决方法。

    将 play.api.db.BoneCPPlugin 的内容复制到您自己的文件 SafeDBPlugin.scala 中,类名为 SafeDBPlugin。它需要在包 play.api.db 中(尽管您可以像往常一样将文件放在代码库中的任何位置)。重要的部分是更改方法 onStartup() 中报告配置错误的行并将其更改为 logger.warn()。

    通过将以下行添加到您的 application.conf 来禁用内置 dbplugin (BoneCPPlugin):

    dbplugin=disabled
    

    通过将以下行添加到 play.plugins 来添加您的新插件:

    600:play.api.db.SafeDBPlugin
    

    【讨论】:

      猜你喜欢
      • 2013-10-21
      • 2015-01-26
      • 1970-01-01
      • 1970-01-01
      • 2014-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-18
      相关资源
      最近更新 更多