2011-06-30 41 views
0

我看到如果用戶從兩個不同的瀏覽器訪問會話bean,會話bean的istance是相同。在我看來,這是一個意外的行爲。 有人解決了同樣的問題? 我使用Jsf 2.0,Spring 3.0.5,Hibernate和WebServer Glassfish一樣。 預先感謝您。如果用戶從兩個不同的瀏覽器訪問,則CDI會話作用域bean只創建一次

更新

import model.entity.Utente; 
import java.io.Serializable; 
import javax.enterprise.context.SessionScoped; 
import javax.inject.Named; 

/** 
* 
* @author 
*/ 
@Named 
@SessionScoped 
public class SessionBean implements Serializable { 

我這是怎麼聲明CDI會話bean

+0

您是否真的與Spring一起使用CDI? – Ralph

+0

mmm,我如何看到Spring是否使用真正的CDI綁定? –

+0

現在我正在調試,並且如果沒有beans.xml,也創建了bean,所以我認爲那個bean不是CDI –

回答

4

我猜bean是由Spring不是CDI管理。 (如果你想使用CDI with Spring,你需要做很多工作,只使用javax.inject.Named不是明智之舉。)

Spring知道javax.inject.Named而不是javax.enterprise.context.SessionScoped。爲了讓Spring Bean Session具有作用域,你需要@org.springframework.context.annotation.Scope("session")

另請參閱:Spring Reference Chapter 3.5.4 Request, session, and global session scopes

+0

好的,它是正確的。我已經可以編寫代碼,但現在我有一個空指針excpetion。我試圖在我的自定義登錄過濾器中注入會話Bean ..但我thik,登錄過濾器是在用戶會話開始之前創建的。我也使用Spring安全性。你有一些想法? –

+0

如果你使用Spring Session Beans,你需要爲它添加一個特殊的過濾器,並且可能需要一些額外的配置。但我目前不知道這個名字。 – Ralph

相關問題