我試圖@Inject
一個@SessionScoped
豆使用CDI注入到過濾器在Servlet
@WebFilter("/*")
public class IdentityFilter implements Filter, Serializable {
@Inject
private LoginUser loginUser;
...
其中LoginUser
是@SessionScoped
意圖是爲了loginUser代表登錄的用戶的會話。
問題是,我並不總是從當前會話中獲得loginUser
,因爲一個會話的LoginUser對象正在與另一個會話共享,所以會發生會話之間的「泄漏」。顯然這不好。
我想知道這是否是因爲Filter
對象是單例,或者至少在容器(glassfish)的請求和會話之間重複使用。 (對吧?)
有沒有更好的方法來獲取當前會話的LoginUser
對象而不使用Filter上的屬性?
您能粘貼LoginUser代碼嗎?如果你沒有一個沒有參數的非私有構造函數,或者這個類是final的或者有最終的方法,它將不起作用。 – 2012-03-08 18:37:08
感謝Fabricio。我認爲這是好的,它確實需要注射。問題是分享......我想我發現什麼是錯的,會發布。 – Jonathan 2012-03-11 21:53:34