Play 2を使って書かれたアプリケーションがあるとします。アプリケーションがスタートアップ時にいくつかのことを把握する必要があると想像してください(設定ファイルを読んで、JNDIからいくつかのリソースを取得してください)。手近に再生する私たちはスタートにフックするために使用すると、イベントを停止することができますGlobalSettingsオブジェクトを与える:Playの初期化エラーを処理する最善の方法は何ですか?フレームワーク2.0?
import play.api._
object Global extends GlobalSettings {
var someResource: Resource = _
override def onStart(app: Application) {
// might throw an exception if the path doesn't exist
resource = JNDI.grabThing("/some/path").asInstanceOf[Resource]
}
}
問題がある - 初期化が失敗した場合、我々は何ができるのでしょうか?これは、Playがアプリケーションの最初の要求を受け取ったときにのみ実行されるようです。例外がスローされると、その要求は失敗しますが、アプリケーションは実行を継続します。
理想的には、このブロックが正常に完了しなかった場合、アプリケーションの起動を停止することが理想です。残念ながら、Play.stop()
に電話をかけても、実際には再生を停止していないようです。私はServer
特性がdef stop()
を定義していることが分かりますが、私のアプリケーションの中からServer
インスタンスを保持する方法を見つけることができません。
おそらく私は間違った方法を見ていると私はと私のアプリケーション内から再生を停止することができると仮定していないと思うので、他のアプローチの提案を歓迎します。
これらのエラーを処理する最適な方法は何ですか?