2012-03-24 3 views
2

ただ、疑問:BeanがsessionScopedあるので、JSFは、自分のManageBeanで参照されているヘルパークラスもセッションに保存しますか?私のようにmanagedbeanを得た方法JSFセッション管理が</p> <p>を作品に関する

@ManagedBean(name="loginBean") 
@SessionScoped 
public class LoginBean implements Serializable 
{ 

     private String userName; 
     //getter and setter 

     private String password; 
     //getter and setter 

     // Getting through spring injection 
     @ManagedProperty(value="#{userBO}") 
     private UserBO userBO; 
     //setter method 

     public fetchUserDetails(){ 
     User user = userBO.getUSer(this.userName); 
     //some processing 
     } 
    // more methods 
    . 
    . 
    . 
} 

だから今、JSFはあまりにもセッションに私の「userBO」オブジェクトを保持しますか? 私はセッターとゲッターの両方の変数がセッションに格納される可能性が高いと思います。私が間違っているなら、私を訂正してください。 また、「userBO」を無視するように一時的に宣言する必要がありますか?

答えて

2

セッションがリクエスト間でメモリ内に保持されている場合、参照する他のオブジェクトはすべて保持され、ガベージコレクションの対象にはなりません。オブジェクトの内部設定を参照する参照をnullに移動するタスクはありません。マネージプロパティは、Beanが作成され、スコープに配置される前にのみ評価されます。セッションが連載された場合にのみ

+0

セッションの永続性(ディスクへの不動態化を経由してセッションレプリケーションなどを経て、)効果を持っているでしょうuserBOtransientに設定

は、サーバに依存し、私はそれを制御したいwounldn't。だから私のuserBOもsessionScopedだと言っていますか?それは悪いです:/ – Akshat

+0

セッションオブジェクトは、この点ではVM内の他のオブジェクトと違いはありません。ハードリファレンスは、オブジェクトをガベージコレクションできないことを意味します。おそらく、 '@ PostConstruct'も参照してください。)あなたがオブジェクトをスコープから漏らしている場合は、Beanデザインを再訪する必要があります。リクエストスコープオブジェクトを使うことができます例えば ​​'userBO'を使ってあなたのセッションスコープオブジェクトを設定します。 – McDowell

+0

ありがとう、私は同じことを推測した。どうやら、私はManagedBeansをrequestScopedとして作成し、セッションオブジェクトを手動で設定することをお勧めします:/ – Akshat

関連する問題