久しぶりにPrimeFacesネタです。
先日書いた「GlassFishのタイムアウトでログインページも破棄されてしまう…?」ですが、やはりStackOverflowにもあるように、ViewExpiredExceptionを拾って、ログイン画面を再表示する、あるいはセッションタイムアウトを明示的に示したページへ転送するのが一般的なようです。(twitterでコメント頂いた@aoetkさん、@den2snさん、ありがとうございました)
悩ましい所ですね(^^;
仕組み上タイムアウトするの仕方がないじゃん派と、ログインはある意味静的ページなんだから頑張ってよ派に分かれます…。
で、使うかどうかまだわからないのですが、今日少しPrimeFacesのポーリングコンポーネントを試してみました。
http://www.primefaces.org/showcase/ui/poll.jsf
ベタですが、定期的にHTTP通信してセッションタイムアウトを延命する形です。
わりと嬉しいのは、コンポーネントなので、ある特定のページだけに簡単に埋め込める点で、例えばログインページに以下のように置けば
<p:poll interval="600" />
interval属性で指定した時間ごと(秒なので、上記は10分ごと)にポーリングします。実際に通信が発生されているかどうかは、Fiddlerで確認しました。
これを使うことで一応ログイン画面をセッションタイムアウトから回避することもできますが、対処としては何とも…(^^;さてさて。