EJB:类级别注释的重点是什么?

时间:2012-10-02 13:13:45

标签: annotations ejb

我正在读这本书, Pro JPA2:掌握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");
        //......
    }
}

如果不会在那里自动注入cart变量的值并且你必须初始化var,那么放置@EJB是什么意思。自己呢?代码不会像注释一样工作吗?注释实际上做了什么?

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:-1)

这看起来像是类级别的注释而不是方法级别,我不知道为什么会想要将servlet注释为EJB,但正确使用@EJB注释会为该类提供许多不同的东西,免费,如交易等......