2012-07-07 103 views
1

我正在使用称为书店的示例应用程序,我使用了依赖注入。非常简单的应用。我正在使用JavaEE 6,GlassFish 3.1.2,类(无数据库)中的静态数据,Eclipse Juno。简单的Servlet CDI生成NullPointerException

我可以根据需要提供更多信息。

错误,我得到:

WARNING: StandardWrapperValve[com.bookstore.web.BookListServlet]: PWC1406: Servlet.service() for servlet com.bookstore.web.BookListServlet threw exception 
java.lang.NullPointerException 
    at com.bookstore.web.BookListServlet.doGet(BookListServlet.java:29) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668) 

这是我所知道的是依赖没有注入。不创建类实例来使用它。如果我删除@Inject并创建一个类的实例,而不是页面加载正常。

servlet代码生成错误:请大胆评论

package com.bookstore.web; 

import java.io.IOException; 

import javax.inject.Inject; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import com.bookstore.BookRepositoryImp; 

@WebServlet("/book/") 
public class BookListServlet extends HttpServlet { 

    private static final long serialVersionUID = 1L; 

    @Inject 
    private BookRepositoryImp bookRepo; 

    public BookListServlet() { 
     super(); 
    } 

    protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, 
      IOException { 

       **//bookRepo = new BookRepositoryImp(); If uncommect this code and remove @Inject than page working fine** 
     req.setAttribute("books", bookRepo.listBooks()); 
     String path = "/WEB-INF/pages/book-list.jsp"; 
     getServletContext().getRequestDispatcher(path).forward(req, res); 
    } 

    protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, 
      IOException { 

    } 

} 

项目结构:

Project

+0

哪一行是行29?您是否尝试将beans.xml文件移动到您的web.xml所在的WEB-INF文件夹中,可能由于某种原因,您的beans.xml文件未正确复制到生成的war文件中。 – Kris 2012-07-08 06:22:09

+0

@ kris,这工作。我将文件移入WEB-INF并且工作正常。谢谢 – Pirzada 2012-07-08 09:59:35

+0

会很好,如果你把问题标记为已解决 – 2012-07-09 11:48:16

回答

2

您是否尝试过移动你的beans.xml文件到WEB-INF文件夹你的web.xml文件所在的地方,可能由于某种原因,你的beans.xml文件没有正确地复制到结果的war文件中。