[Java] A new CDI scope in Java EE 8 ?

原文はこちら。
https://blogs.oracle.com/theaquarium/entry/a_new_cdi_scope_in

MVC Expert Group (JSR 371) がリダイレクトをサポートするために、新たなCDIカスタムスコープ ( @RedirectScoped ) の導入のプロセスを進めているので、新しいCDIスコープがJava EE 8に導入される予定、ということをこの段階でお伝えしても大丈夫でしょう。
JSR 371: Model-View-Controller (MVC 1.0) Specification
https://jcp.org/en/jsr/detail?id=371
[jsr371-experts] [MVC_SPEC-40] @RedirectScoped
https://java.net/projects/mvc-spec/lists/jsr371-experts/archive/2015-08/message/49
この考えはシンプルなものです。MVCコントローラがクライアントを特定のURL、特定のコントローラメソッドにリダイレクトすることを決定できる、というものです。典型的な例として、匿名ユーザーがログインが必要なページに出くわしたときに、コントローラがユーザーをログインページにリダイレクトする、というものです。これを実現するために、コントローラはHTTP 302(moved temporarily / 一時的に移動した)のステータスコードを使ってクライアントに対し、に対し異なるURLや異なるコントローラへの新たなリクエストを作成するよう依頼します。その2個目のリクエストは新たな(そしてそれゆえに異なる)リクエストーレスポンスサイクルになります。
302 Found
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.3
そしてこれがこの新たな @RedirectScoped スコープの"raison-d'être"(存在理由)です。つまり、2個のリダイレクトのリクエストーレスポンスサイクルの間で状態を維持することを許容するためです。ご注意頂きたいのは、この新たなスコープはMVC APIのみを対象にしている、ということです。この新スコープは "Flash scope" と呼ばれることもあります。リダイレクトの仕組みと @RedirectScoped の動作の仕組みは以下のリンクから確認していただけます。
sources / test / redirectScope
https://java.net/projects/ozark/sources/sources/show/test/redirectScope?rev=9ed86e485c3adc92ac6a56c70eba9c7d943a6e0e
この新スコープのすばらしい点は、新たなCDIカスタムスコープに過ぎない、というところです。これはJava EEプラットフォームが自身の基盤を利用して進化している、という格好の例です。

最後に、JSR371は早期ドラフトレビューの期間中ですので、フィードバックをお忘れなく(訳注:原文に則していますが、実際には早期ドラフトレビュー期間は終了しているので、おそらくこれから始まる早期ドラフト2のことを意図しているのでしょう)。
MVC 1.0 (JSR 371) Early Draft Review period has started!
https://blogs.oracle.com/theaquarium/entry/jsr371_edr

0 件のコメント:

コメントを投稿