@ManagedBean
が@SessionScoped
の場合、なぜ@Stateful
EJBを使用しますか?以前はショッピングカートや会話型の状態を維持していましたが、管理されたBeanはユーザーセッション中に保持されるため、そこで状態を保存してから、bussinessロジック用にSLSBを呼び出してください。あれは正しいですか?そうであれば、トランザクションなどが必要なときなど、より具体的なアプリケーションのためにステートフルなejbが残されますか?sessionscopedマネージドBeanとステートフルejb
答えて
多くの場合、ステートレスセッションBeanは、多くのビジネス上の問題に使用できます。
ステートフルは、リモートサーバが状態を保持することを必ずしも意味しませんが、これは確かにオプションの1つです。リモートのSwingクライアントは、最初にステートフルセッションBeanに一連のデータを送信し、スタブを保持した後、このデータで動作するコマンドを送信することができます。これにより、クライアントは毎回同じ(大量の)データを送信する必要がなくなります。
リモート・ユースのケースでは、Webクライアント(ブラウザ)を使用すると、実際にはHTTPセッションの使用がミラーリングされます。主な相違点は、セッションはここではBeanごとですが、HTTPセッションではセッションは多くのBeanによって共有されるスコープです。 HTTPセッションはCookieに基づいており、ブラウザ全体のドメインに対してCookieがグローバルなので、HTTPセッションは同じクライアントから複数のセッションを直接サポートすることはできません(タブ単位またはウィンドウ単位など)。これは、ステートフルセッションBeanでは簡単です。
しかし...
リモートEJBと通信するリモートスイングクライアントはあまり一般的ではありません。
あなたの質問で説明したコンテキストでは、通常はローカルEJBを使用し、HTTPセッション(共有には注意してください)にほとんどの状態を保存し、最近はビュースコープまたは会話スコープで保存します。
最後に、このシナリオでステートフルセッションBeanを使用する場合はいつですか?
重要な使用例の1つはextended persistence context
で、JPA
です。通常、トランザクションスコープのエンティティマネージャでは、エンティティがEJBメソッド呼び出しのトランザクション境界を越えると、エンティティマネージャはデタッチされます。ユーザーのやりとりの間でエンティティを(楽観的に)ロックしたい場合、これは望ましくありません。あなたはロックを失います。
拡張永続コンテキストでは、ステートフルセッションBeanへの呼び出しから戻るときに、エンティティはアタッチされたままで、ロックは有効です。これは、プレビュー後に大丈夫なときに他の誰もエンティティを変更していないことを確認するプレビュー機能に非常に便利です。または実際にカート内で商品を他の誰かに売ることができないことを保証したいショッピングカートの場合。
- 1. @ sessionscoped Beanで@ Observe?
- 2. 春のステートレスBeanとステートフルBeanのアナログ
- 3. セッションスコープ管理BeanとステートフルBean対httpsession
- 4. SessionScopedマネージドBeanの値がサーブレットフィルタから変更されていない
- 5. マネージドBeanとセッションBeanの違い
- 6. ステートフルWebサービスvsステートフルBean +ステートレスWS
- 7. JSFのマネージドbean
- 8. ステートフルEJBのライフサイクルの質問
- 9. マネージドBeanにejbを注入すると、BeanInstantiationExceptionが発生します。
- 10. マネージドBeanの置換
- 11. JSFマネージドBeanコードアシストEclipse
- 12. JSFマネージドBeanをCDIマネージドBeanに移行する
- 13. マネージドBeanメソッドを呼び出すと、NPE
- 14. @Named @SessionScoped Beanを拡張する
- 15. EJB仕様3.1ステートフル変換ステート
- 16. CDIマネージドBeanとステートフルセッションBeanを使用したLazyInitializationException
- 17. CDI Beanの結合方法に関する疑問:SessionScopedとRequestScoped
- 18. JSF2 ManagedPropertyとしてViewScopedからSessionScoped Beanにアクセスできない
- 19. ステートレスBeanからステートフルなJava Beanを返すには?
- 20. 同じEJBを2つの異なるマネージドBeanにインジェクトすることはできません
- 21. EJBステートレスBeanと同等のSpring
- 22. JSF2マネージドBean参照問題:CDI注入?
- 23. ページ上のEclipseマネージドBeanのバインド
- 24. マネージドBeanでSQL文を実行
- 25. アプリケーションスコープのマネージドBeanをリフレッシュ/再ロードする
- 26. JSF 1.2マネージドBeanの@PersistenceContextの意味
- 27. マネージドBeanを使用したナビゲーション
- 28. JSF2.0マネージドBean間で値オブジェクトを渡す
- 29. JSFアプリケーションスコープのマネージドBeanの注入
- 30. JSFマネージドBeanの命名規則
非常に詳細な回答ありがとうございます。私はステートフルな豆の使用が非常に非常に具体的なものに縮小されたと思った – arg20