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

Java 在maven项目中注入有状态EJB bean,java,maven,jakarta-ee,Java,Maven,Jakarta Ee,我不明白一件事,我希望你们中的某个人能给我解释一下。我有一个用glassfish开发的maven企业项目 我使用插入代码netbeans函数(右键单击)调用servlet中的bean,尤其是注释 @EJB 我不明白为什么当我通过netbeans中的Insert Code函数调用有状态会话bean时,bean是通过JNDI调用的。这就是我的意思 private BookingBeanInterface lookupBookingBeanLocal() { try {

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

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

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

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?

以下是问题的解决方案:

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