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

      • 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).
      • allowBackslash

        protected boolean allowBackslash
        If this is true the '\' character will be permitted as a path delimiter. If not specified, the default value of false will be used.
      • 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.
      • enforceEncodingInGetWriter

        protected boolean enforceEncodingInGetWriter
        If this is true then a call to Response.getWriter() if no character encoding has been specified will result in subsequent calls to Response.getCharacterEncoding() returning ISO-8859-1 and the Content-Type response header will include a charset=ISO-8859-1 component. (SRV.15.2.22.1) If not specified, the default specification compliant value of true will be used.
      • xpoweredBy

        protected boolean xpoweredBy
        Is generation of X-Powered-By response header enabled/disabled?
      • 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.
      • 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 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.
      • configuredProtocol

        protected final java.lang.String configuredProtocol
        Name of the protocol that was configured.
      • 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
      • 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
      • getAllowBackslash

        public boolean getAllowBackslash()
        Returns:
        true if backslash characters are allowed in URLs. Default value is false.
      • setAllowBackslash

        public void setAllowBackslash​(boolean allowBackslash)
        Set the allowBackslash flag.
        Parameters:
        allowBackslash - the new flag value
      • 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
      • getEnforceEncodingInGetWriter

        public boolean getEnforceEncodingInGetWriter()
        Returns:
        true if a default character encoding will be set when calling Response.getWriter()
      • setEnforceEncodingInGetWriter

        public void setEnforceEncodingInGetWriter​(boolean enforceEncodingInGetWriter)
        Set the enforceEncodingInGetWriter flag.
        Parameters:
        enforceEncodingInGetWriter - the new 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)
      • getEncodedSolidusHandling

        public java.lang.String getEncodedSolidusHandling()
      • setEncodedSolidusHandling

        public void setEncodedSolidusHandling​(java.lang.String encodedSolidusHandling)
      • 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