java - RESTEasy 启用 GZIP 支持?

标签 java web-services tomcat gzip resteasy

RESTEasy 的文档说,除了使用“@GZIP”注释来注释服务器端点之外,您还需要在运行时环境的类路径中创建一个名为“javax.ws.rs.ext.Providers”的文件并在文件中包含类名“org.jboss.resteasy.plugins.interceptors.encoding.GZIPEncodingInterceptor”。

我已经完成了上述所有操作,但是从服务器返回的响应未被压缩,即使响应“Content-Encoding” header 是“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 文件夹;但是,将“services”子文件夹和“javax.ws.rs.ext.Providers”文件放在该 META-INF 文件夹中不起作用。叹息。

最佳答案

我成功了,希望这能帮助您解决同样的问题。诀窍是在 WEB-INF/classes 中使用它。我所做的是在以下位置设置 javax.ws.rs.ext.Providers:/WEB-INF/classes/META-INF/服务 & 瞧,它开始工作了。

这样做的原因是与它在尝试搜索此文件的代码中的类加载器引用有关。我正在使用汤姆猫。但是,如果您使用 JBoss 或任何其他应用程序/Web 服务器,则类加载机制可能会因容器实现而异。因此,弄清楚哪个是您的服务器的最佳位置。

关于java - RESTEasy 启用 GZIP 支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46415769/

相关文章:

java - HashMap - 获取第一个键值

java - Ant 中的 <pathelement> 属性 'path' 和 'location' 有什么区别?

java - 如何从 DBpedia Spotlight Web 服务获取完整结果

iphone - JSON 解析未提供正确的 NSMutable 数组 :

linux - 在 32 位操作系统上运行 64 位 jvm

java - Liferay SOAP 服务 Java 客户端验证错误

java - 令人惊讶的异常: Attempt to invoke virtual method 'java.lang.String android.net.Uri.getScheme()' on a null object reference

javascript - 如何在angularjs中使用$resource从url获取JSON对象(如 'GET')

java - tomcat 和 jar 在 Maven 构建中并行执行

java - Tomcat错误页面问题