aio*_*obe 10 gzip jersey grizzly
我无法在Jersey服务中激活gzip-encoding.这就是我尝试过的:
与开始了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!
Run Code Online (Sandbox Code Playgroud)
也就是说,尽管Accept-Encoding: deflate, gzip在请求中,但Content-Encoding: gzip在响应中没有.
我在这里失踪了什么?
tim*_*nen 13
你也必须注册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);
}
Run Code Online (Sandbox Code Playgroud)
这个解决方案是特定于运动衫的,不仅适用于Grizzly,也适用于JDK Http服务器.
尝试以下代码:
HttpServer httpServer = GrizzlyHttpServerFactory.createHttpServer(
BASE_URI, rc, false);
CompressionConfig compressionConfig =
httpServer.getListener("grizzly").getCompressionConfig();
compressionConfig.setCompressionMode(CompressionConfig.CompressionMode.ON); // the mode
compressionConfig.setCompressionMinSize(1); // the min amount of bytes to compress
compressionConfig.setCompressableMimeTypes("text/plain", "text/html"); // the mime types to compress
httpServer.start();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3672 次 |
| 最近记录: |