1

ショッピング カートとして機能するステートフル EJB があります。2 つのサーブレットがあり、そのうちの 1 つはショッピング カートに商品を追加するために使用されます。もう 1 つは、ショッピング カートの情報を取得するために使用されます。カート内の商品と商品の数量。

ショッピング カートは、AddToCartServlet の場合と同様に、リクエスト間で状態を保持します。ただし、ShoppingCartInfoServlet を使用すると、ショッピング カートに複数の製品があるにもかかわらず、ショッピング カート内の製品のリストが 0 になります。そのため、ShoppingCartInfoServlet にいるときに同じ EJB を取得していないようです。@Stateful とアノテーションを付けたのと同じ EJB であるはずです。

@Stateful
public class ShoppingCart {
    List<Product> products;

    ...
}

public class AddToCartServlet extends HttpServlet {
    @EJB
    ShoppingCart shoppingCart;

    ...
}

public class ShoppingCartInfoServlet extends HttpServlet {
    @EJB
    ShoppingCart shoppingCart;

    ...
}
4

1 に答える 1

3

ステートフルとは、同じクライアント(この場合はサーブレット)が複数のメソッド呼び出しで同じインスタンスと通信し続けることを意味します。

別のクライアント(サーブレット)は、独自のインスタンスを取得します。必要なことを実現するには、Beanをhttpセッションに保存する必要があります。

ステートフルセッションBeanを使用してユーザーのセッションを追跡する

于 2013-01-30T12:49:24.933 に答える