この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
Applicationのグローバル設定
前回はControllerとRoutingについてご紹介しました。今回はアプリケーション全体で適用されるグローバル設定についてご紹介します。 Globalオブジェクトを定義すると、アプリケーション全体の設定を処理することが可能です。 このオブジェクトは、_root_パッケージで定義されている必要があります。
import play.api._
object Global extends GlobalSettings {
}
GlobelオブジェクトはGlobalSettingsトレイトをmixinします。このあとGlobalSettingsのいくつかのメソッドについて解説していきます。
今回使用した動作環境は以下のとおりです。
- OS : MacOS X 10.7.2
- Playframework : 2.0β
- Java : 1.6.0_26
注意: この記事ではβ版を使用しています。 正式リリース前の状況のため思わぬ不具合が生じるかもしれませんので、ご了承ください。
アプリケーションの開始、終了イベントをハンドリングする
OnStartメソッドとOnStopをオーバーライドすれば、アプリケーションの開始時と終了時に処理が可能です。
import play.api._
object Global extends GlobalSettings {
override def onStart(app: Application) {
Logger.info("Application has started")
}
override def onStop(app: Application) {
Logger.info("Application shutdown...")
}
}
このobjectをアプリケーションのルートパッケージにおいて、アプリケーションを起動してみてください。 アプリケーション起動時(DEVモードでは初回アクセス時)にonStart、ctrl + dでアプリケーションの終了時にonStopが実行されます。
エラーページを提供する
アプリケーションで例外が発生した場合、onErrorメソッドが呼び出されます。 デフォルトでは、あらかじめフレームワークで用意されたエラーページが表示されます。 先ほど作成したGlobalオブジェクトにonErrorメソッドを追加します。
override def onError(request: RequestHeader, ex: Throwable) = {
Logger.error("this is Error!!!!")
InternalServerError(
views.html.errorPage(ex))
}
onErrorではerrorPageへ処理を渡しているので、app/viewsディレクトリにerrorPage.scala.htmlを作成し、下記の内容を記述します。
@(ex: Throwable)
@main("Error") {
Error!
}
Controllerでわざと例外を発生させて試してみてください。onErrorが実行され、errorPage.scala.htmlが表示されます。 また、Actionがみつからなかった場合に発生するonActionNotFoundや、routeがみつからなかった場合のonBadRequestもあるので、必要に応じてoverrideしてください。
まとめ
今回はアプリケーション全体の処理についてご紹介しました。 Globalオブジェクトを使用すれば、例外処理などはここで一元管理できそうですね。