我不明白一件事,我希望有人能解释我。我有一个用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吗?
答案 0 :(得分:0)
以下是问题的解决方案:
您可能已经知道,单个Servlet实例用于处理来自多个客户端的多个请求,因此有状态EJB不应直接注入Servlet并作为实例属性保留,否则我们将面临明显的线程安全相关问题。在我们的例子中,我们从doDet方法中的JNDI获取它并将其存储在HTTP会话中,这样每个用户都将拥有它自己的Sateful EJB实例。