[Seasar-user:18508] Re: Dolteng0.38.0のS2BlazeDSでエラー

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2009年 9月 20日 (日) 05:30:00 JST


小林 (koichik) です.

Date:    Sat, 19 Sep 2009 10:38:21 +0900
From:    shares <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:18506] Dolteng0.38.0のS2BlazeDSでエラー

> Doltengで作成した環境に、Flex側からRemoteObjectのサービスにアクセスすると、
> 下記のようなエラーが表示されます。

これだけだと何が起きてるのか分かりません.

Seasar2.4.35 以降では HotdeployFilter で
HttpServletRequest および HttpSession を
ラップしているのですが,

> java.lang.IllegalStateException: setAttribute: セッションは既に無効化されています
> 	at org.apache.catalina.session.StandardSession.setAttribute(StandardSession.java:1289)
> 	at org.apache.catalina.session.StandardSession.setAttribute(StandardSession.java:1254)
> 	at org.apache.catalina.session.StandardSessionFacade.setAttribute(StandardSessionFacade.java:130)
> 	at org.seasar.framework.container.hotdeploy.HotdeployHttpSession.flush(HotdeployHttpSession.java:94)
> 	at org.seasar.framework.container.hotdeploy.HotdeployFilter.doHotdeployFilter(HotdeployFilter.java:104)
> 	at org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:67)

このスタックフレームからは,ラップしている
(Seasar2 の) HttpSession を通さず,本来の
HttpSession の invalidate() が呼び出されて
いるように見えます.
そのため,Seasar2 からは有効な HttpSession だと
判断しているのに,実際には無効になっているのだと
思われます.

まずは invalidate() を呼び出している場所を
特定して,そこで Seasar2 がラップしている
HttpSession を使うようにすれば解決すると
思いますが,例えば SessionListener など,
Seasar2 が介入できない場所で invalidate()
している場合は対処が難しいかもしれません.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



Seasar-user メーリングリストの案内