Web アプリケーションでステートフル EJB とステートレス EJB を使用することについて、多くの議論があることは知っています。
ショッピング カートは最も一般的なユース ケースです。Oracle の Java EE の例では、公式ドキュメントでもショッピング カートが頻繁に使用されています。
ここで、stackoverflow で、JavaEE のショッピング カートのジレンマのような多くの興味深い回答を見つけました。
わかりました... SFSB は、企業の複雑なシナリオに適しています。たとえば、それらを他のアプリケーションと共有し、JSF/Web クライアントだけでなく利用できるようにする場合などです。
しかし... おじいちゃんの電子商取引 Web サイトを開発しているだけの場合は、HttpSession / SessionScoped cdi-managed Bean に固執し、SLSB でビジネス メソッドを記述します。SLSB の方が効率的であるなどの理由で...
ただし、私はまだ学習と発見の段階にあるので、単純なショッピング カートを作成するために、自分で SFSB を試してみたいと思います。
@Stateful ショッピング カート ejb インターフェースの JNDI 取得インスタンスを HttpSession に保存することを提案する興味深いチュートリアルを見ました。これは、Web クライアントが最初にそれを必要としたときに、Web セッション中に通常どおり使用することです。私の JSF プレゼンテーション レイヤーでは、@SessionScoped @Named Bean (これをShopControllerと呼びましょう) があり、その初期化でステートフル ejb の 1 つのインスタンスをインスタンス変数に格納するとします。
@SessionScoped CDI アノテーションを付けることで、@Stateful Bean を http セッションに直接バインドすることは可能でしょうか。
上記のように機能しますか?CDI は Web セッションごとに 1 つの SFSB を作成しますか?