ここで説明したように、ステートフル セッション Bean の同じインスタンスを取得するために、サーブレットからリダイレクトされた jsp でユーザー名を表示します。関連する HttpSession に保存する必要があります。それはうまくいっていますが、サーブレットで私はそうしました:
SessionCart cart = (SessionCart) request.getSession().getAttribute("cart");
if (cart==null){
cart = new SessionCart();}
属性「カート」は、初期化されたカートを保存した場所です。問題は、カートが以前に初期化されていない場合、行 cart=new SessionCart(); があることです。Context に関連しない Bean を初期化するため、@PercistenceContext によって取得されるエンティティーマネージャーは null になります。アノテーションを使ってみた
@EJB
private SessionCart cart;
しかし、これは私の制御なしで新しいセッションカートを作成します(したがって、ユーザーに関連するカートがまだある場合は、新しいカートを作成して破棄します...これはあまり良くありません)。私の質問は、アノテーション @EJB を使用せずに新しいステートフル セッション Bean を作成し、それをコンテキストに関連付けることはできますか? いつ作成するかを制御できます