Jersey 2/Grizzly中的GZIP编码
我无法在我的Jersey服务中激活gzip编码。这就是我尝试过的:Jersey 2/Grizzly中的GZIP编码,jersey,gzip,grizzly,Jersey,Gzip,Grizzly,我无法在我的Jersey服务中激活gzip编码。这就是我尝试过的: 从中的jersey-quickstart-grizzly2原型开始 添加了rc.register(org.glassfish.grizzly.http.GZipContentEncoding.class) (也尝试了rc.register(org.glassfish.jersey.message.GZipEncoder.class);) 从mvn exec:java开始 使用curl--compressed-v-o-htt
jersey-quickstart-grizzly2
原型开始
rc.register(org.glassfish.grizzly.http.GZipContentEncoding.class)代码>
(也尝试了rc.register(org.glassfish.jersey.message.GZipEncoder.class);
)
mvn exec:java开始
curl--compressed-v-o-http://localhost:8080/myapp/myresource
> GET /myapp/myresource HTTP/1.1
> User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 zlib/1.2.3.4 ...
> Host: localhost:8080
> Accept: */*
> Accept-Encoding: deflate, gzip
>
< HTTP/1.1 200 OK
< Content-Type: text/plain
< Date: Sun, 03 Nov 2013 08:07:10 GMT
< Content-Length: 7
<
* Connection #0 to host localhost left intact
* Closing connection #0
Got it!
>GET/myapp/myresource HTTP/1.1
>用户代理:curl/7.22.0(x86_64-pc-linux-gnu)libcurl/7.22.0 zlib/1.2.3.4。。。
>主机:本地主机:8080
>接受:*/*
>接受编码:deflate,gzip
>
也就是说,尽管请求中有Accept-Encoding:deflate,gzip
,但响应中没有Content-Encoding:gzip
我在这里遗漏了什么???请尝试以下代码:
HttpServer HttpServer=GrizzlyHttpServerFactory.createHttpServer(
基本URI,rc,false);
压缩配置压缩配置=
httpServer.getListener(“grizzly”).getCompressionConfig();
compressionConfig.setCompressionMode(compressionConfig.CompressionMode.ON);//模式
compressionConfig.setCompressionMinSize(1);//要压缩的最小字节数
compressionConfig.setcompressablemmetypes(“text/plain”、“text/html”);//要压缩的mime类型
httpServer.start();
您还必须注册org.glassfish.jersey.server.filter.EncodingFilter
。此示例启用deflate
和gzip
压缩:
import org.glassfish.jersey.message.DeflateEncoder;
import org.glassfish.jersey.message.GZipEncoder;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.server.filter.EncodingFilter;
...
private void enableCompression(ResourceConfig rc) {
rc.registerClasses(
EncodingFilter.class,
GZipEncoder.class,
DeflateEncoder.class);
}
此解决方案是特定于jersey的,不仅适用于Grizzly,还适用于JDK Http服务器。似乎可以做到这一点!我使用的是Grizzly 2.2.3思想,因此我没有
CompressConfig
,但是NetworkListener
上提供了相应的方法。谢谢这是我唯一需要的东西。