時,我有一個ScalatraServlet如下:Scalatra的GZipSupport使用FutureSupport
class MyServlet extends ScalatraServlet with FutureSupport with GZipSupport with JacksonJsonSupport {
..
}
在運行時,我得到:
java.lang.IllegalStateException: STREAM
我也嘗試添加一個碼頭過濾器在我ScalatraBootstrap如下:
val gzip = context.addFilter("gzip-responses", classOf[NicsGzipFilter])
gzip.setInitParameter("mimeTypes", "text/html,text/plain,text/xml,application/json,application/xml,application/xhtml+xml,text/css,application/javascript,image/svg+xml")
gzip.setInitParameter("minGzipSize", "1") // TODO for testing only. Remove before committing
gzip.addMappingForUrlPatterns(java.util.EnumSet.allOf(classOf[DispatcherType]), true, "/*")
gzip.setAsyncSupported(true) // not sure if this is required?
在這種情況下,我得到的答案,但他們不gzipped(雖然碼頭過濾器肯定運行,因爲它添加了不同的編碼標題)。
我似乎得到了與此處報告相同的錯誤:ScalatraServlet with AkkaSupport with GZipSupport。所以它看起來並沒有修復這個bug。
另一個爲什麼它不工作的建議是在這裏:https://github.com/scalatra/scalatra/issues/247#issuecomment-12219667。建議Scalatra在同一個響應中使用一個寫入器和輸出流調用輸出,這是不允許的。
任何提示?
謝謝。