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, Http11AprProtocol

public abstract class AbstractHttp11Protocol<S> extends AbstractProtocol<S>
  • Field Details

  • Constructor Details

    • AbstractHttp11Protocol

      public AbstractHttp11Protocol(AbstractEndpoint<S,?> endpoint)
  • Method Details

    • init

      public void init() throws Exception
      Description copied from interface: ProtocolHandler
      Initialise the protocol.
      Specified by:
      init in interface ProtocolHandler
      Overrides:
      init in class AbstractProtocol<S>
      Throws:
      Exception - If the protocol handler fails to initialise
    • destroy

      public void destroy() throws Exception
      Description copied from interface: ProtocolHandler
      Destroy the protocol (optional).
      Specified by:
      destroy in interface ProtocolHandler
      Overrides:
      destroy in class AbstractProtocol<S>
      Throws:
      Exception - If the protocol handler fails to destroy
    • getProtocolName

      protected String getProtocolName()
      Description copied from class: AbstractProtocol
      Obtain the name of the protocol, (Http, Ajp, etc.). Used with JMX.
      Specified by:
      getProtocolName in class AbstractProtocol<S>
      Returns:
      the protocol name
    • getEndpoint

      protected AbstractEndpoint<S,?> getEndpoint()

      Over-ridden here to make the method visible to nested classes.

      Overrides:
      getEndpoint in class AbstractProtocol<S>
    • getContinueResponseTiming

      public String getContinueResponseTiming()
    • setContinueResponseTiming

      public void setContinueResponseTiming(String continueResponseTiming)
    • getContinueResponseTimingInternal

      public ContinueResponseTiming getContinueResponseTimingInternal()
    • getUseKeepAliveResponseHeader

      public boolean getUseKeepAliveResponseHeader()
    • setUseKeepAliveResponseHeader

      public void setUseKeepAliveResponseHeader(boolean useKeepAliveResponseHeader)
    • getRelaxedPathChars

      public String getRelaxedPathChars()
    • setRelaxedPathChars

      public void setRelaxedPathChars(String relaxedPathChars)
    • getRelaxedQueryChars

      public String getRelaxedQueryChars()
    • setRelaxedQueryChars

      public void setRelaxedQueryChars(String relaxedQueryChars)
    • getAllowHostHeaderMismatch

      @Deprecated public boolean getAllowHostHeaderMismatch()
      Deprecated.
      This will removed in Tomcat 11 onwards where allowHostHeaderMismatch will be hard-coded to false.
      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:
      true if Tomcat will allow such requests, otherwise false
    • setAllowHostHeaderMismatch

      @Deprecated public void setAllowHostHeaderMismatch(boolean allowHostHeaderMismatch)
      Deprecated.
      This will removed in Tomcat 11 onwards where allowHostHeaderMismatch will be hard-coded to false.
      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 - true to allow such requests, false to reject them with a 400
    • getRejectIllegalHeader

      @Deprecated public boolean getRejectIllegalHeader()
      Deprecated.
      This will removed in Tomcat 11 onwards where allowHostHeaderMismatch will be hard-coded to true.
      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:
      true if the request will be rejected or false if the header will be ignored
    • setRejectIllegalHeader

      @Deprecated public void setRejectIllegalHeader(boolean rejectIllegalHeader)
      Deprecated.
      This will removed in Tomcat 11 onwards where allowHostHeaderMismatch will be hard-coded to true.
      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 - true to reject requests with illegal header names or values, false to ignore the header
    • getRejectIllegalHeaderName

      @Deprecated public boolean getRejectIllegalHeaderName()
      Deprecated.
      Now an alias for getRejectIllegalHeader(). Will be removed in Tomcat 10 onwards.
      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:
      true if the request will be rejected or false if the header will be ignored
    • setRejectIllegalHeaderName

      @Deprecated public void setRejectIllegalHeaderName(boolean rejectIllegalHeaderName)
      Deprecated.
      Now an alias for setRejectIllegalHeader(boolean). Will be removed in Tomcat 10 onwards.
      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:
      rejectIllegalHeaderName - true to reject requests with illegal header names or values, false to ignore the header
    • getMaxSavePostSize

      public int getMaxSavePostSize()
      Return the maximum size of the post which will be saved during FORM or CLIENT-CERT authentication.
      Returns:
      The size in bytes
    • setMaxSavePostSize

      public 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
    • getMaxHttpHeaderSize

      public int getMaxHttpHeaderSize()
    • setMaxHttpHeaderSize

      public void setMaxHttpHeaderSize(int valueI)
    • getMaxHttpRequestHeaderSize

      public int getMaxHttpRequestHeaderSize()
    • setMaxHttpRequestHeaderSize

      public void setMaxHttpRequestHeaderSize(int valueI)
    • getMaxHttpResponseHeaderSize

      public int getMaxHttpResponseHeaderSize()
    • setMaxHttpResponseHeaderSize

      public void setMaxHttpResponseHeaderSize(int valueI)
    • getConnectionUploadTimeout

      public 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
    • setConnectionUploadTimeout

      public void setConnectionUploadTimeout(int timeout)
      Set the upload timeout.
      Parameters:
      timeout - Upload timeout in milliseconds
    • getDisableUploadTimeout

      public 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:
      true if the separate upload timeout is disabled
    • setDisableUploadTimeout

      public void setDisableUploadTimeout(boolean isDisabled)
      Set the flag to control whether a separate connection timeout is used during upload of a request body.
      Parameters:
      isDisabled - true if the separate upload timeout should be disabled
    • setCompression

      public void setCompression(String compression)
    • getCompression

      public String getCompression()
    • getCompressionLevel

      protected int getCompressionLevel()
    • getNoCompressionUserAgents

      public String getNoCompressionUserAgents()
    • getNoCompressionUserAgentsPattern

      protected Pattern getNoCompressionUserAgentsPattern()
    • setNoCompressionUserAgents

      public void setNoCompressionUserAgents(String noCompressionUserAgents)
    • getCompressibleMimeType

      public String getCompressibleMimeType()
    • setCompressibleMimeType

      public void setCompressibleMimeType(String valueS)
    • getCompressibleMimeTypes

      public String[] getCompressibleMimeTypes()
    • getCompressionMinSize

      public int getCompressionMinSize()
    • setCompressionMinSize

      public void setCompressionMinSize(int compressionMinSize)
    • getNoCompressionStrongETag

      @Deprecated public boolean getNoCompressionStrongETag()
      Deprecated.
    • setNoCompressionStrongETag

      @Deprecated public void setNoCompressionStrongETag(boolean noCompressionStrongETag)
      Deprecated.
    • useCompression

      public boolean useCompression(Request request, Response response)
    • getRestrictedUserAgents

      public String getRestrictedUserAgents()
      Get 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

      protected Pattern getRestrictedUserAgentsPattern()
    • setRestrictedUserAgents

      public void setRestrictedUserAgents(String restrictedUserAgents)
      Set restricted user agent list (which will downgrade the connector to HTTP/1.0 mode). Regular expression as supported by Pattern.
      Parameters:
      restrictedUserAgents - The regular expression as supported by Pattern for the user agents e.g. "gorilla|desesplorer|tigrus"
    • getServer

      public String getServer()
    • setServer

      public void setServer(String server)
      Set the server header name.
      Parameters:
      server - The new value to use for the server header
    • getServerRemoveAppProvidedValues

      public boolean getServerRemoveAppProvidedValues()
      Should application provider values for the HTTP Server header be removed. Note that if server is set, any application provided value will be over-ridden.
      Returns:
      true if application provided values should be removed, otherwise false
    • setServerRemoveAppProvidedValues

      public void setServerRemoveAppProvidedValues(boolean serverRemoveAppProvidedValues)
    • getMaxTrailerSize

      public int getMaxTrailerSize()
    • setMaxTrailerSize

      public void setMaxTrailerSize(int maxTrailerSize)
    • getMaxExtensionSize

      public int getMaxExtensionSize()
    • setMaxExtensionSize

      public void setMaxExtensionSize(int maxExtensionSize)
    • getMaxSwallowSize

      public int getMaxSwallowSize()
    • setMaxSwallowSize

      public void setMaxSwallowSize(int maxSwallowSize)
    • getSecure

      public boolean getSecure()
    • setSecure

      public void setSecure(boolean b)
    • setAllowedTrailerHeaders

      public void setAllowedTrailerHeaders(String commaSeparatedHeaders)
    • getAllowedTrailerHeadersInternal

      protected Set<String> getAllowedTrailerHeadersInternal()
    • getAllowedTrailerHeaders

      public String getAllowedTrailerHeaders()
    • addAllowedTrailerHeader

      public void addAllowedTrailerHeader(String header)
    • removeAllowedTrailerHeader

      public void removeAllowedTrailerHeader(String header)
    • addUpgradeProtocol

      public void addUpgradeProtocol(UpgradeProtocol upgradeProtocol)
      Description copied from interface: ProtocolHandler
      Add a new protocol for used by HTTP/1.1 upgrade or ALPN.
      Parameters:
      upgradeProtocol - the protocol
    • findUpgradeProtocols

      public UpgradeProtocol[] findUpgradeProtocols()
      Description copied from interface: ProtocolHandler
      Return all configured upgrade protocols.
      Returns:
      the protocols
    • getNegotiatedProtocol

      public UpgradeProtocol getNegotiatedProtocol(String negotiatedName)
      Description copied from class: AbstractProtocol
      Find a suitable handler for the protocol negotiated at the network layer.
      Specified by:
      getNegotiatedProtocol in class AbstractProtocol<S>
      Parameters:
      negotiatedName - The name of the requested negotiated protocol.
      Returns:
      The instance where UpgradeProtocol.getAlpnName() matches the requested protocol
    • getUpgradeProtocol

      public UpgradeProtocol getUpgradeProtocol(String upgradedName)
      Description copied from class: AbstractProtocol
      Find a suitable handler for the protocol upgraded name specified. This is used for direct connection protocol selection.
      Specified by:
      getUpgradeProtocol in class AbstractProtocol<S>
      Parameters:
      upgradedName - The name of the requested negotiated protocol.
      Returns:
      The instance where UpgradeProtocol.getAlpnName() matches the requested protocol
    • getUpgradeGroupInfo

      public UpgradeGroupInfo getUpgradeGroupInfo(String upgradeProtocol)
    • getONameForUpgrade

      public ObjectName getONameForUpgrade(String upgradeProtocol)
    • isSSLEnabled

      public boolean isSSLEnabled()
    • setSSLEnabled

      public void setSSLEnabled(boolean SSLEnabled)
    • getUseSendfile

      public boolean getUseSendfile()
    • setUseSendfile

      public void setUseSendfile(boolean useSendfile)
    • getMaxKeepAliveRequests

      public 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).
    • setMaxKeepAliveRequests

      public 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

      public String getDefaultSSLHostConfigName()
    • setDefaultSSLHostConfigName

      public void setDefaultSSLHostConfigName(String defaultSSLHostConfigName)
    • addSslHostConfig

      public void addSslHostConfig(SSLHostConfig sslHostConfig)
      Description copied from interface: ProtocolHandler
      Add a new SSL configuration for a virtual host.
      Parameters:
      sslHostConfig - the configuration
    • addSslHostConfig

      public void addSslHostConfig(SSLHostConfig sslHostConfig, boolean replace)
      Description copied from interface: ProtocolHandler
      Add a new SSL configuration for a virtual host.
      Parameters:
      sslHostConfig - the configuration
      replace - If true replacement of an existing configuration is permitted, otherwise any such attempted replacement will trigger an exception
    • findSslHostConfigs

      public SSLHostConfig[] findSslHostConfigs()
      Description copied from interface: ProtocolHandler
      Find all configured SSL virtual host configurations which will be used by SNI.
      Returns:
      the configurations
    • reloadSslHostConfigs

      public void reloadSslHostConfigs()
    • reloadSslHostConfig

      public void reloadSslHostConfig(String hostName)
    • getSslEnabledProtocols

      @Deprecated public String getSslEnabledProtocols()
      Deprecated.
    • setSslEnabledProtocols

      @Deprecated public void setSslEnabledProtocols(String enabledProtocols)
      Deprecated.
    • getSSLProtocol

      @Deprecated public String getSSLProtocol()
      Deprecated.
    • setSSLProtocol

      @Deprecated public void setSSLProtocol(String sslProtocol)
      Deprecated.
    • getKeystoreFile

      @Deprecated public String getKeystoreFile()
      Deprecated.
    • setKeystoreFile

      @Deprecated public void setKeystoreFile(String keystoreFile)
      Deprecated.
    • getSSLCertificateChainFile

      @Deprecated public String getSSLCertificateChainFile()
      Deprecated.
    • setSSLCertificateChainFile

      @Deprecated public void setSSLCertificateChainFile(String certificateChainFile)
      Deprecated.
    • getSSLCertificateFile

      @Deprecated public String getSSLCertificateFile()
      Deprecated.
    • setSSLCertificateFile

      @Deprecated public void setSSLCertificateFile(String certificateFile)
      Deprecated.
    • getSSLCertificateKeyFile

      @Deprecated public String getSSLCertificateKeyFile()
      Deprecated.
    • setSSLCertificateKeyFile

      @Deprecated public void setSSLCertificateKeyFile(String certificateKeyFile)
      Deprecated.
    • getAlgorithm

      @Deprecated public String getAlgorithm()
      Deprecated.
    • setAlgorithm

      @Deprecated public void setAlgorithm(String keyManagerAlgorithm)
      Deprecated.
    • getClientAuth

      @Deprecated public String getClientAuth()
      Deprecated.
    • setClientAuth

      @Deprecated public void setClientAuth(String certificateVerification)
      Deprecated.
    • getSSLVerifyClient

      @Deprecated public String getSSLVerifyClient()
      Deprecated.
    • setSSLVerifyClient

      @Deprecated public void setSSLVerifyClient(String certificateVerification)
      Deprecated.
    • getTrustMaxCertLength

      @Deprecated public int getTrustMaxCertLength()
      Deprecated.
    • setTrustMaxCertLength

      @Deprecated public void setTrustMaxCertLength(int certificateVerificationDepth)
      Deprecated.
    • getSSLVerifyDepth

      @Deprecated public int getSSLVerifyDepth()
      Deprecated.
    • setSSLVerifyDepth

      @Deprecated public void setSSLVerifyDepth(int certificateVerificationDepth)
      Deprecated.
    • getUseServerCipherSuitesOrder

      @Deprecated public boolean getUseServerCipherSuitesOrder()
      Deprecated.
    • setUseServerCipherSuitesOrder

      @Deprecated public void setUseServerCipherSuitesOrder(boolean honorCipherOrder)
      Deprecated.
    • getSSLHonorCipherOrder

      @Deprecated public boolean getSSLHonorCipherOrder()
      Deprecated.
    • setSSLHonorCipherOrder

      @Deprecated public void setSSLHonorCipherOrder(boolean honorCipherOrder)
      Deprecated.
    • getCiphers

      @Deprecated public String getCiphers()
      Deprecated.
    • setCiphers

      @Deprecated public void setCiphers(String ciphers)
      Deprecated.
    • getSSLCipherSuite

      @Deprecated public String getSSLCipherSuite()
      Deprecated.
    • setSSLCipherSuite

      @Deprecated public void setSSLCipherSuite(String ciphers)
      Deprecated.
    • getKeystorePass

      @Deprecated public String getKeystorePass()
      Deprecated.
    • setKeystorePass

      @Deprecated public void setKeystorePass(String certificateKeystorePassword)
      Deprecated.
    • getKeystorePassFile

      @Deprecated public String getKeystorePassFile()
      Deprecated.
    • setKeystorePassFile

      @Deprecated public void setKeystorePassFile(String certificateKeystorePasswordFile)
      Deprecated.
    • getKeyPass

      @Deprecated public String getKeyPass()
      Deprecated.
    • setKeyPass

      @Deprecated public void setKeyPass(String certificateKeyPassword)
      Deprecated.
    • getKeyPassFile

      @Deprecated public String getKeyPassFile()
      Deprecated.
    • setKeyPassFile

      @Deprecated public void setKeyPassFile(String certificateKeyPasswordFile)
      Deprecated.
    • getSSLPassword

      @Deprecated public String getSSLPassword()
      Deprecated.
    • setSSLPassword

      @Deprecated public void setSSLPassword(String certificateKeyPassword)
      Deprecated.
    • getSSLPasswordFile

      @Deprecated public String getSSLPasswordFile()
      Deprecated.
    • setSSLPasswordFile

      @Deprecated public void setSSLPasswordFile(String certificateKeyPasswordFile)
      Deprecated.
    • getCrlFile

      @Deprecated public String getCrlFile()
      Deprecated.
    • setCrlFile

      @Deprecated public void setCrlFile(String certificateRevocationListFile)
      Deprecated.
    • getSSLCARevocationFile

      @Deprecated public String getSSLCARevocationFile()
      Deprecated.
    • setSSLCARevocationFile

      @Deprecated public void setSSLCARevocationFile(String certificateRevocationListFile)
      Deprecated.
    • getSSLCARevocationPath

      @Deprecated public String getSSLCARevocationPath()
      Deprecated.
    • setSSLCARevocationPath

      @Deprecated public void setSSLCARevocationPath(String certificateRevocationListPath)
      Deprecated.
    • getKeystoreType

      @Deprecated public String getKeystoreType()
      Deprecated.
    • setKeystoreType

      @Deprecated public void setKeystoreType(String certificateKeystoreType)
      Deprecated.
    • getKeystoreProvider

      @Deprecated public String getKeystoreProvider()
      Deprecated.
    • setKeystoreProvider

      @Deprecated public void setKeystoreProvider(String certificateKeystoreProvider)
      Deprecated.
    • getKeyAlias

      @Deprecated public String getKeyAlias()
      Deprecated.
    • setKeyAlias

      @Deprecated public void setKeyAlias(String certificateKeyAlias)
      Deprecated.
    • getTruststoreAlgorithm

      @Deprecated public String getTruststoreAlgorithm()
      Deprecated.
    • setTruststoreAlgorithm

      @Deprecated public void setTruststoreAlgorithm(String truststoreAlgorithm)
      Deprecated.
    • getTruststoreFile

      @Deprecated public String getTruststoreFile()
      Deprecated.
    • setTruststoreFile

      @Deprecated public void setTruststoreFile(String truststoreFile)
      Deprecated.
    • getTruststorePass

      @Deprecated public String getTruststorePass()
      Deprecated.
    • setTruststorePass

      @Deprecated public void setTruststorePass(String truststorePassword)
      Deprecated.
    • getTruststoreType

      @Deprecated public String getTruststoreType()
      Deprecated.
    • setTruststoreType

      @Deprecated public void setTruststoreType(String truststoreType)
      Deprecated.
    • getTruststoreProvider

      @Deprecated public String getTruststoreProvider()
      Deprecated.
    • setTruststoreProvider

      @Deprecated public void setTruststoreProvider(String truststoreProvider)
      Deprecated.
    • getSslProtocol

      @Deprecated public String getSslProtocol()
      Deprecated.
    • setSslProtocol

      @Deprecated public void setSslProtocol(String sslProtocol)
      Deprecated.
    • getSessionCacheSize

      @Deprecated public int getSessionCacheSize()
      Deprecated.
    • setSessionCacheSize

      @Deprecated public void setSessionCacheSize(int sessionCacheSize)
      Deprecated.
    • getSessionTimeout

      @Deprecated public int getSessionTimeout()
      Deprecated.
    • setSessionTimeout

      @Deprecated public void setSessionTimeout(int sessionTimeout)
      Deprecated.
    • getSSLCACertificatePath

      @Deprecated public String getSSLCACertificatePath()
      Deprecated.
    • setSSLCACertificatePath

      @Deprecated public void setSSLCACertificatePath(String caCertificatePath)
      Deprecated.
    • getSSLCACertificateFile

      @Deprecated public String getSSLCACertificateFile()
      Deprecated.
    • setSSLCACertificateFile

      @Deprecated public void setSSLCACertificateFile(String caCertificateFile)
      Deprecated.
    • getSSLDisableCompression

      @Deprecated public boolean getSSLDisableCompression()
      Deprecated.
    • setSSLDisableCompression

      @Deprecated public void setSSLDisableCompression(boolean disableCompression)
      Deprecated.
    • getSSLDisableSessionTickets

      @Deprecated public boolean getSSLDisableSessionTickets()
      Deprecated.
    • setSSLDisableSessionTickets

      @Deprecated public void setSSLDisableSessionTickets(boolean disableSessionTickets)
      Deprecated.
    • getTrustManagerClassName

      @Deprecated public String getTrustManagerClassName()
      Deprecated.
    • setTrustManagerClassName

      @Deprecated public void setTrustManagerClassName(String trustManagerClassName)
      Deprecated.
    • createProcessor

      protected Processor createProcessor()
      Description copied from class: AbstractProtocol
      Create and configure a new Processor instance for the current protocol implementation.
      Specified by:
      createProcessor in class AbstractProtocol<S>
      Returns:
      A fully configured Processor instance that is ready to use
    • createUpgradeProcessor

      protected Processor createUpgradeProcessor(SocketWrapperBase<?> socket, UpgradeToken upgradeToken)
      Specified by:
      createUpgradeProcessor in class AbstractProtocol<S>