1

我有一个有状态的 EJB 作为购物车。我有两个 servlet,其中一个用于将产品添加到购物车。另一个用于检索购物车信息,即。购物车中的产品和产品数量。

购物车在请求之间保持其状态,就像它应该为 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

有状态意味着同一个客户端(在本例中为 servlet)将通过多个方法调用继续与同一个实例通信。

另一个客户端(Servlet)将获得它自己的实例。您必须将 bean 存储在 http 会话中才能实现您想要的。

使用有状态会话 Bean 跟踪用户的会话

于 2013-01-30T12:49:24.933 回答