Servlets 使用@Inject将Ejb注入Servlet不起作用

Servlets 使用@Inject将Ejb注入Servlet不起作用,servlets,ejb,cdi,inject,Servlets,Ejb,Cdi,Inject,我试图将EJB注入servlet,但我发现了一个问题。 我有一个无状态bean: @Stateless public class ServiceBean implements ServiceBeanLocal{...} EAR项目的另一个模块中的servlet: @WebServlet("test") public class TestServlet extends HttpServlet { @Inject ServiceBeanLocal serviceBean;

我试图将EJB注入servlet,但我发现了一个问题。 我有一个无状态bean:

@Stateless
public class ServiceBean implements ServiceBeanLocal{...}
EAR项目的另一个模块中的servlet:

@WebServlet("test")
public class TestServlet extends HttpServlet {

    @Inject
    ServiceBeanLocal serviceBean;
    //... doGet(), doPost()...
}
slsb和servlet都由容器管理,因此使用CDI@Inject注释进行注入应该可以正常工作,但是当调用
doGet()
方法时,
serviceBean
为空。
当我将@Inject更改为旧的@EJB时,一切都正常,slsb被注入。我找不到为什么@Inject在servlet中不起作用的信息。它是与CDI规范相关还是与Wildfly/Weld相关?

您有beans.xml吗?是的,我有beans.xml和bean discovery mode=“all”。一般来说,wildfly在启动过程中不会显示任何缺少依赖项的错误,所以这很奇怪。根据提供的信息,我没有看到任何错误。应用服务器的版本是否支持CDI?请尝试使用@ManagedBean注释servlet类。我最近必须这样做才能让任何注入工作正常。是的,这是最新的wildfly,我经常使用@Inject,但在EJB模块中,这并没有问题。问题只在于将EJB注入servlet。谢谢peez80我会试试的