@ Inject не работает в JBoss AS 7 - PullRequest
1 голос
/ 15 ноября 2011

Я установил последнюю версию JBoss AS 7 (7.0.2) и установил инструменты eclipse для подключения его к WTP.Я создал «Динамический веб-проект» (без 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 + "!";
    }
}

Я запускаю сервер с затмения, и он запускается без ошибок.Но при вызове моего сервлета из браузера (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]
    [...]

Кажется, что аннотация @Inject не работает.Как отследить проблему?В чем может быть причина?

1 Ответ

5 голосов
/ 15 ноября 2011

Файл beans.xml необходим для обнаружения bean-компонента (и, следовательно, для правильной работы внедрения), и в большинстве случаев подойдет только пустой beans.xml.

Некоторые быстрые ссылки:
Настройка приложения CDI
Почему beans.xml требуется в CDI?

...