想象一下,我有一個使用Play 2編寫的應用程序。想象一下,應用程序需要在啓動時抓住一些東西(讀取配置文件,從JNDI獲取一些資源,這種事情)。播放輕而易舉地給我們的GlobalSettings對象,我們可以使用掛接到啓動和停止事件:處理Play中的初始化錯誤的最佳方法是什麼? Framework 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
實例。
也許我在看這個錯誤的方式,而我不是假設能夠在我的應用程序中停止播放(甚至只是我的應用程序),所以對其他方法的建議是可喜的。
處理這些錯誤的最佳方法是什麼?