【发布时间】:2016-07-27 00:32:58
【问题描述】:
我的conf/ 目录中有一个配置文件servers.conf,只要路由/servers 被命中,我的ServerController 就会读取该配置文件。这不是高性能的,因为当文件不会更改时,它需要在每次连续命中时重新读取配置文件。此外,如果配置文件有问题,我可以尽快告诉用户,而不是在页面点击时抛出异常。
目前我的ServerController.scala 中有这个:
case class Server(ip: String, port: String)
/**
* This controller creates an `Action` to handle HTTP requests to the
* application's server page.
*/
@Singleton
class ServerController @Inject() extends Controller {
/**
* Create an Action to render an HTML page with a the list of servers.
* The configuration in the `routes` file means that this method
* will be called when the application receives a `GET` request with
* a path of `/servers`.
*/
def index = Action {
val serverList = ConfigFactory.load().getConfigList("servers")
val servers: List[Server] = serverList match {
case null => Nil
case _ => serverList map { s =>
Server(s.getString("ip"), s.getString("port"))
} filter { s =>
s.ip != null && s.port != null
}.toList
}
Ok(views.html.servers(servers))
}
}
我的目标是让服务器在启动时读取配置文件,如果在配置文件中读取没有问题,则在路由命中时将服务器列表传递给 ServerController。如果有问题,我希望立即抛出异常。
不过,我似乎找不到应用程序的入口点,所以我不知道如何在启动时执行操作。
有人知道怎么做吗?我正在使用 Play 2.5.x。
【问题讨论】:
-
您使用的是哪个版本的 Play?
-
@Anton 对不起。编辑了问题。
-
您是否考虑过将整个代码块放在索引函数之外? (它只在控制器启动一次时执行,即对该控制器发出的任何 HTTP 请求)
标签: scala playframework startup playframework-2.5