gpt4 book ai didi

servlets - 将无状态 EJB 注入(inject) Servlet

转载 作者:行者123 更新时间:2023-12-04 17:10:39 24 4
gpt4 key购买 nike

我正在尝试将无状态 EJB 注入(inject) servlet。
但它不起作用。我理解错了吗?
如果我在 @WebService 中这样做注释类,我可以毫无问题地使用注入(inject)的 EJB。

我的 EJB:

@Stateless
public class doSomethingService
{
public void doSomething()
{
System.out.println("DO SOMETHING");
}
}

我的小服务程序:
@WebServlet("/testservlet")
public class test_servlet extends HttpServlet
{
private static final long serialVersionUID = 1L;

@Inject
private doSomethingService injBean;

public test_servlet()
{
super();
injBean.doSomething();
}

这会导致 NullPointerException .我尝试进行 JNDI-Lookup 并且效果很好。 @Inject 是事实吗?在 Servlet 中不起作用?

我正在使用 Glassfish 3.1.2.2

最佳答案

您正在尝试在构造函数中访问它。注入(inject)的依赖项在构造函数中不可用。如果尚未构造实例,则无法设置实例变量。你基本上期望它像这样工作:

test_servlet servlet;
servlet.injBean = new doSomethingService();
servlet = new test_servlet();

显然不是这样。最早可以在 init() 访问servlet 的方法。它也仅适用于 doXxx() 中的任何一个servlet 的方法。

开始,更换
public test_servlet() {
super();
injBean.doSomething();
}

经过
@Override
public void init() {
injBean.doSomething();
}

无关 对于具体问题,我强烈建议您处理 Java naming conventions .小写和下划线的类名不符合标准的 Java 命名约定,这会减慢经验丰富的 Java 开发人员对代码的解释。

关于servlets - 将无状态 EJB 注入(inject) Servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15666572/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com