【问题标题】:RESTEasy Enable GZIP Support?RESTEasy 启用 GZIP 支持?
【发布时间】:2018-03-07 01:07:10
【问题描述】:

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

我已经完成了上述所有操作,但是从服务器返回的响应没有被压缩,即使响应“Content-Encoding”标头是“gzip”(即响应正文是纯文本/json,尽管标题说什么)。

javax.ws.rs.ext.Providers 文件肯定在我的 .war 中的 WEB-INF/classes 文件夹中,并且在部署到 Tomcat 时位于 app 文件夹中,但 RESTEasy 忽略了它。

那么,我有什么遗漏吗?有人有这个工作吗?

编辑:好的,我发现 RESTEasy 实际上正在寻找完整路径“META-INF/services/javax.ws.rs.ext.Providers”,所以我必须创建该文件夹路径和文件我的资源文件夹。是的,这很令人困惑,因为 .war 存档中已经有一个 META-INF 文件夹;但是,将“服务”子文件夹和“javax.ws.rs.ext.Providers”文件放在该 META-INF 文件夹中不起作用。叹气。

【问题讨论】:

  • 您是否使用数据包嗅探器确定未压缩?
  • 是的,我使用 TCPMon 检查流量并确定流量是未压缩的 JSON,尽管 HTTP 标头声称它是 gzip。

标签: java web-services tomcat gzip resteasy


【解决方案1】:

我让它工作了,我希望这能帮助你解决同样的问题。诀窍是在 WEB-INF/classes 中有这个。我所做的是将 javax.ws.rs.ext.Providers 放在以下位置:/WEB-INF/classes/META-INF/服务 瞧,它开始工作了。

原因在于它在代码中试图搜索该文件时的类加载器引用。我正在使用tomcat。但是,如果您使用 JBoss 或任何其他应用程序/Web 服务器,则类加载机制可能会根据容器实现而有所不同。因此,找出最适合您的服务器的位置。

【讨论】:

    猜你喜欢
    • 2013-07-25
    • 2011-03-06
    • 1970-01-01
    • 2014-08-26
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    • 2020-01-27
    相关资源
    最近更新 更多