java - 没有 @EJB 注入(inject)的 servlet 上的有状态 ejb 问题

标签 java jakarta-ee servlets ejb

我正在尝试使用 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/

相关文章:

java - Spring Integration xml 到 java dsl - 如何定义入站/出站 channel 适配器、轮询器等

jakarta-ee - 从实体生成表 - JPA

java - 有没有办法禁止在 Hibernate 中获取列的整个值集?

java - 将文件写入 ServletOutputStream 的最有效方法

java - 在服务器上将 jasper 报告保存为 pdf

java - Liferay 中的模块路径集为空

java - 将缩略图显示为网格

java - 来自日期的唯一整数

java - 什么是接口(interface)?

java - EclipseLink 期望在堆栈上找到对象/数组