spring 3.0.5 (セキュリティを含む) + CometD 2.3.1 を組み合わせたイントラネット アプリケーションを構成および開発しました。
cometd をセットアップするために、http://docs.cometd.org/2.4.3/reference/#java_server_services_integration_spring を参照しました 。
アプリケーションを jetty で実行すると、すべて正常に動作します。しかし、glassfish v2 で実行しようとすると、「ランダムに」 HTTP 408 が発生します。server.log のエラー:
[#|2012-11-02T15:43:50.428+0100|SEVERE|sun-appserver9.1|javax.enterprise.system.container.web|_ThreadID=17;_ThreadName=httpSSLWorkerThread-9000-0;_RequestID=eb9ebc97-ac0f-48fe-8793-cfc9fd3e7b3a;|StandardWrapperValve[default]: PWC1406: Servlet.service() for servlet default threw exception
java.lang.IllegalStateException
at org.apache.coyote.tomcat5.CoyoteResponseFacade.sendError(CoyoteResponseFacade.java:433)
at javax.servlet.http.HttpServletResponseWrapper.sendError(HttpServletResponseWrapper.java:141)
at org.springframework.security.web.context.SaveContextOnUpdateOrErrorResponseWrapper.sendError(SaveContextOnUpdateOrErrorResponseWrapper.java:54)
at org.apache.catalina.servlets.DefaultServlet.serveResource(DefaultServlet.java:740)
at org.apache.catalina.servlets.DefaultServlet.doGet(DefaultServlet.java:384)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:718)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:411)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:317)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
また、IE クライアントの観点からは、cometD 接続が不安定です。
13:16:16 - CometD Connection Established
13:16:16 - CometD Connection Broken
13:16:17 - CometD Connection Established
13:16:17 - CometD Connection Broken
13:16:20 - CometD Connection Established
13:16:20 - CometD Connection Broken
13:16:21 - CometD Connection Established
13:16:21 - CometD Connection Broken
13:16:22 - CometD Connection Established
13:16:23 - CometD Connection Broken
しかし、エラー メッセージにもかかわらず、cometd 接続は機能します。サブスクライブ アクションは問題なく、サーバーからの通知は正常に受信されます。
注: サンプル dojo-chat アプリケーション (モデルとして使用したもの) を同じ Glassfish ドメインにデプロイしましたが、正常に動作しています!
私は何を見逃したでしょうか?