Java EE6のManaged Beanって何なのかモヤモヤしています。
例えば、下記のようにJAX-RSアノテーション@Pathをつけた
Beanのことでしょうか?
java
1@Path("/book") 2public class BookResource{ 3 ~~ メソッドなどは省略 ~~ 4}
それとも下記のようにCDIのアノテーション
javax.enterprise.context.RequestScopedをつけた
Beanのことでしょうか?
java
1@Path("/book") 2@RequestScoped 3public class BookResource{ 4 ~~ メソッドなどは省略 ~~ 5}
おそらく今回モヤモヤしていることの答えはThe Java EE 6 Tutorial か Java EE 6 Technologies に
記載されてると思い込んでますが見つけることができていません。
質問に至る背景
現在、Java EE6でRest Webサービスを作成しています。
下記2つのチュートリアルを参考にしました。
上記チュートリアルよりJavaEE6ではJAX-RSとCDIは
組み合わせてつかえると理解しました。
この結果、下記のようなコードになりました。
(@DefaultProcessアノテーションは自作したものです。)
java
1@Path("/book") 2@RequestScoped 3@DefaultProcess 4public class BookResource{ 5 @Inject BookResourceService ts; 6 ~~ メソッドなどは省略 ~~ 7}
上記のコードはBookResourceクラスにたいして下記手順でアノテーション付与し作成しました。
(BookResourceクラスは質問のためのサンプルクラス)
BookResourceクラス作成手順
- JAX-RSのアノテーション@PathをつけてBookResourceクラスをJAX-RSのビーンにする。
- CDIアノテーション@RequestScopedをつけてCDIビーンにする。これにより、@InjectでコンテナからEJBをインジェクト可能。
- 上記のチュートリアル(Using Interceptors in CDI Applications)を参考にInterceptors関連の設定(bean.xml)、Interceptor関連のクラスとアノテーションを作成。ここで作成したアノテーションは@DefaultProcess。
- 3で作成したアノテーション@DefaultProcessをBookResourceクラスに付与。
BookResourceクラス動作確認結果
Embedded GlassFish All In One 3.1.1 で動作すること確認できました.
BookResourceクラス動作確認後もモヤモヤしていること
チュートリアル(Using Interceptors in CDI Applications)に記載のIntercepterが
なぜ動作するのかモヤモヤしています。
私の解釈では @RequestScopedアノテーションを付与してBookResourceクラスが
Managed Beanというものになったため、Intercepterの仕組みが動作するように
なったのだと思っています。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。