簡體   English   中英

在JBoss中注入EJB時出現NullPointerException

[英]NullPointerException when injecting EJB in JBoss

我正在嘗試實現一個單例類,該類可以管理數據庫中的屬性。 但是,當我嘗試注入數據庫bean時,我得到了nullPointerException。 這是我的代碼:

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.ejb.EJB;
import javax.ejb.Stateless;
..

@Stateless
public class Properties {

    public static volatile Properties instance;
    private static Map<String, String> properties = new HashMap<String, String>();

    @EJB(WHAT_TO_DO_HERE)
    private DatabasePersisterLocal databasePersister;

    public static Properties getInstance() {
        if (instance == null) {
            synchronized (Properties.class) {
                if (instance == null) {
                    instance = new Properties();
                }
            }
        }

        return instance;
    }

    private Properties() {
        System.out.println("starting");
        System.out.println(databasePersister); //null

        //initializing
    }
}

我將項目導出為jar,稍后,當我嘗試獲取Properties的實例時,得到一個starting打印的內容,然后是一個nullPointerException 當我嘗試從其他項目中注入相同的EJB(DatabasePersisterLocal)時,沒有任何錯誤。 我究竟做錯了什么?

不管您面對的是關於bean注入的問題,我都想澄清一下,至少在您嘗試使用EJB的情況下,用EJB實現Singleton是不可能的。

原因是ejb實例由容器處理。 EJB的線程模型指定每個請求將由可用的EJB實例管理,該實例先前已實例化並分配給ejb列表(池)。

但是,如果您使用的是EJB 3.1,則可以使用@Singleton批注,該批注指示僅創建一個EJB實例的容器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM