1

検証などのビジネス ロジックを実行するマネージド セッション スコープ Bean を持つ JSF 2.0 アプリケーション (App#1) があります。[続行] ボタンをクリックすると、別のプレーンな HTML フォーム ページがユーザーに表示され、[送信] ボタンをクリックします。このページはフォームを別のアプリケーション (App#2) に送信します。App#2 がジョブを実行した後、ユーザーには App#3 のページが表示されます。これはすべて同じブラウザ タブで行われることに注意してください。

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

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

上記のコード行で null を取得しています

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

ここもヌル。

4

1 に答える 1

0

デフォルトでは、同じサーバー上で実行される複数のアプリケーションが同じセッションを共有することはありません。ただし、サーバーはそのように構成できます。それを正確に行う方法は、サーバーのメーカー/バージョンによって異なります。詳細については、サーバー管理者にお問い合わせください。

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

于 2012-03-05T19:38:12.873 に答える