@Inject似乎在JBoss AS 7中不起作用



我已经安装了最新的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 + "!";
    }
}

我从eclipse启动服务器,它启动时没有出现错误。但是当从浏览器(localhost:8080)调用servlet时,我的代码抛出了一个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]
    [...]

似乎@Inject注释不起作用。如何追踪问题?原因是什么?

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

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

最新更新