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.

Reply via email to