Can't make injection work in a Servlet with Jetty 6
agoncal Jan 9, 2011 4:30 PMHi,
Weld 1.1.0.CR1
Jetty 6.1.26
I have a very simple Servlet injecting a bean with @Inject :
public class MainServlet25 extends HttpServlet {
    @Inject
    Hello hello;
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html");
        PrintWriter out = resp.getWriter();
        out.println("<HTML>");
        out.println("<HEAD><TITLE>Bootstrap CDI in Tomcat</TITLE></HEAD>");
        out.println("<BODY>");
        out.println(saySomething());
        out.println("</BODY>");
        out.println("</HTML>");
        out.close();
    }
    public String saySomething() {
        return hello.sayHelloWorld();
    }
}
public class Hello {
    public String sayHelloWorld() {
        return "Hello " + world.sayWorld();
    }
}
I've followed the instruction described in 18.3.2 (http://docs.jboss.org/weld/reference/latest/en-US/html_single/d0e5297) but I have a NPE when invoking the servlet. I've copied the same jett-web.xml (for injection), the jetty-env.xml, the listener in web.xml, the empty beans.xml file from the Weld documentation... but it doesn't work. Here is the stack trace :
2011-01-09 22:26:43.871:WARN::/bootstrapping-servlet25-jetty/mainServlet
java.lang.NullPointerException
        at org.antoniogoncalves.cdi.bootstrapping.servlet.MainServlet25.saySomething(MainServlet25.java:33)
        at org.antoniogoncalves.cdi.bootstrapping.servlet.MainServlet25.service(MainServlet25.java:26)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
        at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:401)
        at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
        at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
        at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
        at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
        at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
        at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
        at org.mortbay.jetty.Server.handle(Server.java:326)
        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
        at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
        at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
        at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Any idea ? 
Thanks,
Antonio
 
     
    