Class GzipHandler
- All Implemented Interfaces:
Handler
,Handler.Container
,GzipFactory
,Handler.Singleton
,Request.Handler
,Container
,Destroyable
,Dumpable
,Dumpable.DumpableContainer
,LifeCycle
,Invocable
-
Nested Class Summary
Nested classes/interfaces inherited from class org.eclipse.jetty.server.Handler.Abstract
Handler.Abstract.NonBlocking
Nested classes/interfaces inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
AbstractLifeCycle.AbstractLifeCycleListener, AbstractLifeCycle.StopException
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Container
Container.InheritedListener, Container.Listener
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Dumpable
Dumpable.DumpableContainer
Nested classes/interfaces inherited from interface org.eclipse.jetty.server.Handler
Handler.Abstract, Handler.AbstractContainer, Handler.Collection, Handler.Container, Handler.Sequence, Handler.Singleton, Handler.Wrapper
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.thread.Invocable
Invocable.Callable, Invocable.InvocationType, Invocable.ReadyTask, Invocable.Task
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.LifeCycle
LifeCycle.Listener
Nested classes/interfaces inherited from interface org.eclipse.jetty.server.Request.Handler
Request.Handler.AbortException
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
static final int
static final String
static final String
static final String
Fields inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
FAILED, STARTED, STARTING, STOPPED, STOPPING
Fields inherited from interface org.eclipse.jetty.util.thread.Invocable
__nonBlocking, NOOP
-
Constructor Summary
ConstructorDescriptionInstantiates a new GzipHandler.GzipHandler
(Handler handler) Instantiates a new GzipHandler. -
Method Summary
Modifier and TypeMethodDescriptionvoid
addExcludedInflationPaths
(String... pathspecs) Adds excluded Path Specs for request filtering on request inflation.void
addExcludedMethods
(String... methods) Add excluded to the HTTP methods filtering.void
addExcludedMimeTypes
(String... types) Adds excluded MIME types for response filtering.void
addExcludedPaths
(String... pathspecs) Adds excluded Path Specs for request filtering.void
addIncludedInflationPaths
(String... pathspecs) Add included Path Specs for filtering on request inflation.void
addIncludedMethods
(String... methods) Adds included HTTP Methods (eg: POST, PATCH, DELETE) for filtering.void
addIncludedMimeTypes
(String... types) Add included MIME types for response filteringvoid
addIncludedPaths
(String... pathspecs) Add included Path Specs for filtering.protected void
doStart()
Starts the managed lifecycle beans in the order they were added.protected void
doStop()
Stops the managed lifecycle beans in the reverse order they were added.getDeflaterEntry
(Request request, long contentLength) Get the DeflaterPool being used.String[]
Get the current filter list of excluded Path Specs for request inflation.Get the excluded filter list of HTTP methods in CSV formatString[]
Get the current filter list of excluded HTTP methodsString[]
Get the current filter list of excluded MIME typesString[]
Get the current filter list of excluded Path SpecsString[]
Get the current filter list of included Path Specs for request inflation.Get the included filter list of HTTP methods in CSV formatString[]
Get the current filter list of included HTTP MethodsString[]
Get the current filter list of included MIME typesString[]
Get the current filter list of included Path Specsint
Get the size (in bytes) of theInflater
buffer used to inflate compressed requests.Get the InflaterPool being used.int
Get the minimum size, in bytes, that a responseContent-Length
must be before compression will trigger.getVary()
boolean
Invoked to handle the passed HTTP request and response.boolean
isMimeTypeDeflatable
(String mimetype) Test if the provided MIME type is allowed based on the MIME type filters.protected boolean
isMimeTypeDeflatable
(MimeTypes mimeTypes, String requestURI) protected boolean
isPathDeflatable
(String requestURI) Test if the provided Request URI is allowed based on the Path Specs filters.protected boolean
isPathInflatable
(String pathInContext) Test if the provided Request URI is allowed to be inflated based on the Path Specs filters.boolean
Is theDeflater
runningDeflater.SYNC_FLUSH
or not.void
setDeflaterPool
(DeflaterPool deflaterPool) Set the DeflaterPool to be used.void
setExcludedInflatePaths
(String... pathspecs) Set the excluded filter list of Path specs (replacing any previously set)void
setExcludedMethodList
(String csvMethods) Set the excluded filter list of HTTP Methods (replacing any previously set)void
setExcludedMethods
(String... methods) Set the excluded filter list of HTTP methods (replacing any previously set)void
setExcludedMimeTypes
(String... types) Set the excluded filter list of MIME types (replacing any previously set)void
setExcludedMimeTypesList
(String csvTypes) Set the excluded filter list of MIME types (replacing any previously set)void
setExcludedPaths
(String... pathspecs) Set the excluded filter list of Path specs (replacing any previously set)void
setIncludedInflatePaths
(String... pathspecs) Set the included filter list of Path specs (replacing any previously set)void
setIncludedMethodList
(String csvMethods) Set the included filter list of HTTP Methods (replacing any previously set)void
setIncludedMethods
(String... methods) Set the included filter list of HTTP methods (replacing any previously set)void
setIncludedMimeTypes
(String... types) Set the included filter list of MIME types (replacing any previously set)void
setIncludedMimeTypesList
(String csvTypes) Set the included filter list of MIME types (replacing any previously set)void
setIncludedPaths
(String... pathspecs) Set the included filter list of Path specs (replacing any previously set)void
setInflateBufferSize
(int size) Set the size (in bytes) of theInflater
buffer used to inflate comrpessed requests.void
setInflaterPool
(InflaterPool inflaterPool) Set the InflaterPool to be used.void
setMinGzipSize
(int minGzipSize) Set the minimum response size to trigger dynamic compression.void
setSyncFlush
(boolean syncFlush) Set theDeflater
flush mode to use.void
toString()
Methods inherited from class org.eclipse.jetty.server.Handler.Wrapper
getHandler, getInvocationType, setHandler
Methods inherited from class org.eclipse.jetty.server.Handler.AbstractContainer
findContainerOf, getDescendant, getDescendants, isDynamic, setDynamic, setServer
Methods inherited from class org.eclipse.jetty.server.Handler.Abstract
destroy, getServer
Methods inherited from class org.eclipse.jetty.util.component.ContainerLifeCycle
addBean, addBean, addEventListener, addManaged, contains, dump, dump, dump, dumpObjects, dumpStdErr, getBean, getBeans, getBeans, getContainedBeans, getContainedBeans, installBean, installBean, isAuto, isManaged, isUnmanaged, manage, removeBean, removeBeans, removeEventListener, setBeans, start, stop, unmanage, updateBean, updateBean, updateBeans, updateBeans
Methods inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
getEventListeners, getState, getState, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, setEventListeners, start, stop
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.eclipse.jetty.util.component.Container
getCachedBeans, getEventListeners
Methods inherited from interface org.eclipse.jetty.util.component.Destroyable
destroy
Methods inherited from interface org.eclipse.jetty.util.component.Dumpable.DumpableContainer
isDumpable
Methods inherited from interface org.eclipse.jetty.server.Handler.Container
getContainer, getDescendant, getDescendants, getDescendants
Methods inherited from interface org.eclipse.jetty.server.Handler.Singleton
getHandlers, getTail, insertHandler, setHandler
Methods inherited from interface org.eclipse.jetty.util.component.LifeCycle
addEventListener, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeEventListener, start, stop
-
Field Details
-
GZIP_HANDLER_ETAGS
- See Also:
-
GZIP
- See Also:
-
DEFLATE
- See Also:
-
DEFAULT_MIN_GZIP_SIZE
public static final int DEFAULT_MIN_GZIP_SIZE- See Also:
-
BREAK_EVEN_GZIP_SIZE
public static final int BREAK_EVEN_GZIP_SIZE- See Also:
-
-
Constructor Details
-
GzipHandler
public GzipHandler()Instantiates a new GzipHandler. -
GzipHandler
Instantiates a new GzipHandler.- Parameters:
handler
- the handler to wrap
-
-
Method Details
-
doStart
Description copied from class:ContainerLifeCycle
Starts the managed lifecycle beans in the order they were added.- Overrides:
doStart
in classHandler.Abstract
- Throws:
AbstractLifeCycle.StopException
- If thrown, the lifecycle will immediately be stopped.Exception
- If there was a problem starting. Will cause a transition to FAILED state
-
doStop
Description copied from class:ContainerLifeCycle
Stops the managed lifecycle beans in the reverse order they were added.- Overrides:
doStop
in classHandler.Abstract
- Throws:
Exception
- If there was a problem stopping. Will cause a transition to FAILED state
-
getVary
- Returns:
- The VARY field to use.
-
setVary
- Parameters:
vary
- The VARY field to use. It if is not an instance ofPreEncodedHttpField
, then it will be converted to one.
-
addExcludedMethods
Add excluded to the HTTP methods filtering.- Parameters:
methods
- The methods to exclude in compression- See Also:
-
addExcludedMimeTypes
Adds excluded MIME types for response filtering.Deprecation Warning: For backward compatibility the MIME types parameters may be comma separated strings, but this will not be supported in future versions of Jetty.
- Parameters:
types
- The mime types to exclude (without charset or other parameters).- See Also:
-
addExcludedPaths
Adds excluded Path Specs for request filtering.There are 2 syntaxes supported, Servlet
url-pattern
based, and Regex based. This means that the initial characters on the path spec line are very strict, and determine the behavior of the path matching.- If the spec starts with
'^'
the spec is assumed to be a regex based path spec and will match with normal Java regex rules. - If the spec starts with
'/'
then spec is assumed to be a Servlet url-pattern rules path spec for either an exact match or prefix based match. - If the spec starts with
'*.'
then spec is assumed to be a Servlet url-pattern rules path spec for a suffix based match. - All other syntaxes are unsupported
Note: inclusion takes precedence over exclude.
- Parameters:
pathspecs
- Path specs (as per servlet spec) to exclude. If a ServletContext is available, the paths are relative to the context path, otherwise they are absolute.
For backward compatibility the pathspecs may be comma separated strings, but this will not be supported in future versions.- See Also:
- If the spec starts with
-
addExcludedInflationPaths
Adds excluded Path Specs for request filtering on request inflation.There are 2 syntaxes supported, Servlet
url-pattern
based, and Regex based. This means that the initial characters on the path spec line are very strict, and determine the behavior of the path matching.- If the spec starts with
'^'
the spec is assumed to be a regex based path spec and will match with normal Java regex rules. - If the spec starts with
'/'
then spec is assumed to be a Servlet url-pattern rules path spec for either an exact match or prefix based match. - If the spec starts with
'*.'
then spec is assumed to be a Servlet url-pattern rules path spec for a suffix based match. - All other syntaxes are unsupported
Note: inclusion takes precedence over exclude.
- Parameters:
pathspecs
- Path specs (as per servlet spec) to exclude. If a ServletContext is available, the paths are relative to the context path, otherwise they are absolute.
For backward compatibility the pathspecs may be comma separated strings, but this will not be supported in future versions.- See Also:
- If the spec starts with
-
addIncludedMethods
Adds included HTTP Methods (eg: POST, PATCH, DELETE) for filtering.- Parameters:
methods
- The HTTP methods to include in compression.- See Also:
-
isSyncFlush
public boolean isSyncFlush()Is theDeflater
runningDeflater.SYNC_FLUSH
or not.- Returns:
- True if
Deflater.SYNC_FLUSH
is used, elseDeflater.NO_FLUSH
- See Also:
-
setSyncFlush
public void setSyncFlush(boolean syncFlush) Set theDeflater
flush mode to use.Deflater.SYNC_FLUSH
should be used if the application wishes to stream the data, but this may hurt compression performance.- Parameters:
syncFlush
- True ifDeflater.SYNC_FLUSH
is used, elseDeflater.NO_FLUSH
- See Also:
-
addIncludedMimeTypes
Add included MIME types for response filtering- Parameters:
types
- The mime types to include (without charset or other parameters) For backward compatibility the mimetypes may be comma separated strings, but this will not be supported in future versions.- See Also:
-
addIncludedPaths
Add included Path Specs for filtering.There are 2 syntaxes supported, Servlet
url-pattern
based, and Regex based. This means that the initial characters on the path spec line are very strict, and determine the behavior of the path matching.- If the spec starts with
'^'
the spec is assumed to be a regex based path spec and will match with normal Java regex rules. - If the spec starts with
'/'
then spec is assumed to be a Servlet url-pattern rules path spec for either an exact match or prefix based match. - If the spec starts with
'*.'
then spec is assumed to be a Servlet url-pattern rules path spec for a suffix based match. - All other syntaxes are unsupported
Note: inclusion takes precedence over exclusion.
- Parameters:
pathspecs
- Path specs (as per servlet spec) to include. If a ServletContext is available, the paths are relative to the context path, otherwise they are absolute
- If the spec starts with
-
addIncludedInflationPaths
Add included Path Specs for filtering on request inflation.There are 2 syntaxes supported, Servlet
url-pattern
based, and Regex based. This means that the initial characters on the path spec line are very strict, and determine the behavior of the path matching.- If the spec starts with
'^'
the spec is assumed to be a regex based path spec and will match with normal Java regex rules. - If the spec starts with
'/'
then spec is assumed to be a Servlet url-pattern rules path spec for either an exact match or prefix based match. - If the spec starts with
'*.'
then spec is assumed to be a Servlet url-pattern rules path spec for a suffix based match. - All other syntaxes are unsupported
Note: inclusion takes precedence over exclusion.
- Parameters:
pathspecs
- Path specs (as per servlet spec) to include. If a ServletContext is available, the paths are relative to the context path, otherwise they are absolute
- If the spec starts with
-
getDeflaterEntry
- Specified by:
getDeflaterEntry
in interfaceGzipFactory
-
getExcludedMethods
Get the current filter list of excluded HTTP methods- Returns:
- the filter list of excluded HTTP methods
- See Also:
-
getExcludedMimeTypes
Get the current filter list of excluded MIME types- Returns:
- the filter list of excluded MIME types
- See Also:
-
getExcludedPaths
Get the current filter list of excluded Path Specs- Returns:
- the filter list of excluded Path Specs
- See Also:
-
getExcludedInflationPaths
Get the current filter list of excluded Path Specs for request inflation.- Returns:
- the filter list of excluded Path Specs
- See Also:
-
getIncludedMethods
Get the current filter list of included HTTP Methods- Returns:
- the filter list of included HTTP methods
- See Also:
-
getIncludedMimeTypes
Get the current filter list of included MIME types- Returns:
- the filter list of included MIME types
- See Also:
-
getIncludedPaths
Get the current filter list of included Path Specs- Returns:
- the filter list of included Path Specs
- See Also:
-
getIncludedInflationPaths
Get the current filter list of included Path Specs for request inflation.- Returns:
- the filter list of included Path Specs
- See Also:
-
getMinGzipSize
public int getMinGzipSize()Get the minimum size, in bytes, that a responseContent-Length
must be before compression will trigger.- Returns:
- minimum response size (in bytes) that triggers compression
- See Also:
-
getInflateBufferSize
public int getInflateBufferSize()Get the size (in bytes) of theInflater
buffer used to inflate compressed requests.- Returns:
- size in bytes of the buffer, or 0 for no inflation.
-
setInflateBufferSize
public void setInflateBufferSize(int size) Set the size (in bytes) of theInflater
buffer used to inflate comrpessed requests.- Parameters:
size
- size in bytes of the buffer, or 0 for no inflation.
-
handle
Description copied from interface:Request.Handler
Invoked to handle the passed HTTP request and response.
The request is accepted by returning true, then handling must be concluded by completing the passed callback. The handling may be asynchronous, i.e. this method may return true and complete the given callback later, possibly from a different thread. If this method returns false, then the callback must not be invoked and any mutation on the response reversed.
Exceptions thrown by this method may be subsequently handled by an error
Request.Handler
, if present, otherwise a default HTTP 500 error is generated and the callback completed while writing the error response.The simplest implementation is:
public boolean handle(Request request, Response response, Callback callback) { callback.succeeded(); return true; }
A HelloWorld implementation is:
public boolean handle(Request request, Response response, Callback callback) { response.write(true, ByteBuffer.wrap("Hello World\n".getBytes(StandardCharsets.UTF_8)), callback); return true; }
- Specified by:
handle
in interfaceRequest.Handler
- Overrides:
handle
in classHandler.Wrapper
- Parameters:
request
- the HTTP request to handleresponse
- the HTTP response to handlecallback
- the callback to complete when the handling is complete- Returns:
- True if and only if the request will be handled, a response generated and the callback eventually called. This may occur within the scope of the call to this method, or asynchronously some time later. If false is returned, then this method must not generate a response, nor complete the callback.
- Throws:
Exception
- if there is a failure during the handling. Catchers cannot assume that the callback will be called and thus should attempt to complete the request as if a false had been returned.- See Also:
-
isMimeTypeDeflatable
-
isMimeTypeDeflatable
Test if the provided MIME type is allowed based on the MIME type filters.- Specified by:
isMimeTypeDeflatable
in interfaceGzipFactory
- Parameters:
mimetype
- the MIME type to test- Returns:
- true if allowed, false otherwise
-
isPathDeflatable
Test if the provided Request URI is allowed based on the Path Specs filters.- Parameters:
requestURI
- the request uri- Returns:
- whether compressing is allowed for the given the path
-
isPathInflatable
Test if the provided Request URI is allowed to be inflated based on the Path Specs filters.- Parameters:
pathInContext
- the request path in context- Returns:
- whether decompressing is allowed for the given the path.
-
setExcludedMethods
Set the excluded filter list of HTTP methods (replacing any previously set)- Parameters:
methods
- the HTTP methods to exclude- See Also:
-
setExcludedMimeTypes
Set the excluded filter list of MIME types (replacing any previously set)- Parameters:
types
- The mime types to exclude (without charset or other parameters)- See Also:
-
setExcludedMimeTypesList
Set the excluded filter list of MIME types (replacing any previously set)- Parameters:
csvTypes
- The list of mime types to exclude (without charset or other parameters), CSV format- See Also:
-
setExcludedPaths
Set the excluded filter list of Path specs (replacing any previously set)- Parameters:
pathspecs
- Path specs (as per servlet spec) to exclude. If a ServletContext is available, the paths are relative to the context path, otherwise they are absolute.- See Also:
-
setExcludedInflatePaths
Set the excluded filter list of Path specs (replacing any previously set)- Parameters:
pathspecs
- Path specs (as per servlet spec) to exclude from inflation. If a ServletContext is available, the paths are relative to the context path, otherwise they are absolute.- See Also:
-
setIncludedMethods
Set the included filter list of HTTP methods (replacing any previously set)- Parameters:
methods
- The methods to include in compression- See Also:
-
setIncludedMimeTypes
Set the included filter list of MIME types (replacing any previously set)- Parameters:
types
- The mime types to include (without charset or other parameters)- See Also:
-
setIncludedMimeTypesList
Set the included filter list of MIME types (replacing any previously set)- Parameters:
csvTypes
- The list of mime types to include (without charset or other parameters), CSV format- See Also:
-
setIncludedPaths
Set the included filter list of Path specs (replacing any previously set)- Parameters:
pathspecs
- Path specs (as per servlet spec) to include. If a ServletContext is available, the paths are relative to the context path, otherwise they are absolute- See Also:
-
setIncludedInflatePaths
Set the included filter list of Path specs (replacing any previously set)- Parameters:
pathspecs
- Path specs (as per servlet spec) to include for inflation. If a ServletContext is available, the paths are relative to the context path, otherwise they are absolute- See Also:
-
setMinGzipSize
public void setMinGzipSize(int minGzipSize) Set the minimum response size to trigger dynamic compression.Sizes below
BREAK_EVEN_GZIP_SIZE
will result a compressed response that is larger than the original data.- Parameters:
minGzipSize
- minimum response size in bytes (not allowed to be lower thenBREAK_EVEN_GZIP_SIZE
)
-
setIncludedMethodList
Set the included filter list of HTTP Methods (replacing any previously set)- Parameters:
csvMethods
- the list of methods, CSV format- See Also:
-
getIncludedMethodList
Get the included filter list of HTTP methods in CSV format- Returns:
- the included filter list of HTTP methods in CSV format
- See Also:
-
setExcludedMethodList
Set the excluded filter list of HTTP Methods (replacing any previously set)- Parameters:
csvMethods
- the list of methods, CSV format- See Also:
-
getExcludedMethodList
Get the excluded filter list of HTTP methods in CSV format- Returns:
- the excluded filter list of HTTP methods in CSV format
- See Also:
-
getDeflaterPool
Get the DeflaterPool being used. The default value of this is null before starting, but after starting if it is null it will be set to the default DeflaterPool which is stored as a bean on the server.- Returns:
- the DeflaterPool being used.
-
getInflaterPool
Get the InflaterPool being used. The default value of this is null before starting, but after starting if it is null it will be set to the default InflaterPool which is stored as a bean on the server.- Returns:
- the DeflaterPool being used.
-
setDeflaterPool
Set the DeflaterPool to be used. This should be called before starting. If this value is null when starting the default pool will be used from the server.- Parameters:
deflaterPool
- the DeflaterPool to use.
-
setInflaterPool
Set the InflaterPool to be used. This should be called before starting. If this value is null when starting the default pool will be used from the server.- Parameters:
inflaterPool
- the InflaterPool to use.
-
toString
- Overrides:
toString
in classAbstractLifeCycle
-