在Play中捕获配置错误!框架2.0.4

时间:2013-01-29 09:31:12

标签: java database configuration playframework-2.0 global

我的游戏! 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()覆盖,但我没有运气。

谢谢, 大卫

1 个答案:

答案 0 :(得分:0)

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

将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