標籤:
這兩天在弄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. 如果有其他朋友碰到類似的問題,可以有個協助;對問題的一個記錄.
一個jetty Gzip壓縮報的錯