【问题标题】:What is the Jersey 2.0 equivalent of GZIPContentEncodingFilter什么是 GZIPContentEncodingFilter 的 Jersey 2.0 等价物
【发布时间】:2013-07-23 22:19:11
【问题描述】:

我正在将 Jerset 1.x 客户端项目迁移到 Jersey 2.0。

我发现GZIPContentEncodingFilter 不再存在。有没有类似的?

我偶然发现了GZIPEncoder,但不知道如何插入。

在 Jersey 1.17 中,我使用:

WebResource r = ...
r.register(new GZIPContentEncodingFilter());

在 Jersey 2.0 中,我搜索类似:

WebTarget r = ...
r.register(new GZIPContentEncodingFilter());

【问题讨论】:

  • 你也在服务器端使用 jersey 2.0 吗?如果是这样,请问您如何使 gzip-encoding 工作? (我已经发布了一个关于这个here的问题。)
  • 嗨,不幸的是,另一边是一个遗留系统。

标签: java jersey jersey-client jersey-2.0


【解决方案1】:

使用

WebTarget r = ...
r.register(GZIPEncoder.class);

【讨论】:

【解决方案2】:

大部分细节可以从 Jersey 自己的单元测试中获得。 因此,要允许使用 GZip 或 Deflate 算法压缩响应(以增加 CPU 负载和延迟为代价),您应该使用:

WebResource r = ...
r.register(EncodingFilter.class); // Allow to process encodings
r.register(GZIPEncoder.class);
r.register(DeflateEncoder.class);

请参阅 Jersey v2.x 编码单元测试中的配置方法:EncodingTest

【讨论】:

    【解决方案3】:

    在 Jersey 2.x 中(我使用 2.26):

    WebTarget target = ...
    target.register(GZipEncoder.class);
    

    我不必包含 EncodingFilter/DeflateEncoder。

    【讨论】:

      【解决方案4】:

      使用 @GZIP 注释方法,它内部使用 GZIP 编码器并删除 解决问题的 web.xml 中的 GZIPContentEncodingFilter

      【讨论】:

      • 能否提供@GZIP的链接?
      • 我很确定这个答案是针对服务器而不是客户端的。 OP 正在询问客户。
      • 这个答案是专门为 RestEasy 准备的。 @GZIP 没有在 Jersey 服务器中定义。
      猜你喜欢
      • 2014-06-29
      • 1970-01-01
      • 2014-09-28
      • 1970-01-01
      • 2015-09-12
      • 1970-01-01
      • 2014-05-08
      • 2014-06-12
      • 1970-01-01
      相关资源
      最近更新 更多