Class Connector

All Implemented Interfaces:
MBeanRegistration, JmxEnabled, Lifecycle

public class Connector extends LifecycleMBeanBase
Implementation of a Coyote connector.
Author:
Craig R. McClanahan, Remy Maucherat
  • Field Details

    • RECYCLE_FACADES

      public static final boolean RECYCLE_FACADES
      Alternate flag to enable recycling of facades.
    • INTERNAL_EXECUTOR_NAME

      public static final String INTERNAL_EXECUTOR_NAME
      See Also:
    • service

      protected Service service
      The Service we are associated with (if any).
    • allowTrace

      protected boolean allowTrace
      Do we allow TRACE ?
    • asyncTimeout

      protected long asyncTimeout
      Default timeout for asynchronous requests (ms).
    • enableLookups

      protected boolean enableLookups
      The "enable DNS lookups" flag for this Connector.
    • xpoweredBy

      protected boolean xpoweredBy
      Is generation of X-Powered-By response header enabled/disabled?
    • port

      protected int port
      The port number on which we listen for requests.
    • proxyName

      protected String proxyName
      The server name to which we should pretend requests to this Connector were directed. This is useful when operating Tomcat behind a proxy server, so that redirects get constructed accurately. If not specified, the server name included in the Host header is used.
    • proxyPort

      protected int proxyPort
      The server port to which we should pretend requests to this Connector were directed. This is useful when operating Tomcat behind a proxy server, so that redirects get constructed accurately. If not specified, the port number specified by the port property is used.
    • discardFacades

      protected boolean discardFacades
      The flag that controls recycling of the facades of the request processing objects. If set to true the object facades will be discarded when the request is recycled. If the security manager is enabled, this setting is ignored and object facades are always discarded.
    • redirectPort

      protected int redirectPort
      The redirect port for non-SSL to SSL redirects.
    • scheme

      protected String scheme
      The request scheme that will be set on all requests received through this connector.
    • secure

      protected boolean secure
      The secure connection flag that will be set on all requests received through this connector.
    • sm

      protected static final StringManager sm
      The string manager for this package.
    • maxParameterCount

      protected int maxParameterCount
      The maximum number of parameters (GET plus POST) which will be automatically parsed by the container. 10000 by default. The default Tomcat server.xml configures a lower default of 1000. A value of less than 0 means no limit.
    • maxPostSize

      protected int maxPostSize
      Maximum size of a POST which will be automatically parsed by the container. 2 MiB by default.
    • maxSavePostSize

      protected int maxSavePostSize
      Maximum size of a POST which will be saved by the container during authentication. 4 KiB by default
    • parseBodyMethods

      protected String parseBodyMethods
      Comma-separated list of HTTP methods that will be parsed according to POST-style rules for application/x-www-form-urlencoded request bodies.
    • parseBodyMethodsSet

      protected HashSet<String> parseBodyMethodsSet
      A Set of methods determined by parseBodyMethods.
    • useIPVHosts

      protected boolean useIPVHosts
      Flag to use IP-based virtual hosting.
    • protocolHandlerClassName

      protected String protocolHandlerClassName
      Coyote Protocol handler class name. Defaults to the Coyote HTTP/1.1 protocolHandler.
    • protocolHandler

      protected final ProtocolHandler protocolHandler
      Coyote protocol handler.
    • adapter

      protected Adapter adapter
      Coyote adapter.
    • URIEncoding

      @Deprecated protected String URIEncoding
      Deprecated.
      This will be removed in 9.0.x onwards
      URI encoding.
    • URIEncodingLower

      @Deprecated protected String URIEncodingLower
      Deprecated.
      This will be removed in 9.0.x onwards
    • useBodyEncodingForURI

      protected boolean useBodyEncodingForURI
      URI encoding as body.
    • replacements

      protected static final HashMap<String,String> replacements
  • Constructor Details

    • Connector

      public Connector()
    • Connector

      public Connector(String protocol)
  • Method Details

    • getProperty

      public Object getProperty(String name)
      Return a property from the protocol handler.
      Parameters:
      name - the property name
      Returns:
      the property value
    • setProperty

      public boolean setProperty(String name, String value)
      Set a property on the protocol handler.
      Parameters:
      name - the property name
      value - the property value
      Returns:
      true if the property was successfully set
    • getAttribute

      @Deprecated public Object getAttribute(String name)
      Deprecated.
      Use getProperty(String). This will be removed in Tomcat 10 onwards.
      Return a property from the protocol handler.
      Parameters:
      name - the property name
      Returns:
      the property value
    • setAttribute

      @Deprecated public void setAttribute(String name, Object value)
      Deprecated.
      Use setProperty(String, String). This will be removed in Tomcat 10 onwards.
      Set a property on the protocol handler.
      Parameters:
      name - the property name
      value - the property value
    • getService

      public Service getService()
      Returns:
      the Service with which we are associated (if any).
    • setService

      public void setService(Service service)
      Set the Service with which we are associated (if any).
      Parameters:
      service - The service that owns this Engine
    • getAllowTrace

      public boolean getAllowTrace()
      Returns:
      true if the TRACE method is allowed. Default value is false.
    • setAllowTrace

      public void setAllowTrace(boolean allowTrace)
      Set the allowTrace flag, to disable or enable the TRACE HTTP method.
      Parameters:
      allowTrace - The new allowTrace flag
    • getAsyncTimeout

      public long getAsyncTimeout()
      Returns:
      the default timeout for async requests in ms.
    • setAsyncTimeout

      public void setAsyncTimeout(long asyncTimeout)
      Set the default timeout for async requests.
      Parameters:
      asyncTimeout - The new timeout in ms.
    • getDiscardFacades

      public boolean getDiscardFacades()
      Returns:
      true if the object facades are discarded, either when the discardFacades value is true or when the security manager is enabled.
    • setDiscardFacades

      public void setDiscardFacades(boolean discardFacades)
      Set the recycling strategy for the object facades.
      Parameters:
      discardFacades - the new value of the flag
    • getEnableLookups

      public boolean getEnableLookups()
      Returns:
      the "enable DNS lookups" flag.
    • setEnableLookups

      public void setEnableLookups(boolean enableLookups)
      Set the "enable DNS lookups" flag.
      Parameters:
      enableLookups - The new "enable DNS lookups" flag value
    • getMaxCookieCount

      public int getMaxCookieCount()
    • setMaxCookieCount

      public void setMaxCookieCount(int maxCookieCount)
    • getMaxParameterCount

      public int getMaxParameterCount()
      Returns:
      the maximum number of parameters (GET plus POST) that will be automatically parsed by the container. A value of less than 0 means no limit.
    • setMaxParameterCount

      public void setMaxParameterCount(int maxParameterCount)
      Set the maximum number of parameters (GET plus POST) that will be automatically parsed by the container. A value of less than 0 means no limit.
      Parameters:
      maxParameterCount - The new setting
    • getMaxPostSize

      public int getMaxPostSize()
      Returns:
      the maximum size of a POST which will be automatically parsed by the container.
    • setMaxPostSize

      public void setMaxPostSize(int maxPostSize)
      Set the maximum size of a POST which will be automatically parsed by the container.
      Parameters:
      maxPostSize - The new maximum size in bytes of a POST which will be automatically parsed by the container
    • getMaxSavePostSize

      public int getMaxSavePostSize()
      Returns:
      the maximum size of a POST which will be saved by the container during authentication.
    • setMaxSavePostSize

      public void setMaxSavePostSize(int maxSavePostSize)
      Set the maximum size of a POST which will be saved by the container during authentication.
      Parameters:
      maxSavePostSize - The new maximum size in bytes of a POST which will be saved by the container during authentication.
    • getParseBodyMethods

      public String getParseBodyMethods()
      Returns:
      the HTTP methods which will support body parameters parsing
    • setParseBodyMethods

      public void setParseBodyMethods(String methods)
      Set list of HTTP methods which should allow body parameter parsing. This defaults to POST.
      Parameters:
      methods - Comma separated list of HTTP method names
    • isParseBodyMethod

      protected boolean isParseBodyMethod(String method)
    • getPort

      public int getPort()
      Returns:
      the port number on which this connector is configured to listen for requests. The special value of 0 means select a random free port when the socket is bound.
    • setPort

      public void setPort(int port)
      Set the port number on which we listen for requests.
      Parameters:
      port - The new port number
    • getPortOffset

      public int getPortOffset()
    • setPortOffset

      public void setPortOffset(int portOffset)
    • getPortWithOffset

      public int getPortWithOffset()
    • getLocalPort

      public int getLocalPort()
      Returns:
      the port number on which this connector is listening to requests. If the special value for getPort() of zero is used then this method will report the actual port bound.
    • getProtocol

      public String getProtocol()
      Returns:
      the Coyote protocol handler in use.
    • setProtocol

      @Deprecated public void setProtocol(String protocol)
      Deprecated.
      Will be removed in Tomcat 9. Protocol must be configured via the constructor
      Set the Coyote protocol which will be used by the connector.
      Parameters:
      protocol - The Coyote protocol name
    • getProtocolHandlerClassName

      public String getProtocolHandlerClassName()
      Returns:
      the class name of the Coyote protocol handler in use.
    • setProtocolHandlerClassName

      @Deprecated public void setProtocolHandlerClassName(String protocolHandlerClassName)
      Deprecated.
      Will be removed in Tomcat 9. Protocol must be configured via the constructor
      Set the class name of the Coyote protocol handler which will be used by the connector.
      Parameters:
      protocolHandlerClassName - The new class name
    • getProtocolHandler

      public ProtocolHandler getProtocolHandler()
      Returns:
      the protocol handler associated with the connector.
    • getProxyName

      public String getProxyName()
      Returns:
      the proxy server name for this Connector.
    • setProxyName

      public void setProxyName(String proxyName)
      Set the proxy server name for this Connector.
      Parameters:
      proxyName - The new proxy server name
    • getProxyPort

      public int getProxyPort()
      Returns:
      the proxy server port for this Connector.
    • setProxyPort

      public void setProxyPort(int proxyPort)
      Set the proxy server port for this Connector.
      Parameters:
      proxyPort - The new proxy server port
    • getRedirectPort

      public int getRedirectPort()
      Returns:
      the port number to which a request should be redirected if it comes in on a non-SSL port and is subject to a security constraint with a transport guarantee that requires SSL.
    • setRedirectPort

      public void setRedirectPort(int redirectPort)
      Set the redirect port number.
      Parameters:
      redirectPort - The redirect port number (non-SSL to SSL)
    • getRedirectPortWithOffset

      public int getRedirectPortWithOffset()
    • getScheme

      public String getScheme()
      Returns:
      the scheme that will be assigned to requests received through this connector. Default value is "http".
    • setScheme

      public void setScheme(String scheme)
      Set the scheme that will be assigned to requests received through this connector.
      Parameters:
      scheme - The new scheme
    • getSecure

      public boolean getSecure()
      Returns:
      the secure connection flag that will be assigned to requests received through this connector. Default value is "false".
    • setSecure

      public void setSecure(boolean secure)
      Set the secure connection flag that will be assigned to requests received through this connector.
      Parameters:
      secure - The new secure connection flag
    • getURIEncoding

      public String getURIEncoding()
      Returns:
      the name of character encoding to be used for the URI using the original case.
    • getURIEncodingLower

      @Deprecated public String getURIEncodingLower()
      Deprecated.
      This will be removed in 9.0.x onwards
      Returns:
      the character encoding to be used for the URI using lower case.
    • getURICharset

      public Charset getURICharset()
      Returns:
      The Charset to use to convert raw URI bytes (after %nn decoding) to characters. This will never be null
    • setURIEncoding

      public void setURIEncoding(String URIEncoding)
      Set the URI encoding to be used for the URI.
      Parameters:
      URIEncoding - The new URI character encoding.
    • getUseBodyEncodingForURI

      public boolean getUseBodyEncodingForURI()
      Returns:
      the true if the entity body encoding should be used for the URI.
    • setUseBodyEncodingForURI

      public void setUseBodyEncodingForURI(boolean useBodyEncodingForURI)
      Set if the entity body encoding should be used for the URI.
      Parameters:
      useBodyEncodingForURI - The new value for the flag.
    • getXpoweredBy

      public boolean getXpoweredBy()
      Indicates whether the generation of an X-Powered-By response header for Servlet-generated responses is enabled or disabled for this Connector.
      Returns:
      true if generation of X-Powered-By response header is enabled, false otherwise
    • setXpoweredBy

      public void setXpoweredBy(boolean xpoweredBy)
      Enables or disables the generation of an X-Powered-By header (with value Servlet/2.5) for all servlet-generated responses returned by this Connector.
      Parameters:
      xpoweredBy - true if generation of X-Powered-By response header is to be enabled, false otherwise
    • setUseIPVHosts

      public void setUseIPVHosts(boolean useIPVHosts)
      Enable the use of IP-based virtual hosting.
      Parameters:
      useIPVHosts - true if Hosts are identified by IP, false if Hosts are identified by name.
    • getUseIPVHosts

      public boolean getUseIPVHosts()
      Test if IP-based virtual hosting is enabled.
      Returns:
      true if IP vhosts are enabled
    • getExecutorName

      public String getExecutorName()
    • addSslHostConfig

      public void addSslHostConfig(SSLHostConfig sslHostConfig)
    • findSslHostConfigs

      public SSLHostConfig[] findSslHostConfigs()
    • addUpgradeProtocol

      public void addUpgradeProtocol(UpgradeProtocol upgradeProtocol)
    • findUpgradeProtocols

      public UpgradeProtocol[] findUpgradeProtocols()
    • getEncodedSolidusHandling

      public String getEncodedSolidusHandling()
    • setEncodedSolidusHandling

      public void setEncodedSolidusHandling(String encodedSolidusHandling)
    • getEncodedSolidusHandlingInternal

      public EncodedSolidusHandling getEncodedSolidusHandlingInternal()
    • createRequest

      public Request createRequest()
      Create (or allocate) and return a Request object suitable for specifying the contents of a Request to the responsible Container.
      Returns:
      a new Servlet request object
    • createResponse

      public Response createResponse()
      Create (or allocate) and return a Response object suitable for receiving the contents of a Response from the responsible Container.
      Returns:
      a new Servlet response object
    • createObjectNameKeyProperties

      protected String createObjectNameKeyProperties(String type)
    • pause

      public void pause()
      Pause the connector.
    • resume

      public void resume()
      Resume the connector.
    • initInternal

      protected void initInternal() throws LifecycleException
      Description copied from class: LifecycleMBeanBase
      Sub-classes wishing to perform additional initialization should override this method, ensuring that super.initInternal() is the first call in the overriding method.
      Overrides:
      initInternal in class LifecycleMBeanBase
      Throws:
      LifecycleException - If the initialisation fails
    • startInternal

      protected void startInternal() throws LifecycleException
      Begin processing requests via this Connector.
      Specified by:
      startInternal in class LifecycleBase
      Throws:
      LifecycleException - if a fatal startup error occurs
    • stopInternal

      protected void stopInternal() throws LifecycleException
      Terminate processing requests via this Connector.
      Specified by:
      stopInternal in class LifecycleBase
      Throws:
      LifecycleException - if a fatal shutdown error occurs
    • destroyInternal

      protected void destroyInternal() throws LifecycleException
      Description copied from class: LifecycleMBeanBase
      Sub-classes wishing to perform additional clean-up should override this method, ensuring that super.destroyInternal() is the last call in the overriding method.
      Overrides:
      destroyInternal in class LifecycleMBeanBase
      Throws:
      LifecycleException - If the destruction fails
    • toString

      public String toString()
      Provide a useful toString() implementation as it may be used when logging Lifecycle errors to identify the component.
      Overrides:
      toString in class Object
    • getDomainInternal

      protected String getDomainInternal()
      Description copied from class: LifecycleMBeanBase
      Method implemented by sub-classes to identify the domain in which MBeans should be registered.
      Specified by:
      getDomainInternal in class LifecycleMBeanBase
      Returns:
      The name of the domain to use to register MBeans.
    • getObjectNameKeyProperties

      protected String getObjectNameKeyProperties()
      Description copied from class: LifecycleMBeanBase
      Allow sub-classes to specify the key properties component of the ObjectName that will be used to register this component.
      Specified by:
      getObjectNameKeyProperties in class LifecycleMBeanBase
      Returns:
      The string representation of the key properties component of the desired ObjectName