jakarta ee - 希望在两个 servlet 中使用相同的 EJB,但它们似乎使用不同的 EJB,即使 EJB



我有一个有状态的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;
    ...
}

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

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

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

最新更新