这两天在弄Gzip压缩, 服务器为jetty 版本8.*: 碰到一个困扰我好一段时间的一个问题:
启用Gzip压缩后报错如下:
【java.lang.IllegalStateException: !asyncSupported
at org.eclipse.jetty.server.Request.startAsync(Request.java:2058)
at spray.servlet.Servlet30ConnectorServlet$Responder.<init>(Servlet30ConnectorServlet.scala:89)
at spray.servlet.Servlet30ConnectorServlet.service(Servlet30ConnectorServlet.scala:66)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)】
经历了各种排查,终于解决:
在原有的GzipFilter基础之上添加【async-supported】。修改后的web.xml 中jetty过滤器部分
1 <!-- Gz压缩测试 start --> 2 <filter> 3 <filter-name>GzipFilter</filter-name> 4 <async-supported>true</async-supported> 5 <filter-class>org.eclipse.jetty.servlets.GzipFilter</filter-class> 6 <init-param> 7 <param-name>methods</param-name> 8 <param-value>GET,POST</param-value> 9 </init-param> 10 <init-param> 11 <param-name>mimeTypes</param-name> 12 <param-value>text/html,text/xml,text/plain,text/css,text/javascript,text/json,application/x-javascript,application/javascript,application/json,application/xml,application/xml+xhtml,image/svg+xml,image/gif,image/png,image/jpg</param-value> 13 </init-param> 14 </filter> 15 <filter-mapping> 16 <filter-name>GzipFilter</filter-name> 17 <url-pattern>/*</url-pattern> 18 </filter-mapping> 19 <!-- Gz压缩测试 end -->
-- 1. GzipFilter 是可以设置同步异步的;
2. servlet 也是可以设置同步异步(这个是利用框架中色servlet);
3. 注意提高自己,解析报错,并快速定位问题的能力(他这个报错以为是servlet 不支持异步,各种换servlet尝试);
4. 如果有其他朋友碰到类似的问题,可以有个帮助;对问题的一个记录.
原文:http://www.cnblogs.com/today-is/p/4963237.html