1

依存性注入を使用したブックストアというサンプル アプリケーションに取り組んでいます。非常にシンプルなアプリケーション。JavaEE 6、GlassFish 3.1.2、クラス内の静的データ (データベースなし)、Eclipse Juno を使用しています。

必要に応じて、さらに情報を提供できます。

私が得るエラー:

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 を削除してクラスのインスタンスを作成すると、ページは正常に読み込まれます。

サーブレット コード生成エラー: 太字のコメントを参照

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 {

    }

}

プロジェクトの構造:

計画

4

1 に答える 1

2

beans.xml ファイルを web.xml が存在する WEB-INF フォルダーに移動しようとしましたか?何らかの理由で、beans.xml ファイルが結果の war ファイルに適切にコピーされていない可能性があります。

于 2012-07-09T15:04:32.437 に答える