いよいよGlassFish 4.0がリリースされて、JSFも2.2の時代に突入したようです。
はてなブログのカテゴリにバージョン入れておけば良かった…orz
Java EE6あるいは7に触れていきたい反面、中々そうもいかなそうな雰囲気もあって、仕事って難しいなぁと思ったり(-_-;
……
…
気を取り直して…もう開発フェーズは終わってしまったので、過去書いていないものから抜粋してみました。
ログアウトの処理はアプリケーションによって色々やることがあると思いますが、JSF使っていて最低限これだけはやっておけ!的なものが何かあるのかな、と前に調べました。
色々なサイトみても最低限、といのは2つくらいに集約される…?のかなぁ、と。
当時参考にしたのは主に以下でした。って全てStackOverflowかつ回答者がBalusCさんで情報が偏りすぎてる気もしますが…(^^;
1つはSessionの破棄。
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
HttpSession session = (HttpSession) externalContext.getSession(false);
if(session!=null){
try{
session.invalidate();
}catch(Exception e){
}
}
@megascusさんよりコメント頂き、try-catch入れました。
HttpSession IllegalStateException:セッションは既に無効化されています
上記ブログで書かれているように確かにjavadocみるとthrowの記述がありました。

getSessionの引数はセッションの有無を見て新規にセッションを作るかどうかのようですので、ログアウトではfalseということですかね。
http://www.syboos.jp/java/doc/httpsession-usage-by-samples.html
ちなみにこれは
FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
でも良いっぽい(?)
もう1つはリダイレクト。
こちらは必須か微妙ですが、invalidateで破棄したけど、フォワードだと古いセッションデータが残ってしまうような説明が。URL的にリダイレクト処理しておくほうが良い気も。
return "hogeLogin.xhtml?faces-redirect=true";
他に「これもやっといたほうがいいよ!」というのあればコメント頂けると幸いです(^^;