Class Connector

  • All Implemented Interfaces:
    javax.management.MBeanRegistration, JmxEnabled, Lifecycle

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

      • RECYCLE_FACADES

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

        public static final java.lang.String INTERNAL_EXECUTOR_NAME
        See Also:
        Constant Field Values
      • 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
      • proxyName

        protected java.lang.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.
      • redirectPort

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

        protected java.lang.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. 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. 2MB by default.
      • maxSavePostSize

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

        protected java.lang.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 java.util.HashSet<java.lang.String> parseBodyMethodsSet
        A Set of methods determined by parseBodyMethods.
      • useIPVHosts

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

        protected final java.lang.String protocolHandlerClassName
        Coyote Protocol handler class name. See Connector() for current default.
      • protocolHandler

        protected final ProtocolHandler protocolHandler
        Coyote protocol handler.
      • adapter

        protected Adapter adapter
        Coyote adapter.
      • useBodyEncodingForURI

        protected boolean useBodyEncodingForURI
        URI encoding as body.
    • Constructor Detail

      • Connector

        public Connector()
        Defaults to using HTTP/1.1 NIO implementation.
      • Connector

        public Connector​(java.lang.String protocol)
    • Method Detail

      • getProperty

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

        public boolean setProperty​(java.lang.String name,
                                   java.lang.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

        public java.lang.Object getAttribute​(java.lang.String name)
        Return a property from the protocol handler.
        Parameters:
        name - the property name
        Returns:
        the property value
      • setAttribute

        public void setAttribute​(java.lang.String name,
                                 java.lang.Object value)
        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.
      • 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 java.lang.String getParseBodyMethods()
        Returns:
        the HTTP methods which will support body parameters parsing
      • setParseBodyMethods

        public void setParseBodyMethods​(java.lang.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​(java.lang.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 java.lang.String getProtocol()
        Returns:
        the Coyote protocol handler in use.
      • getProtocolHandlerClassName

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

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

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

        public void setProxyName​(java.lang.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 java.lang.String getScheme()
        Returns:
        the scheme that will be assigned to requests received through this connector. Default value is "http".
      • setScheme

        public void setScheme​(java.lang.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 java.lang.String getURIEncoding()
        Returns:
        the name of character encoding to be used for the URI using the original case.
      • getURICharset

        public java.nio.charset.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​(java.lang.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 java.lang.String getExecutorName()
      • addSslHostConfig

        public void addSslHostConfig​(SSLHostConfig sslHostConfig)
      • findSslHostConfigs

        public SSLHostConfig[] findSslHostConfigs()
      • addUpgradeProtocol

        public void addUpgradeProtocol​(UpgradeProtocol upgradeProtocol)
      • 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 java.lang.String createObjectNameKeyProperties​(java.lang.String type)
      • pause

        public void pause()
        Pause the connector.
      • resume

        public void resume()
        Resume the connector.
      • toString

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

        protected java.lang.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 java.lang.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