:あなたはlogin.xhtml
の事前レンダービューリスナーメソッドでは、セッション・スコープから削除
session.setAttribute("message", message);
httpResponse.sendRedirect(loginView);
。 BalusCは、これを行うことが不可能であることを複数のスレッドで指摘しています。代わりに、 'ServletContextListener'を使用することもできますが、ScheduledExecutorServiceはスケジューリングをEJBタイマーとしてうまく定義しません。
どのような場合でも、彼が作成した提案の1つは、マネージドBeanに裏打ちされたJSFページに実際にWebリクエストを作成して、アプリケーションスコープBean上のメソッドを利用してタイマーを設定する方法でした。
これは、あなたが望むメッセージとユーザーのIPアドレスなどを使ってJSFページにparamを渡すようなことができるように思えるからです。そのページは、リクエストスコープのBeanによってサポートされています。リクエストスコープBeanには、アプリケーションスコープのBeanが注入されており、IPをキーとしてマップに格納します。その後、ユーザーがログインページにリダイレクトされると、そのページは、そのアプリケーションスコープ付きBeanが挿入された要求スコープBeanでgetエラーメッセージメソッドを呼び出し、そのIPまたはその行に沿ったエラーメッセージを取得できます。
いずれにしても、BalusCの答えは十分で、これよりも適切だと確信していますが、彼の「ちょうどejbタイマーからのリクエストを作成する」という提案は、アプリケーションスコープのBeanのメソッド呼び出しをスケジューリングするのにうまくいきました。私はここでその可能な使い方を思い起こさせるかもしれないと思った。
@BalusCあなたが私が参照している投稿についてのご意見はありますか?私はそれを見つけることができません。
ご協力いただきありがとうございます。 – CycDemo
ようこそ。 – BalusC