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

jun funakura [E-MAIL ADDRESS DELETED]
2009年 12月 20日 (日) 15:16:12 JST


ふなくら(nod)です

だいぶ時間が経ってしまっていますが、
S2BlazeDSを修正したSNAPSHOTを以下にアップいたしました。
http://maven.seasar.org/maven2-snapshot/org/seasar/blazeds/s2blazeds/1.0.1-SNAPSHOT/s2blazeds-1.0.1-20091208.162339-1.jar

Doltengで作ったS2BlazeDSプロジェクトでHotDeploy環境でエラーが再現できている状態で
上記のjarに入れ替えた後、
sample.mxmlに似たような一覧取得をするサービスを呼び出しても動作するところまでは
確認しております。

余裕がありましたら動作確認をしていただけますと幸いです。

BlazeDS3.2からSessionチェックをするように変更されていたのですが、
その影響で分散環境やHotDeploy環境で問題がでるようになってしまったようです。

Doltengリリース時のテスト時に手薄になっていた部分でした。
ご指摘ありがとうございました。

--
ふなくら

2009年10月1日16:27 share kara <[E-MAIL ADDRESS DELETED]>:
> 唐立です。
>
>> ともあれ (JW),HttpSession が invalidate される
>> ところを特定してください.
>> 例えば HttpSessionListener を登録して
>> sessionDestroyed() でスタックトレースを出力するなど.
>
> Listenerを作成して、sessionDestroyed()でブレークポイントを設定して、
> スタックトレースをとってみました。
>
> すこし追ってみたところ、BaseHTTPEndpoint.setupFlexClient()のところで
> Duplicate Sessionと判定されて、セッションが無効化されているようです。
>
> もしかすると、Seasar2.4.35からの変更で、BlaseDS側の潜在的な不具合が出てきてしまったとか、そういう話しなのでしょうか。。。
>
> ◇スタックトレース
> Daemon Thread [http-8080-1] (Suspended (breakpoint at line 14 in
> SampleSessionListener))
>        SampleSessionListener.sessionDestroyed(HttpSessionEvent) 行: 14
>        StandardSession.expire(boolean) 行: 702
>        StandardSession.expire() 行: 660
>        StandardSession.invalidate() 行: 1113
>        StandardSessionFacade.invalidate() 行: 150
>        HotdeployHttpSession.invalidate() 行: 177
>        HttpFlexSession.invalidate(boolean) 行: 310
>        HttpFlexSession.invalidate() 行: 291
>        S2AMFEndpoint(BaseHTTPEndpoint).setupFlexClient(String) 行: 411
>        S2AMFEndpoint(AbstractEndpoint).setupFlexClient(Message) 行: 910
>        MessageBrokerFilter.invoke(ActionContext) 行: 92
>        LegacyFilter.invoke(ActionContext) 行: 158
>        SessionFilter.invoke(ActionContext) 行: 44
>        BatchProcessFilter.invoke(ActionContext) 行: 67
>        SerializationFilter.invoke(ActionContext) 行: 146
>        S2AMFEndpoint(BaseHTTPEndpoint).service(HttpServletRequest,
> HttpServletResponse) 行: 278
>        MessageBrokerServlet.service(HttpServletRequest, HttpServletResponse) 行: 322
>        MessageBrokerServlet(HttpServlet).service(ServletRequest,
> ServletResponse) 行: 717
>        ApplicationFilterChain.internalDoFilter(ServletRequest,
> ServletResponse) 行: 290
>        ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) 行: 206
>        S2ContainerFilter.doFilter(ServletRequest, ServletResponse, FilterChain) 行: 79
>        ApplicationFilterChain.internalDoFilter(ServletRequest,
> ServletResponse) 行: 235
>        ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) 行: 206
>        HotdeployFilter.doHotdeployFilter(HttpServletRequest,
> HttpServletResponse, FilterChain) 行: 99
>        HotdeployFilter.doFilter(ServletRequest, ServletResponse, FilterChain) 行: 67
>        ApplicationFilterChain.internalDoFilter(ServletRequest,
> ServletResponse) 行: 235
>        ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) 行: 206
>        EncodingFilter.doFilter(ServletRequest, ServletResponse, FilterChain) 行: 69
>        ApplicationFilterChain.internalDoFilter(ServletRequest,
> ServletResponse) 行: 235
>        ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) 行: 206
>        StandardWrapperValve.invoke(Request, Response) 行: 233
>        StandardContextValve.invoke(Request, Response) 行: 191
>        StandardHostValve.invoke(Request, Response) 行: 128
>        ErrorReportValve.invoke(Request, Response) 行: 102
>        StandardEngineValve.invoke(Request, Response) 行: 109
>        CoyoteAdapter.service(Request, Response) 行: 293
>        Http11Processor.process(Socket) 行: 849
>        Http11Protocol$Http11ConnectionHandler.process(Socket) 行: 583
>        JIoEndpoint$Worker.run() 行: 454
>        Thread.run() 行: 637 [ローカル変数は使用不可]
>
> ◇コンソールの出力
> 2009-10-01 15:31:42,834 [http-8080-3] DEBUG
> org.seasar.framework.container.hotdeploy.HotdeployBehavior - HOT
> deployを開始します
> 情報: Session Created.
> 2009-10-01 15:31:42,851 [http-8080-3] DEBUG
> org.seasar.framework.container.hotdeploy.HotdeployBehavior - HOT
> deployを終了しました
> 2009-10-01 15:31:42,861 [http-8080-2] DEBUG
> org.seasar.framework.container.hotdeploy.HotdeployBehavior - HOT
> deployを開始します
> 情報: Session Destroyed.
> 2009-10-01 15:31:49,895 [http-8080-2] ERROR
> org.seasar.framework.container.hotdeploy.HotdeployHttpSession -
> 例外が発生しました。理由はjava.lang.IllegalStateException: setAttribute:
> セッションは既に無効化されています
> java.lang.IllegalStateException: setAttribute: セッションは既に無効化されています
>        at org.apache.catalina.session.StandardSession.setAttribute(StandardSession.java:1291)
>        at org.apache.catalina.session.StandardSession.setAttribute(StandardSession.java:1256)
>        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)
>        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>        at org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:69)
>        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
>        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
>        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
>        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
>        at java.lang.Thread.run(Thread.java:637)
> 2009-10-01 15:31:49,898 [http-8080-2] DEBUG
> org.seasar.framework.container.hotdeploy.HotdeployBehavior - HOT
> deployを終了しました
>
> ◇Flex側に返されるエラー
> [FaultEvent fault=[RPC Fault faultString="Detected duplicate
> HTTP-based FlexSessions, generally due to the remote host disabling
> session cookies. Session cookies must be enabled to manage the client
> connection correctly."
> faultCode="Server.Processing.DuplicateSessionDetected"
> faultDetail="null"] messageId="812CD3AE-4084-EE8F-CE31-E56717BFA127"
> type="fault" bubbles=false cancelable=true eventPhase=2]
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>


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