2013-09-30 48 views
0

時,我有一個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在同一個響應中使用一個寫入器和輸出流調用輸出,這是不允許的。

任何提示?

謝謝。

回答