2012-03-05 13 views
1

私は、検証などのビジネスロジックを実行するマネージセッションスコープ付きBeanを持つJSF 2.0アプリケーション(App#1)を持っています。Continueボタンをクリックすると、別のプレーンhtmlフォームページユーザーに表示され、このページの[送信]ボタンをクリックすると、フォームが別のアプリケーション(App#2)に送信されます。 App#2の処理後、App#3のページがUserに表示されます。これはすべて[同じブラウザ]タブで行われます。別のアプリケーションでセッションスコープのマネージドBeanを削除する

App#3(これもJSF 2.0アプリケーションです)では、App#1のセッションスコープBeanを削除したいと思います。それ、どうやったら出来るの?私は以下のオプションを試しましたが、どれも動作していないようです。

//First approach 
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("app1Bean"); 

私はここでも上記のコード行

//second approach 
HttpSession session = (HttpSession) FacesContext.getCurrentInstance() 
     .getExternalContext().getSession(true); 
session.removeAttribute("app1Bean"); 

ヌルにnullを取得しています。

+0

Nullとは何ですか? – Thor

+0

申し訳ありませんが、コードが明確でない場合は、コードにSysoutを入れて、(FacesContext.getCurrentInstance()。getExternalContext()。getSessionMap()。get( "app1Bean")== null){System.out.println ( "app1Bean is null");}このSysoutはコンソールに表示されます – user972391

+0

これらのアプリケーションはサーバー上で同じセッションを使用するように構成されていますか?そうではないように聞こえますが、確かにあなたには分かりませんでした。 – BalusC

答えて

0

デフォルトでは、同じサーバーで実行される複数のアプリケーションでは、ではなく、が同じセッションを共有します。ただし、サーバーはそのように構成することができます。どのように行うかは、サーバーの製造元/バージョンによって異なります。詳細については、サーバー管理者に相談してください。

サーバー構成の変更がオプションでない場合は、セッションに保存した情報を共有データソース(たとえばSQLデータベースなど)に保存することをお勧めします。このようにして、最後のアプリケーションでは、データソース内の情報を削除または操作するだけで済み、セッションスコープを使用する必要はありません。

関連する問題