2016-04-30 14 views
0

私はJava ee Webアプリケーション(web、ejb、persistence dbの3つのレイヤー)を実行しています。そして私はいくつかのオブジェクトを保存したいだけですが、セッション時間中にのみ保存します(dbで保存しないでください)。どうやってやるの?マネージドBeanにオブジェクト(pojos)を保存する必要がありますか?このように、すべてのユーザーは独自の保存オブジェクトを持ちます。ユーザーセッション中にオブジェクトを永続化する方法

ありがとうございました

+0

「保存済み」とは、「DB内」を意味するものではありません。他に、オブジェクトを「保存」したいのですか? –

+0

私はejbでいくつかの計算をしている間に短時間保存します。 – pquin92

+0

具体的な例を挙げてください。これはあまりにも曖昧です。オブジェクトがセッションに結び付けられている場合は、オブジェクトをセッションに格納します。単なる要求に対して有効であれば、それらをどこにでも格納したり、要求属性に格納したりしないでください。 –

答えて

1

httpセッション中にいくつかのユーザー固有の情報をメモリに保存する方法がいくつかあります。

  1. セッションスコープのマネージドBean(注釈付き@SessionSoped)があります。ドキュメントが言うように:

セッション・コンテキストは、同じHTTPセッションで発生するすべてのサーブレット要求の間で共有されています。 HTTPSessionがタイムアウトすると、すべてのHttpSessionListenersが呼び出された後、invalidate()が呼び出されたリクエストの最後に、すべてのフィルタとServletRequestListenersが呼び出された後でセッションコンテキストが破棄されます。

このように、すべてのユーザーは、セッションスコープのBeanに格納された独自のデータセットを持ちます。

  1. HttpSessionに直接アクセスし、そこにユーザー固有のデータを格納します。

    FacesContext facesContext = FacesContext.getCurrentInstance(); HttpSessionセッション=(HttpSession)facesContext.getExternalContext()。getSession(false); ... session.setAttribute(key、value); ... session.setAttribute(key);

+0

ありがとうございます。私はそれについてはわからなかった。 – pquin92

+0

サーブレットがそのシングルトン・クライアントであるため、WebアプリケーションでステートフルEJBを使用しないでください。 – Riadh

関連する問題