@Inject似乎不适用于JBoss AS 7

Arn*_*sch 1 java dependency-injection jboss7.x

我安装了最新的JBoss AS 7(7.0.2)并安装了eclipse工具以将其与WTP连接.我创建了一个"动态Web项目"(没有maven).我试着让"HelloWorld"运行.只有两个班级.

@WebServlet("/HelloWorld")
public class HelloWorldServlet extends HttpServlet {
    @Inject
    HelloService helloService;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter writer = resp.getWriter();
        writer.println("<html><head /><body>");
        writer.println("<h1>" + helloService.createHelloMessage("World") + "</h1>");
        writer.println("</body></html>");
        writer.close();
    }
}

public class HelloService {
    public String createHelloMessage(String name) {
        return "Hello " + name + "!";
    }
}
Run Code Online (Sandbox Code Playgroud)

我从eclipse启动服务器,它启动没有错误.但是当从浏览器调用我的servlet(localhost:8080)时,我的代码会抛出一个NPE.

10:28:29,646 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/hello].[hello.HelloWorldServlet]] (http--127.0.0.1-8080-1) Servlet.service() for servlet hello.HelloWorldServlet threw exception: java.lang.NullPointerException
    at hello.HelloWorldServlet.doGet(HelloWorldServlet.java:23) [classes:]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:734) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
    [...]
Run Code Online (Sandbox Code Playgroud)

似乎@Inject注释不起作用.如何追查问题?可能是什么原因?

str*_*ine 5

bean发现需要一个beans.xml文件(从而使注入正常工作),在大多数情况下只需要一个空的beans.xml即可.

一些快速链接:
配置CDI应用程序
为什么CDI需要beans.xml?