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

share kara [E-MAIL ADDRESS DELETED]
2009年 10月 1日 (木) 16:27:22 JST


唐立です。

> ともあれ (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]
-------------- next part --------------
A non-text attachment was scrubbed...
Name: SampleSessionListener.java
Type: application/octet-stream
Size: 522 bytes
Desc: 無し
URL: <http://ml.seasar.org/archives/seasar-user/attachments/20091001/dc9cd04a/attachment.obj>


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