リクエストスコープのCDIBeanをステートレスセッションBeanに注入することは可能ですか?
私は関連する質問をし、@Stateless質問への特定のCDI@RequestScopedはそれ自身の投稿に値すると思いました。
EJBメソッド/@RequestScopedと@Statelessの間で状態を渡す
また、JMS @MessageDriven Beanについても同様の質問をしました。基本的に、@Statelessについても同じことを知りたいと思います。
リクエストスコープのCDIBeanをステートレスセッションBeanに注入することは可能ですか?
私は関連する質問をし、@Stateless質問への特定のCDI@RequestScopedはそれ自身の投稿に値すると思いました。
EJBメソッド/@RequestScopedと@Statelessの間で状態を渡す
また、JMS @MessageDriven Beanについても同様の質問をしました。基本的に、@Statelessについても同じことを知りたいと思います。
言及したことを絶対に実行@RequestScoped
し、@Stateless
セッションBeanとBeanでBeanを使用でき@MessageDriven
ます。これはCDI仕様とTCKのコア部分であり、ポータブルであることが保証されています。
@Stateless
Beanを使用するBeanのテストはありますが、 BeanがBeanを参照できること@RequestScoped
を保証するテストはないことに注意してください。これは単なる見落としであり、Java EE7TCKではすでに修正されています。したがって、MDBの場合に機能しない場合は、それがあなたのせいではない可能性があることに注意してください:)@MessageDriven
@RequestScoped
回避策は、MDBを、、などの任意の種類のSessionBeanに委任するだけ@Stateless
で@Stateful
、@Singleton
すべてに@RequestScoped
テストがあります。
@Stateless
、@Singleton
およびを@MessageDriven
介してスコープ参照を挿入することはできますが、または他のスコープ@Inject
にすることはできません。 @RequestScoped
モデルだけが@Stateful
スコープをサポートするのに十分な柔軟性を備えています。@Stateful
つまり、 Beanクラス自体@RequestScoped
に@SessionScoped
、などの注釈を付けることができます。
簡単に言えば@Stateless
、@Singleton
すでに「スコープ」を修正しています。 @Singleton
それが存在する場合、本質的@ApplicationScoped
に、そして@Stateless
おそらく、のようないくつかの構成されたスコープになるでしょう@InvocationScoped
。Beanのライフサイクルは、@MessageDriven
それを駆動するコネクタに完全に依存しているため、ユーザー定義のスコープを持つことも許可されていません。