Support for GZIP compression of HTTP payloads
---------------------------------------------
Key: CXF-1387
URL: https://issues.apache.org/jira/browse/CXF-1387
Project: CXF
Issue Type: New Feature
Components: Core
Reporter: Ian Roberts
This patch contains a pair of interceptors I wrote to provide support for
proper GZIP compression of request and response messages. I originally started
from the configuration_interceptor sample but the code has evolved quite a long
way from there now.
There are two separate interceptors. GZIPInInterceptor looks in the
PROTOCOL_HEADERS for a Content-Encoding of "gzip", and if found it wraps the
message's InputStream with a GZIPInputStream to uncompress the payload. It
restores the original input stream at the end of processing (failure to do that
originally left me with lots of stale HTTP connections).
GZIPOutInterceptor applies gzip compression to outgoing messages whose payload
is larger than a configurable threshold (default 1kB), and sets their
Content-Encoding in the PROTOCOL_HEADERS to "gzip". Smaller messages are not
compressed as it's probably not worth the overhead.
As currently written, these interceptors are only for use on the client side
(compress the request, uncompress the response). In my services I implement
the server-side compression outside of CXF via a servlet filter
(http://sourceforge.net/projects/pjl-comp-filter), but if you think it would be
useful I can modify the interceptors to support this too - the "in" interceptor
should work as-is, the "out" one would have to be made conditional on the
Accept-Encoding header supplied in the client request.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.