2012-04-18 66 views
3

我知道,無國籍豆不維護會話狀態,但我需要的僅僅是一個記錄器。我應該在每個被調用的方法中使用記錄器嗎?如果沒有,那麼我應該在哪裏初始化它?我可以在無狀態會話bean中使用實例變量嗎?

是這是肯定的,如果我寫這樣的代碼,我也不會在使用記錄器的一些方法得到NullPointerException異常?

@PostConstruct 
public void init() { 
    logger = Logger.getLogger(); 
} 
+0

這不是「爭議」,​​而是「對話」狀態,雖然這個話題可能會引起爭議:) – Thomas 2012-04-18 15:02:44

+0

謝謝,托馬斯!我真的很抱歉我的英語。 – dmiandre 2012-04-18 15:07:07

回答

1

我想你不希望有一個請求/會話特定記錄儀,對不對?在這種情況下,你甚至可以使用類的靜態成員添加的記錄,並讓所有的bean實例使用相同的記錄。

0

創建一個單獨的類,這將具有以下屬性:

  1. 靜態字段與類本身
  2. 私有構造函數的類型,以確保只有一個此記錄 類的實例開始
  3. getInstance()方法將給出類的唯一實例
  4. getLogger()方法得到記錄器

初始化記錄器在這個類的構造函數和
可以從getLogger獲得日誌()方法的每次你需要使用它

0

嘗試:

private static final Logger log = Logger.getLogger(); 

如果您需要線程特定值要小心,記錄儀的輸出處理程序中每行寫入線程的名字,你應該罰款。

相關問題