Package org.apache.coyote.http11
Class AbstractHttp11Protocol<S>
java.lang.Object
org.apache.coyote.AbstractProtocol<S>
org.apache.coyote.http11.AbstractHttp11Protocol<S>
- All Implemented Interfaces:
- MBeanRegistration,- ProtocolHandler
- Direct Known Subclasses:
- AbstractHttp11JsseProtocol
- 
Nested Class SummaryNested classes/interfaces inherited from class org.apache.coyote.AbstractProtocolAbstractProtocol.ConnectionHandler<S>, AbstractProtocol.RecycledProcessors
- 
Field SummaryFieldsFields inherited from class org.apache.coyote.AbstractProtocoladapter, domain, mserver, oname, processorCache, rgOname
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionvoidaddAllowedTrailerHeader(String header) voidaddSslHostConfig(SSLHostConfig sslHostConfig) Add a new SSL configuration for a virtual host.voidaddSslHostConfig(SSLHostConfig sslHostConfig, boolean replace) Add a new SSL configuration for a virtual host.voidaddUpgradeProtocol(UpgradeProtocol upgradeProtocol) Add a new protocol for used by HTTP/1.1 upgrade or ALPN.protected ProcessorCreate and configure a new Processor instance for the current protocol implementation.protected ProcessorcreateUpgradeProcessor(SocketWrapperBase<?> socket, UpgradeToken upgradeToken) voiddestroy()Destroy the protocol (optional).Find all configured SSL virtual host configurations which will be used by SNI.Return all configured upgrade protocols.booleanDeprecated.String[]protected intintintSpecifies a different (usually longer) connection timeout during data upload.booleanGet the flag that controls upload time-outs.protected AbstractEndpoint<S,?> intintintintintintReturn the maximum size of the post which will be saved during FORM or CLIENT-CERT authentication.intintgetNegotiatedProtocol(String negotiatedName) Find a suitable handler for the protocol negotiated at the network layer.protected PatterngetONameForUpgrade(String upgradeProtocol) protected StringObtain the name of the protocol, (Http, Ajp, etc.).booleanDeprecated.This will removed in Tomcat 11 onwards whereallowHostHeaderMismatchwill be hard-coded totrue.Get the string form of the regular expression that defines the User agents which should be restricted to HTTP/1.0 support.protected PatternbooleanbooleanShould application provider values for the HTTP Server header be removed.getUpgradeGroupInfo(String upgradeProtocol) getUpgradeProtocol(String upgradedName) Find a suitable handler for the protocol upgraded name specified.booleanbooleanvoidinit()Initialise the protocol.booleanbooleanisTrailerHeaderAllowed(String headerName) voidreloadSslHostConfig(String hostName) voidvoidremoveAllowedTrailerHeader(String header) voidsetAllowedTrailerHeaders(String commaSeparatedHeaders) voidsetAllowHostHeaderMismatch(boolean allowHostHeaderMismatch) Deprecated.This will removed in Tomcat 11 onwards whereallowHostHeaderMismatchwill be hard-coded tofalse.voidsetCompressibleMimeType(String valueS) voidsetCompression(String compression) voidsetCompressionMinSize(int compressionMinSize) voidsetConnectionUploadTimeout(int timeout) Set the upload timeout.voidsetContinueResponseTiming(String continueResponseTiming) voidsetDefaultSSLHostConfigName(String defaultSSLHostConfigName) voidsetDisableUploadTimeout(boolean isDisabled) Set the flag to control whether a separate connection timeout is used during upload of a request body.voidsetMaxExtensionSize(int maxExtensionSize) voidsetMaxHttpHeaderSize(int valueI) voidsetMaxHttpRequestHeaderSize(int valueI) voidsetMaxHttpResponseHeaderSize(int valueI) voidsetMaxKeepAliveRequests(int mkar) Set the maximum number of Keep-Alive requests to allow.voidsetMaxSavePostSize(int maxSavePostSize) Set the maximum size of a POST which will be buffered during FORM or CLIENT-CERT authentication.voidsetMaxSwallowSize(int maxSwallowSize) voidsetMaxTrailerSize(int maxTrailerSize) voidsetNoCompressionUserAgents(String noCompressionUserAgents) voidsetRejectIllegalHeader(boolean rejectIllegalHeader) Deprecated.This will removed in Tomcat 11 onwards whereallowHostHeaderMismatchwill be hard-coded totrue.voidsetRelaxedPathChars(String relaxedPathChars) voidsetRelaxedQueryChars(String relaxedQueryChars) voidsetRestrictedUserAgents(String restrictedUserAgents) Set restricted user agent list (which will downgrade the connector to HTTP/1.0 mode).voidsetSecure(boolean b) voidSet the server header name.voidsetServerRemoveAppProvidedValues(boolean serverRemoveAppProvidedValues) voidsetSSLEnabled(boolean SSLEnabled) voidsetUseKeepAliveResponseHeader(boolean useKeepAliveResponseHeader) voidsetUseSendfile(boolean useSendfile) booleanuseCompression(Request request, Response response) Methods inherited from class org.apache.coyote.AbstractProtocoladdWaitingProcessor, awaitConnectionsClose, closeServerSocketGraceful, getAcceptCount, getAcceptorThreadPriority, getAdapter, getAddress, getClientCertProvider, getConnectionCount, getConnectionLinger, getConnectionTimeout, getDomain, getExecutor, getGlobalRequestProcessorMBeanName, getHandler, getId, getKeepAliveTimeout, getLocalPort, getLog, getMaxConnections, getMaxHeaderCount, getMaxThreads, getMinSpareThreads, getName, getNameIndex, getNamePrefix, getObjectName, getPort, getPortOffset, getPortWithOffset, getProcessorCache, getProperty, getTcpNoDelay, getThreadPriority, getUtilityExecutor, getWaitingProcessorCount, isPaused, isSendfileSupported, pause, postDeregister, postRegister, preDeregister, preRegister, removeWaitingProcessor, resume, setAcceptCount, setAcceptorThreadPriority, setAdapter, setAddress, setClientCertProvider, setConnectionLinger, setConnectionTimeout, setExecutor, setHandler, setKeepAliveTimeout, setMaxConnections, setMaxHeaderCount, setMaxThreads, setMinSpareThreads, setPort, setPortOffset, setProcessorCache, setProperty, setTcpNoDelay, setThreadPriority, setUtilityExecutor, start, startAsyncTimeout, stop, stopAsyncTimeoutMethods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.coyote.ProtocolHandlergetDesiredBufferSize
- 
Field Details- 
sm
 
- 
- 
Constructor Details- 
AbstractHttp11Protocol
 
- 
- 
Method Details- 
initDescription copied from interface:ProtocolHandlerInitialise the protocol.- Specified by:
- initin interface- ProtocolHandler
- Overrides:
- initin class- AbstractProtocol<S>
- Throws:
- Exception- If the protocol handler fails to initialise
 
- 
destroyDescription copied from interface:ProtocolHandlerDestroy the protocol (optional).- Specified by:
- destroyin interface- ProtocolHandler
- Overrides:
- destroyin class- AbstractProtocol<S>
- Throws:
- Exception- If the protocol handler fails to destroy
 
- 
getProtocolNameDescription copied from class:AbstractProtocolObtain the name of the protocol, (Http, Ajp, etc.). Used with JMX.- Specified by:
- getProtocolNamein class- AbstractProtocol<S>
- Returns:
- the protocol name
 
- 
getEndpointOver-ridden here to make the method visible to nested classes. - Overrides:
- getEndpointin class- AbstractProtocol<S>
 
- 
getContinueResponseTiming
- 
setContinueResponseTiming
- 
getContinueResponseTimingInternal
- 
getUseKeepAliveResponseHeaderpublic boolean getUseKeepAliveResponseHeader()
- 
setUseKeepAliveResponseHeaderpublic void setUseKeepAliveResponseHeader(boolean useKeepAliveResponseHeader) 
- 
getRelaxedPathChars
- 
setRelaxedPathChars
- 
getRelaxedQueryChars
- 
setRelaxedQueryChars
- 
getAllowHostHeaderMismatchDeprecated.This will removed in Tomcat 11 onwards whereallowHostHeaderMismatchwill be hard-coded tofalse.Will Tomcat accept an HTTP 1.1 request where the host header does not agree with the host specified (if any) in the request line?- Returns:
- trueif Tomcat will allow such requests, otherwise- false
 
- 
setAllowHostHeaderMismatchDeprecated.This will removed in Tomcat 11 onwards whereallowHostHeaderMismatchwill be hard-coded tofalse.Will Tomcat accept an HTTP 1.1 request where the host header does not agree with the host specified (if any) in the request line?- Parameters:
- allowHostHeaderMismatch-- trueto allow such requests,- falseto reject them with a 400
 
- 
getRejectIllegalHeaderDeprecated.This will removed in Tomcat 11 onwards whereallowHostHeaderMismatchwill be hard-coded totrue.If an HTTP request is received that contains an illegal header name or value (e.g. the header name is not a token) will the request be rejected (with a 400 response) or will the illegal header be ignored?- Returns:
- trueif the request will be rejected or- falseif the header will be ignored
 
- 
setRejectIllegalHeaderDeprecated.This will removed in Tomcat 11 onwards whereallowHostHeaderMismatchwill be hard-coded totrue.If an HTTP request is received that contains an illegal header name or value (e.g. the header name is not a token) should the request be rejected (with a 400 response) or should the illegal header be ignored?- Parameters:
- rejectIllegalHeader-- trueto reject requests with illegal header names or values,- falseto ignore the header
 
- 
getMaxSavePostSizepublic int getMaxSavePostSize()Return the maximum size of the post which will be saved during FORM or CLIENT-CERT authentication.- Returns:
- The size in bytes
 
- 
setMaxSavePostSizepublic void setMaxSavePostSize(int maxSavePostSize) Set the maximum size of a POST which will be buffered during FORM or CLIENT-CERT authentication. When a POST is received where the security constraints require a client certificate, the POST body needs to be buffered while an SSL handshake takes place to obtain the certificate. A similar buffering is required during FORM auth.- Parameters:
- maxSavePostSize- The maximum size POST body to buffer in bytes
 
- 
getMaxHttpHeaderSizepublic int getMaxHttpHeaderSize()
- 
setMaxHttpHeaderSizepublic void setMaxHttpHeaderSize(int valueI) 
- 
getMaxHttpRequestHeaderSizepublic int getMaxHttpRequestHeaderSize()
- 
setMaxHttpRequestHeaderSizepublic void setMaxHttpRequestHeaderSize(int valueI) 
- 
getMaxHttpResponseHeaderSizepublic int getMaxHttpResponseHeaderSize()
- 
setMaxHttpResponseHeaderSizepublic void setMaxHttpResponseHeaderSize(int valueI) 
- 
getConnectionUploadTimeoutpublic int getConnectionUploadTimeout()Specifies a different (usually longer) connection timeout during data upload. Default is 5 minutes as in Apache HTTPD server.- Returns:
- The timeout in milliseconds
 
- 
setConnectionUploadTimeoutpublic void setConnectionUploadTimeout(int timeout) Set the upload timeout.- Parameters:
- timeout- Upload timeout in milliseconds
 
- 
getDisableUploadTimeoutpublic boolean getDisableUploadTimeout()Get the flag that controls upload time-outs. If true, the connectionUploadTimeout will be ignored and the regular socket timeout will be used for the full duration of the connection.- Returns:
- trueif the separate upload timeout is disabled
 
- 
setDisableUploadTimeoutpublic void setDisableUploadTimeout(boolean isDisabled) Set the flag to control whether a separate connection timeout is used during upload of a request body.- Parameters:
- isDisabled-- trueif the separate upload timeout should be disabled
 
- 
setCompression
- 
getCompression
- 
getCompressionLevelprotected int getCompressionLevel()
- 
getNoCompressionUserAgents
- 
getNoCompressionUserAgentsPattern
- 
setNoCompressionUserAgents
- 
getCompressibleMimeType
- 
setCompressibleMimeType
- 
getCompressibleMimeTypes
- 
getCompressionMinSizepublic int getCompressionMinSize()
- 
setCompressionMinSizepublic void setCompressionMinSize(int compressionMinSize) 
- 
useCompression
- 
getRestrictedUserAgentsGet the string form of the regular expression that defines the User agents which should be restricted to HTTP/1.0 support.- Returns:
- The regular expression as a String
 
- 
getRestrictedUserAgentsPattern
- 
setRestrictedUserAgentsSet restricted user agent list (which will downgrade the connector to HTTP/1.0 mode). Regular expression as supported byPattern.- Parameters:
- restrictedUserAgents- The regular expression as supported by- Patternfor the user agents e.g. "gorilla|desesplorer|tigrus"
 
- 
getServer
- 
setServerSet the server header name.- Parameters:
- server- The new value to use for the server header
 
- 
getServerRemoveAppProvidedValuespublic boolean getServerRemoveAppProvidedValues()Should application provider values for the HTTP Server header be removed. Note that ifserveris set, any application provided value will be over-ridden.- Returns:
- trueif application provided values should be removed, otherwise- false
 
- 
setServerRemoveAppProvidedValuespublic void setServerRemoveAppProvidedValues(boolean serverRemoveAppProvidedValues) 
- 
getMaxTrailerSizepublic int getMaxTrailerSize()
- 
setMaxTrailerSizepublic void setMaxTrailerSize(int maxTrailerSize) 
- 
getMaxExtensionSizepublic int getMaxExtensionSize()
- 
setMaxExtensionSizepublic void setMaxExtensionSize(int maxExtensionSize) 
- 
getMaxSwallowSizepublic int getMaxSwallowSize()
- 
setMaxSwallowSizepublic void setMaxSwallowSize(int maxSwallowSize) 
- 
getSecurepublic boolean getSecure()
- 
setSecurepublic void setSecure(boolean b) 
- 
setAllowedTrailerHeaders
- 
getAllowedTrailerHeadersInternal
- 
isTrailerHeaderAllowed
- 
getAllowedTrailerHeaders
- 
addAllowedTrailerHeader
- 
removeAllowedTrailerHeader
- 
addUpgradeProtocolDescription copied from interface:ProtocolHandlerAdd a new protocol for used by HTTP/1.1 upgrade or ALPN.- Parameters:
- upgradeProtocol- the protocol
 
- 
findUpgradeProtocolsDescription copied from interface:ProtocolHandlerReturn all configured upgrade protocols.- Returns:
- the protocols
 
- 
getNegotiatedProtocolDescription copied from class:AbstractProtocolFind a suitable handler for the protocol negotiated at the network layer.- Specified by:
- getNegotiatedProtocolin class- AbstractProtocol<S>
- Parameters:
- negotiatedName- The name of the requested negotiated protocol.
- Returns:
- The instance where UpgradeProtocol.getAlpnName()matches the requested protocol
 
- 
getUpgradeProtocolDescription copied from class:AbstractProtocolFind a suitable handler for the protocol upgraded name specified. This is used for direct connection protocol selection.- Specified by:
- getUpgradeProtocolin class- AbstractProtocol<S>
- Parameters:
- upgradedName- The name of the requested negotiated protocol.
- Returns:
- The instance where UpgradeProtocol.getAlpnName()matches the requested protocol
 
- 
getUpgradeGroupInfo
- 
getONameForUpgrade
- 
isSSLEnabledpublic boolean isSSLEnabled()
- 
setSSLEnabledpublic void setSSLEnabled(boolean SSLEnabled) 
- 
getUseSendfilepublic boolean getUseSendfile()
- 
setUseSendfilepublic void setUseSendfile(boolean useSendfile) 
- 
getMaxKeepAliveRequestspublic int getMaxKeepAliveRequests()- Returns:
- The maximum number of requests which can be performed over a keep-alive connection. The default is the same as for Apache HTTP Server (100).
 
- 
setMaxKeepAliveRequestspublic void setMaxKeepAliveRequests(int mkar) Set the maximum number of Keep-Alive requests to allow. This is to safeguard from DoS attacks. Setting to a negative value disables the limit.- Parameters:
- mkar- The new maximum number of Keep-Alive requests allowed
 
- 
getDefaultSSLHostConfigName
- 
setDefaultSSLHostConfigName
- 
addSslHostConfigDescription copied from interface:ProtocolHandlerAdd a new SSL configuration for a virtual host.- Parameters:
- sslHostConfig- the configuration
 
- 
addSslHostConfigDescription copied from interface:ProtocolHandlerAdd a new SSL configuration for a virtual host.- Parameters:
- sslHostConfig- the configuration
- replace- If- truereplacement of an existing configuration is permitted, otherwise any such attempted replacement will trigger an exception
 
- 
findSslHostConfigsDescription copied from interface:ProtocolHandlerFind all configured SSL virtual host configurations which will be used by SNI.- Returns:
- the configurations
 
- 
reloadSslHostConfigspublic void reloadSslHostConfigs()
- 
reloadSslHostConfig
- 
createProcessorDescription copied from class:AbstractProtocolCreate and configure a new Processor instance for the current protocol implementation.- Specified by:
- createProcessorin class- AbstractProtocol<S>
- Returns:
- A fully configured Processor instance that is ready to use
 
- 
createUpgradeProcessor- Specified by:
- createUpgradeProcessorin class- AbstractProtocol<S>
 
 
- 
allowHostHeaderMismatchwill be hard-coded tofalse.