2017-07-25 71 views
0

我想在servlet中使用CDI,這裏是我的servlet代碼片段CDI在servlet產生NullPointerException異常

public class MyServlet extends HTTPServlet{ 

    @Inject 
    @Any 
    Instance<MyProcedure> procedures; 

    public void handleRequest(ServletRequest req, ServletResponse res) throws Exception { 

    if (procedures == null) { 
     System.out.println("procedure list is NULL"); 
    } 
    for (Object o : procedures) { 
     System.out.println("calling procedure " + o.toString()); 
    } 
    } 
} 

MyProcedure是上午接口和appliation WAR包含幾個類實現MyProcedure 。

我總是得到一個NullPointerException,因爲過程列表爲空......我的WEB-INF目錄中有一個beans.xml文件。

+0

什麼是應用程序服務器?例如。 Tomcat不支持開箱即用的CDI ... –

+0

使用「Object o」來進行迭代看起來像是一個紅旗。如不檢查程序。isUnsatisfied()。也請包括您的verabatim例外。 – covener

+0

請顯示您的beans.xml。 – Rouliboy

回答

0

我發現問題是什麼。由我的bean實現的接口必須包含在WEB-INF/lib下的war檔案中。在我做完之後,所有事情都開始按預期工作。