2011-10-07 53 views
0

對於JEE6,我仍然很陌生,它來自傳統系統上的Servlets + JSP開發風格。在我處理的應用程序中,我們只需將對象引入各個提供的範圍(請求,會話和應用程序),並在常量字符串上鍵入。例如,表示當前登錄用戶的User對象將位於「current_user」下的會話範圍內。JEE6應用程序會話作用域對象

我們在新的JEE6應用程序中做了同樣的事情,當用戶登錄User對象時,它被綁定到會話範圍中。我想知道,如果有更好,更EE的方式來處理這個問題?

我遇到的問題是,現在我已經將用戶存儲在會話中,但又難以獲得訪問權限。我可以通過JNDI查找,或者通過涉及FacesContext的幾行鍋爐代碼獲得它,但都不是很優雅。

而不是遍佈整個地方的鍋爐板代碼(用戶對象需要在幾個地方),如果我能夠將對象注入到一個域或方法中,那將是非常好的。畢竟,會話中只能有一個對象綁定到一個特定的名稱,所以不應該對我要求的內容有任何含糊之處。這可能嗎?

回答

0

也許CDI可能有任何幫助?

您能否將您實現User對象的方式定義爲一個主方法? 如果是這樣,並且您正在使用Java EE 6環境,則可以使用Producer方法。這些線之間的事情:

public class ClassWhichCanAccessUserObject { 

    @Produces 
    public User produceUser() { 
     User u = ... // get the user as you do it right now 
     return u; 
    } 
} 

然後在地方,你要使用這個類,你只是把它注射(在外地或方法),並使用它:

public class MyLogic { 
    @Inject 
    User u; 
} 

你需要記住添加將beans.xml文件添加到類路徑中,因爲沒有CDI將不適用於您的模塊。

相關問題