ログアウト処理を実装するのに、Seam 上で session を無効( session.invalidate(); )にしようと考えています。
ここで言う session とは HttpSession の事です。
Seam では、認証の処理(ログイン、ログアウト)は Identityコンポーネント を使うことが推奨されるかもしれませんが、
今回それを利用しないでログアウト処理を実装することになりました。
そこで、ご存知の方がいらっしゃれば教えていただきたいのですが、
session.invalidate(); を使った場合に Seamコンテキスト(セッションコンテキスト、対話コンテキストなど)は
同時に無効になるのでしょうか?それとも、明示的になにかしら処理をして無効にする必要があるのでしょうか?
「どこかのドキュメントに書いてある」、「XXXの処理をする必要がある」、
「session.invalidate(); を使うべきじゃない」などありましたら、
教えていただければ助かります。
よろしくお願いします。
【環境】
JBoss 4.2.0.GA
JBoss Seam 2.0.0.GA
Java 1.5.0_12
Windows XP Professional SP2
--
tak...@blueos.co.jp
comf...@mac.com
Akira TAKAKI
_______________________________________________
Japan-jbug-seam mailing list
Japan-j...@lists.sourceforge.jp
http://lists.sourceforge.jp/mailman/listinfo/japan-jbug-seam
解決したので報告します。
HttpSession#invalidate();を使うと下記のような例外が出ました。
【例外】
java.lang.IllegalStateException: Please end the HttpSession via Seam.invalidateSession()
そのメッセージが「Seam.invalidateSession()を使え」というような感じなので、
Seam.invalidateSession() の JavaDocを見ると Session.instance().invalidate() を使えと書いてありました。(^_^)
http://docs.jboss.com/seam/2.0.0.GA/api/org/jboss/seam/Seam.html#invalidateSession()
http://docs.jboss.com/seam/2.0.0.GA/api/org/jboss/seam/web/Session.html#invalidate()
結果として、Session.instance().invalidate() を使ってうまくいきました。
高木 明 さんは書きました: