Jakarta ee 想要在两个servlet中使用相同的EJB,但它们似乎使用不同的EJB,即使EJB标记为@Stateful?

Jakarta ee 想要在两个servlet中使用相同的EJB,但它们似乎使用不同的EJB,即使EJB标记为@Stateful?,jakarta-ee,servlets,ejb,ejb-3.1,Jakarta Ee,Servlets,Ejb,Ejb 3.1,我有一个状态EJB充当购物车。我有两个servlet,其中一个用于向购物车添加产品。另一个用于检索购物车信息,即购物车中的产品和产品数量 购物车在请求之间保持其状态,就像AddToCartServlet的状态一样。然而,当使用ShoppingCartInfoServlet时,购物车中的产品列表为0,即使购物车中有多个产品。因此,当我在ShoppingCartInfoServlet中时,似乎没有得到相同的EJB。当然,它应该是与我注释为@Stateful的EJB相同的EJB @Stateful p

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

购物车在请求之间保持其状态,就像AddToCartServlet的状态一样。然而,当使用ShoppingCartInfoServlet时,购物车中的产品列表为0,即使购物车中有多个产品。因此,当我在ShoppingCartInfoServlet中时,似乎没有得到相同的EJB。当然,它应该是与我注释为@Stateful的EJB相同的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
公共类购物车{
列出产品清单;
...
}
公共类AddToCartServlet扩展了HttpServlet{
@EJB
购物车购物车;
...
}
公共类ShoppingCartInfoServlet扩展了HttpServlet{
@EJB
购物车购物车;
...
}

有状态意味着同一客户机(本例中的servlet)将通过多个方法调用与同一实例保持通信

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