我正在将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());
答案 0 :(得分:9)
使用
WebTarget r = ...
r.register(GZIPEncoder.class);
答案 1 :(得分:4)
大部分细节都可以从泽西岛自己的单元测试中获得。 因此,为了允许使用GZip或Deflate算法压缩响应(增加CPU负载和延迟的成本),您应该使用:
WebResource r = ...
r.register(EncodingFilter.class); // Allow to process encodings
r.register(GZIPEncoder.class);
r.register(DeflateEncoder.class);
请参阅Jersey v2.x编码单元测试中的configure方法:EncodingTest
答案 2 :(得分:0)
使用@GZIP的Anotate方法,它在内部使用GZIP编码器并删除 来自web.xml的GZIPContentEncodingFilter解决了问题
答案 3 :(得分:0)
在Jersey 2.x(我使用2.26):
WebTarget target = ...
target.register(GZipEncoder.class);
我不必包含EncodingFilter / DeflateEncoder。