在maven项目中注入有状态EJB bean

时间:2014-06-21 16:56:31

标签: java maven java-ee

我不明白一件事,我希望有人能解释我。我有一个用glassfish开发的maven企业项目。

我使用插入代码netbeans函数(右键单击)在servlet中调用bean,特别是注释

@EJB

我不明白为什么当我通过netbeans中的Insert Code函数调用有状态会话bean时,通过JNDI调用bean。这就是我的意思

private BookingBeanInterface lookupBookingBeanLocal() {
        try {
            Context c = new InitialContext();
            return (BookingBeanInterface) c.lookup("java:global/it.volaconnoi_volaconnoi-webapp-ear_ear_1.0-SNAPSHOT/it.volaconnoi_volaconnoi-webapp-ejb_ejb_1.0-SNAPSHOT/BookingBean!it.volaconnoi.logic.BookingBeanInterface");
        } catch (NamingException ne) {
            Logger.getLogger(getClass().getName()).log(Level.SEVERE, "exception caught", ne);
            throw new RuntimeException(ne);
        }
    }`

上面的功能还没有我写的

我不能通过EJB注入有状态会话bean吗?

1 个答案:

答案 0 :(得分:0)

以下是问题的解决方案:

您可能已经知道,单个Servlet实例用于处理来自多个客户端的多个请求,因此有状态EJB不应直接注入Servlet并作为实例属性保留,否则我们将面临明显的线程安全相关问题。在我们的例子中,我们从doDet方法中的JNDI获取它并将其存储在HTTP会话中,这样每个用户都将拥有它自己的Sateful EJB实例。