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