私はショッピング カート スタイルのプロセスで JSF を使用して Java EE Web アプリを開発しているので、多数のページでユーザー入力を収集し、それを使って何かをしたいと考えています。
これには EJB 3 ステートフル セッション Bean を使用することを考えていましたが、調査の結果、SFSB はクライアントの http セッションに関連付けられていないため、httpSession を介して手動で追跡する必要があると思われます。ここ 。. .
1) セッション Bean と呼ばれるのはなぜですか。私が見る限り、セッションとは何の関係もありません。セッションに pojo を格納することで同じことを達成できます。
2) 注入できるということのポイントは何ですか?もし注入するのがこの SFSB の新しいインスタンスだけなら、pojo を使用したほうがよいでしょうか?
JSF はプレゼンテーション テクノロジであるため、ロジックに使用するべきではありませんが、ユーザー入力を収集するための最適なオプションのように思われます。
JSF セッション スコープ Bean をすべてのリクエスト Bean の管理プロパティとして設定できます。つまり、それらに注入されますが、SFSB とは異なり、JSF マネージド セッション スコープ Bean は http セッションに関連付けられているため、同じインスタンスが常に次のように注入されます。 http セッションが無効化されていない限り。
だから私は複数の層を持っています
第 1 層) プレゼンテーションを処理する JSF マネージド リクエスト スコープ Bean。ページごとに 1 つ。
第 2 層) 要求 Bean によって設定された値を持つ JSF 管理セッション スコープ Bean。
第 3 層) JSF セッション スコープ Bean 内のデータに対してロジックを実行するステートレス セッション EJB。
なぜこれがそんなに悪いのですか?
代替オプションは SFSB を使用することですが、それを最初のリクエスト Bean に挿入し、それを http セッションに格納して、後続の各リクエスト Bean で取得する必要があります。
または、すべてをセッションに保存することもできますが、リテラル キーとキャストを使用する必要があるため、これは理想的ではありません。など .. エラーが発生しやすいなど。. . そして乱雑!
私は、このテクノロジーに取り組んでいるというよりは、このテクノロジーと戦っているように感じます。
ありがとう