3

我正在阅读这本书Pro JPA2: Mastering the Java Persistance API,但我没有像这个例子中那样得到类级注释的用处:

@EJB(name="cart", beanInterface=ShoppingCart.class)
public class ShoppingCartServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        HttpSession session = request.getSession(true);
        ShoppingCart cart = (ShoppingCart) session.getAttribute("cart");
        //......
    }
}

如果购物车变量的值不会自动注入其中并且您必须初始化 var,那么放置 @EJB 有什么意义。你自己?如果没有注释,代码是否也能正常工作?注释实际上做了什么?

我得到了其他类型注释的用处,比如当你把它放在方法或变量上时,它会自动注入东西。就在这里,在班级层面,它看起来毫无用处。

4

2 回答 2

4

类级别@EJB(或@Resource)定义您的 ShoppingCartServlet 依赖于某些 EJB,在您的情况下为“购物车”。如果您想从非托管上下文(如 POJO)访问 EJB,则需要这样做。在这种情况下,您必须进行 JNDI 查找以获取对 EJB 的引用,您可以使用 ejb-ref (ejb-local-ref) 描述符或类级别的 @EJB 注释来定义该引用。

于 2012-10-02T13:35:20.083 回答
-1

这看起来像是类级别的注释而不是方法级别,我不知道为什么要将 servlet 注释为 EJB,但是如果使用得当,@EJB 注释将为该类免费提供许多不同的东西,例如事务ETC...

于 2012-10-02T13:22:54.460 回答