2

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

谢谢,大卫

4

1 回答 1

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
于 2013-10-29T21:24:14.187 回答