JAX-RSは、Enterprise JavaBeansの技術と連携(エンタープライズBean) とコンテキストと依存性注入のJava EE(CDI)のために。
エンタープライズBeanでJAX-RSを使用するには、 Beanのクラスに@Pathを付けて、リソースクラス に変換する必要があります。 @Pathアノテーションは、ステートレスの セッションBeanとシングルトンPOJO Beanで使用できます。
JAX-RSとCDIのコンポーネントモデルは少し異なります。デフォルトでは、 JAX-RSルートリソースクラスは要求スコープで管理され、スコープの指定には アノテーションは必要ありません。 CDI管理Bean に@RequestScopedまたは@ApplicationScopedアノテーションを付けて、 をJAX-RSリソースクラスに変換できます。
別のBeanクラスを注入するBeanを使用するWebアプリケーションでは、Beanは、ユーザーがアプリケーションとやりとりしている間に状態を保持できる必要があります。この状態を定義する方法は、Beanにスコープ
を与えることです@RequestScoped:1つのHTTP要求にWebアプリケーションを持つのユーザの対話を。
@SessionScoped:ユーザーが複数のHTTP 要求を介してWebアプリケーションと対話すること。
は@ApplicationScoped:共有状態をすべてのユーザーの相互作用の間でのWebアプリケーションで。
@Dependent:何も指定されていない場合のデフォルトスコープ。オブジェクト が正確に1つのクライアント(Bean)にサービスを提供し、そのクライアント(Bean)と同じライフサイクル を持つことを意味します。
は@ConversationScoped:サーブレットとのユーザのインタラクションを、のJavaServerが アプリケーションに直面含みます。会話スコープは、 の開発者制御境界内に存在し、長時間実行される会話のために複数の 要求にまたがって拡張されます。すべての長時間実行されている の会話は特定のHTTPサーブレットセッションに限定され、 はセッション境界を超えないことがあります。
あなたはコンテキストと別の内部の依存性注入いずれかを実行することができます同じように、あなたの質問に答える、各Beanは独立して自身の状態を管理します。また、実行するロールに応じて、スコープを定義する必要があります。提供してどのようなEJB
https://docs.oracle.com/javaee/7/tutorial/jaxrs-advanced004.htm https://docs.oracle.com/javaee/7/tutorial/cdi-basic008.htm#GJBBK
ご質問ありがとうございますが、私はまだ理解していません。 EJBのプールモデルは、JAX-RSリソースのリクエストごとのモデルとどのように互換性がありますか? – GionJh