У меня есть файл конфигурации servers.conf
в моем каталоге conf/
, который считывается моим ServerController всякий раз, когда удаляется маршрут /servers
. Это не работает, потому что для повторного чтения файла конфигурации требуется повторный просмотр файла с последующим ударом, когда файл не изменится. Кроме того, если есть проблемы с конфигурационным файлом, я могу сказать пользователю ASAP, а не бросать исключение при попадании страницы.
В настоящее время у меня есть это в моем ServerController.scala
:
case class Server(ip: String, port: String)
/**
* This controller creates an `Action` to handle HTTP requests to the
* application 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.