我正在尝试使用 servlet 中的有状态 ejb,但根据我的理解,我不应该使用 @EJB 注入(inject)来执行此操作,而应该进行查找。
问题是,到目前为止,我设法实现此目的的唯一方法是在 servlet 上使用此注释:
@EJB(name="LoginRemote", beanInterface = LoginRemote.class)
LoginRemote loginHandler;
然后查找:
loginHandler = (LoginRemote) new InitialContext().lookup("java:comp/env/LoginRemote");
否则我总是会收到 javax.servlet.ServletException: javax.naming.NameNotFoundException
错误。
这是可以接受的还是我应该完全避免 @EJB 注入(inject)?
谢谢
最佳答案
不,您不想将实例注入(inject)到 servlet 中。相反,您可以在 servlet 类本身上使用 @EJB
注释来声明引用而不注入(inject):
@EJB(name="LoginRemote", beanInterface = LoginRemote.class)
public class MyServlet {
如果您想在同一个 servlet 中声明多个引用,可以使用 @EJBs
。
(请注意,当在示例中使用字段上的注释时,beanInterface 参数与字段类型是多余的,但在使用类级别注释类时是必需的。)
关于java - 没有 @EJB 注入(inject)的 servlet 上的有状态 ejb 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27018494/