JavaEE CDI注入-无法注入HttpServletRequest/Response

JavaEE CDI注入-无法注入HttpServletRequest/Response,java,servlets,jakarta-ee,cdi,Java,Servlets,Jakarta Ee,Cdi,我有一个读取查询参数的web应用程序。它使用该参数从外部应用程序源获取一些数据。web应用程序是一个简单的Servlet: @WebServlet(name = "SomethingServlet", urlPatterns = {"/"}, loadOnStartup = 0) public class SomethingServlet extends HttpServlet { @Inject InterfaceOfDesire objectOfDesire; p

我有一个读取查询参数的web应用程序。它使用该参数从外部应用程序源获取一些数据。web应用程序是一个简单的Servlet:

@WebServlet(name = "SomethingServlet", urlPatterns = {"/"}, loadOnStartup = 0)
public class SomethingServlet extends HttpServlet {

    @Inject
    InterfaceOfDesire objectOfDesire;

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        objectOfDesire.doSomething();
    }
}
InterfaceOfDesire是(atm)实现一次的接口。因此,不应存在歧义

public interface InterfaceOfDesire {
    void doSomething();
}


public class ClassOfDesire implements InterfaceOfDesire {
    @Override
    public void doSomething() {
        // do something very cool
    }
}
最后,但并非最不重要的是有一个解析器,它解析实现类的类型(仅atm 1)

现在我得到了错误

WELD-001408: Unsatisfied dependencies for type HttpServletResponse with qualifiers @Default
我做错了什么?

我想说bean(
SomethingResolver
)需要以某种方式绑定到HTTP请求或其会话。只有这样,它才能访问
HttpServletRequest
(或响应)

尝试使用
@RequestScoped
对其进行注释
@SessionScoped
可能也会起作用

这背后的原因是,按照您现在的方式,bean生命周期没有绑定到请求——它甚至可以比请求更长。CDI无法判断应该将哪个servlet请求注入其中。

我想说bean(
SomethingResolver
)需要以某种方式绑定到HTTP请求或其会话。只有这样,它才能访问
HttpServletRequest
(或响应)

尝试使用
@RequestScoped
对其进行注释
@SessionScoped
可能也会起作用


这背后的原因是,按照您现在的方式,bean生命周期没有绑定到请求——它甚至可以比请求更长。CDI无法判断应该将哪个servlet请求注入其中。

您是否用
@Named
+范围注释(
@ApplicationScoped
等)标记了您使用
@Inject
的类不要忘记
ViewScoped
SessionScoped
需要实现
Serializable
。您要部署到哪个容器?包括版本。您是否用
@Named
+范围注释(
@ApplicationScoped
,等等)标记了您正在使用
@Inject
的类。不要忘记
查看范围
会话范围
需要实现
可序列化
。您将部署到哪个容器?包括版本。
WELD-001408: Unsatisfied dependencies for type HttpServletResponse with qualifiers @Default