Tôi có một tập tin cấu hình servers.conf
trong thư mục conf/
được đọc bởi ServerController của tôi bất cứ khi nào tuyến đường /servers
bị trúng. Điều này không thực hiện được vì nó yêu cầu đọc lại tệp cấu hình trên mỗi lần truy cập liên tiếp khi tệp sẽ không thay đổi. Hơn nữa nếu có vấn đề với tập tin cấu hình, tôi có thể nói cho người dùng càng sớm càng tốt hơn là ném một ngoại lệ lên một lần truy cập trang.Làm cách nào để thực hiện tác vụ khởi động máy chủ trong Khung công tác Scala Play?
Hiện nay tôi có điều này trong ServerController.scala
tôi:
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))
}
}
Mục tiêu của tôi là phải có máy chủ đọc các tập tin cấu hình lúc khởi động và thông qua danh sách các máy chủ để các ServerController khi tuyến đường được đánh nếu không có vấn đề đọc trong tập tin cấu hình. Nếu có vấn đề, tôi muốn một ngoại lệ được ném ngay lập tức.
Tôi dường như không thể tìm thấy điểm nhập cho ứng dụng của mình, vì vậy tôi không biết cách thực hiện các tác vụ khi khởi động.
Có ai biết cách thực hiện việc này không? Tôi đang sử dụng Play 2.5.x.
Bạn đang sử dụng phiên bản Play nào? – Anton
@Anton Xin lỗi. Đã chỉnh sửa câu hỏi. – erip
Bạn đã cân nhắc đặt toàn bộ khối mã bên ngoài hàm chỉ mục chưa? (Nó thực thi khi Bộ điều khiển được khởi chạy chỉ một lần, tức là mọi yêu cầu HTTP được thực hiện cho bộ điều khiển đó) – dlite922