@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. SessionScopedマネージドBeanの値がサーブレットフィルタから変更されていない
- 3. 春のステートレスBeanとステートフルBeanのアナログ
- 4. セッションスコープ管理BeanとステートフルBean対httpsession
- 5. マネージドBeanとセッションBeanの違い
- 6. マネージドBean JSFプロジェクト
- 7. JSFのマネージドbean
- 8. ステートフルWebサービスvsステートフルBean +ステートレスWS
- 9. マネージドBeanにejbを注入すると、BeanInstantiationExceptionが発生します。
- 10. ステートフルEJBのライフサイクルの質問
- 11. マネージドBeanの置換
- 12. JSFマネージドBeanコードアシストEclipse
- 13. JSFマネージドBeanをCDIマネージドBeanに移行する
- 14. jersey.servlet.ServletContainerマネージドBeanからSpringマネージドBeanを取得する方法?
- 15. ejb TimerService.getAllTimers()ターゲットBean?
- 16. @Named @SessionScoped Beanを拡張する
- 17. マネージドBeanメソッドを呼び出すと、NPE
- 18. @ManagedPropertyスコープエイリアス間のマネージドBean
- 19. EJB仕様3.1ステートフル変換ステート
- 20. CDIマネージドBeanとステートフルセッションBeanを使用したLazyInitializationException
- 21. JSF2 ManagedPropertyとしてViewScopedからSessionScoped Beanにアクセスできない
- 22. CDI Beanの結合方法に関する疑問:SessionScopedとRequestScoped
- 23. JSF 1つのマネージドBeanから別のマネージドBeanへの値を引数として取得する
- 24. 同じEJBを2つの異なるマネージドBeanにインジェクトすることはできません
- 25. ポートレット内のJSFマネージドBeanからリモートEJBメソッドを呼び出すときにエラーが発生する
- 26. ステートレスBeanからステートフルなJava Beanを返すには?
- 27. EJBステートレスBeanと同等のSpring
- 28. JSFアプリケーションスコープのマネージドBeanの注入
- 29. JSF2.0マネージドBean間で値オブジェクトを渡す
- 30. マネージドBeanのリソースバンドルプロパティを読み取る
非常に詳細な回答ありがとうございます。私はステートフルな豆の使用が非常に非常に具体的なものに縮小されたと思った – arg20