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 {
}
}
项目结构:
哪一行是行29?您是否尝试将beans.xml文件移动到您的web.xml所在的WEB-INF文件夹中,可能由于某种原因,您的beans.xml文件未正确复制到生成的war文件中。 – Kris 2012-07-08 06:22:09
@ kris,这工作。我将文件移入WEB-INF并且工作正常。谢谢 – Pirzada 2012-07-08 09:59:35
会很好,如果你把问题标记为已解决 – 2012-07-09 11:48:16