Jersey hizmetimde gzip kodlamasını etkinleştiremiyorum. Bu denedim budur: Jersey'de GZIP kodlaması 2/Grizzly
- Getting Started Guide den
jersey-quickstart-grizzly2
arketip ile yola çıkıldı. Eklenen (aynı zamanda
rc.register(org.glassfish.jersey.message.GZipEncoder.class);
çalıştık)curl --compressed -v -o - http://localhost:8080/myapp/myresource
sonuç ile test edilmiştir mvn exec:java
ile başladı, aşağıdaki
olan rc.register(org.glassfish.grizzly.http.GZipContentEncoding.class);
:
> 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!
Bu nedenle, Accept-Encoding: deflate, gzip
isteğine rağmen yanıtta Content-Encoding: gzip
yoktur.
Burada neyim eksik? Siz de org.glassfish.jersey.server.filter.EncodingFilter
kaydetmek zorunda
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();
Hile yapmak gibi görünüyor! Grizzly 2.2.3'teydim, bu yüzden CompressConfig 'e sahip değildim, ancak NetworkListener'da ilgili yöntemler mevcuttu. Teşekkürler! – aioobe
evet, pls. Grizzly 2.3.5+ kullan – alexey