2017-09-25 86 views
0

RESTEasy的文檔說除了使用「@GZIP」批註註釋服務器端點之外,還需要在運行時環境的類路徑中創建一個名爲「javax.ws.rs.ext.Providers」的文件,並且在文件中包含類名「org.jboss.resteasy.plugins.interceptors.encoding.GZIPEncodingInterceptor」。RESTEasy啓用GZIP支持?

我已經完成了上述所有操作,但即使響應「Content-Encoding」標頭爲「gzip」(即響應正文爲純文本/ json,但從服務器返回的響應未壓縮,儘管標題說了什麼)。

當部署到Tomcat時,javax.ws.rs.ext.Providers文件肯定位於.war和應用程序文件夾的WEB-INF/classes文件夾中,但RESTEasy忽略它。

那麼,有什麼我失蹤?有沒有人有這個工作?

編輯:好的,我發現RESTEasy實際上是在尋找完整路徑「META-INF/services/javax.ws.rs.ext.Providers」,所以我必須在我的文件夾路徑中加上文件資源文件夾。是的,這是令人困惑的,因爲.war檔案中已經有一個META-INF文件夾;但是,將「服務」子文件夾和「javax.ws.rs.ext.Providers」文件放在該META-INF文件夾中不起作用。嘆。

+0

您是否使用數據包嗅探器確定未壓縮? – Namphibian

+0

是的,我使用TCPMon來檢查流量並確定流量是未壓縮的JSON,儘管HTTP頭聲稱它是gzip。 –

回答

2

我得到它的工作&我希望這會幫助你解決同樣的問題。訣竅是在WEB-INF/classes中有這個。我所做的就是有javax.ws.rs.ext.Providers的位置:/WEB-INF /班/ META-INF /服務 &瞧它開始工作。

其原因是在代碼嘗試搜索此文件時遇到類加載器引用。我正在使用tomcat。但是,如果您使用JBoss或任何其他應用程序/ Web服務器,則類加載機制可能因容器實現而異。所以要弄清楚哪個是你的服務器的最佳位置。