org.apache.catalina.connector

## Class Connector

- java.lang.Object
- - org.apache.catalina.util.LifecycleBase
  - - org.apache.catalina.util.LifecycleMBeanBase
    - - org.apache.catalina.connector.Connector

All Implemented Interfaces:
  MBeanRegistration, Lifecycle

    public class Connector
    extends LifecycleMBeanBase

Implementation of a Coyote connector.

Author:
  Craig R. McClanahan, Remy Maucherat

### Field Summary

Fields
`protected Adapter` `adapter` Coyote adapter.
`protected boolean` `allowTrace` Do we allow TRACE ?
`protected long` `asyncTimeout` Default timeout for asynchronous requests (ms).
`protected boolean` `enableLookups` The "enable DNS lookups" flag for this Connector.
`protected static String` `info` Descriptive information about this Connector implementation.
`protected Mapper` `mapper` Mapper.
`protected MapperListener` `mapperListener` Mapper listener.
`protected int` `maxParameterCount` The maximum number of parameters (GET plus POST) which will be automatically parsed by the container. 10000 by default.
`protected int` `maxPostSize` Maximum size of a POST which will be automatically parsed by the container. 2MB by default.
`protected int` `maxSavePostSize` Maximum size of a POST which will be saved by the container during authentication. 4kB by default
`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.
`protected HashSet<String>` `parseBodyMethodsSet` A Set of methods determined by `parseBodyMethods`.
`protected int` `port` The port number on which we listen for requests.
`protected ProtocolHandler` `protocolHandler` Coyote protocol handler.
`protected String` `protocolHandlerClassName` Coyote Protocol handler class name.
`protected String` `proxyName` The server name to which we should pretend requests to this Connector were directed.
`protected int` `proxyPort` The server port to which we should pretend requests to this Connector were directed.
`static boolean` `RECYCLE_FACADES` Alternate flag to enable recycling of facades.
`protected int` `redirectPort` The redirect port for non-SSL to SSL redirects.
`protected static HashMap<String,String>` `replacements`
`protected String` `scheme` The request scheme that will be set on all requests received through this connector.
`protected boolean` `secure` The secure connection flag that will be set on all requests received through this connector.
`protected Service` `service` The `Service` we are associated with (if any).
`protected static StringManager` `sm` The string manager for this package.
`protected String` `URIEncoding` URI encoding.
`protected boolean` `useBodyEncodingForURI` URI encoding as body.
`protected boolean` `useIPVHosts` Flag to use IP-based virtual hosting.
`protected boolean` `xpoweredBy`

### Fields inherited from class org.apache.catalina.util.LifecycleMBeanBase

`mserver`

### Fields inherited from interface org.apache.catalina.Lifecycle

`AFTER_DESTROY_EVENT, AFTER_INIT_EVENT, AFTER_START_EVENT, AFTER_STOP_EVENT, BEFORE_DESTROY_EVENT, BEFORE_INIT_EVENT, BEFORE_START_EVENT, BEFORE_STOP_EVENT, CONFIGURE_START_EVENT, CONFIGURE_STOP_EVENT, PERIODIC_EVENT, START_EVENT, STOP_EVENT`

### Constructor Summary

Constructors
Constructor and Description
`Connector()`
`Connector(String protocol)`

### Method Summary

Methods
`protected String` `createObjectNameKeyProperties(String type)`
`Request` `createRequest()` Create (or allocate) and return a Request object suitable for specifying the contents of a Request to the responsible Container.
`Response` `createResponse()` Create (or allocate) and return a Response object suitable for receiving the contents of a Response from the responsible Container.
`protected void` `destroyInternal()` Sub-classes wishing to perform additional clean-up should override this method, ensuring that super.destroyInternal() is the last call in the overriding method.
`boolean` `getAllowTrace()` True if the TRACE method is allowed.
`long` `getAsyncTimeout()` Return the default timeout for async requests in ms.
`Object` `getAttribute(String name)` Return a configured property.
`protected String` `getDomainInternal()` Method implemented by sub-classes to identify the domain in which MBeans should be registered.
`boolean` `getEnableLookups()` Return the "enable DNS lookups" flag.
`String` `getExecutorName()`
`String` `getInfo()` Return descriptive information about this Connector implementation.
`int` `getLocalPort()` Return the port number on which this connector is listening to requests.
`Mapper` `getMapper()` Return the mapper.
`int` `getMaxHeaderCount()` Return the maximum number of headers that are allowed by the container.
`int` `getMaxParameterCount()` Return the maximum number of parameters (GET plus POST) that will be automatically parsed by the container.
`int` `getMaxPostSize()` Return the maximum size of a POST which will be automatically parsed by the container.
`int` `getMaxSavePostSize()` Return the maximum size of a POST which will be saved by the container during authentication.
`protected String` `getObjectNameKeyProperties()` Allow sub-classes to specify the key properties component of the `ObjectName` that will be used to register this component.
`String` `getParseBodyMethods()`
`int` `getPort()` Return the port number on which this connector is configured to listen for requests.
`Object` `getProperty(String name)` Return a configured property.
`String` `getProtocol()` Return the Coyote protocol handler in use.
`ProtocolHandler` `getProtocolHandler()` Return the protocol handler associated with the connector.
`String` `getProtocolHandlerClassName()` Return the class name of the Coyote protocol handler in use.
`String` `getProxyName()` Return the proxy server name for this Connector.
`int` `getProxyPort()` Return the proxy server port for this Connector.
`int` `getRedirectPort()` Return 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.
`String` `getScheme()` Return the scheme that will be assigned to requests received through this connector.
`boolean` `getSecure()` Return the secure connection flag that will be assigned to requests received through this connector.
`Service` `getService()` Return the `Service` with which we are associated (if any).
`String` `getURIEncoding()` Return the character encoding to be used for the URI.
`boolean` `getUseBodyEncodingForURI()` Return the true if the entity body encoding should be used for the URI.
`boolean` `getUseIPVHosts()` Test if IP-based virtual hosting is enabled.
`boolean` `getXpoweredBy()` Indicates whether the generation of an X-Powered-By response header for servlet-generated responses is enabled or disabled for this Connector.
`protected void` `initInternal()` Sub-classes wishing to perform additional initialization should override this method, ensuring that super.initInternal() is the first call in the overriding method.
`protected boolean` `isParseBodyMethod(String method)`
`void` `pause()` Pause the connector.
`void` `resume()` Pause the connector.
`void` `setAllowTrace(boolean allowTrace)` Set the allowTrace flag, to disable or enable the TRACE HTTP method.
`void` `setAsyncTimeout(long asyncTimeout)` Set the default timeout for async requests.
`void` `setAttribute(String name, Object value)` Set a configured property.
`void` `setEnableLookups(boolean enableLookups)` Set the "enable DNS lookups" flag.
`void` `setMaxHeaderCount(int maxHeaderCount)` Set the maximum number of headers in a request that are allowed by the container.
`void` `setMaxParameterCount(int maxParameterCount)` Set the maximum number of parameters (GET plus POST) that will be automatically parsed by the container.
`void` `setMaxPostSize(int maxPostSize)` Set the maximum size of a POST which will be automatically parsed by the container.
`void` `setMaxSavePostSize(int maxSavePostSize)` Set the maximum size of a POST which will be saved by the container during authentication.
`void` `setParseBodyMethods(String methods)`
`void` `setPort(int port)` Set the port number on which we listen for requests.
`boolean` `setProperty(String name, String value)` Set a configured property.
`void` `setProtocol(String protocol)` Set the Coyote protocol which will be used by the connector.
`void` `setProtocolHandlerClassName(String protocolHandlerClassName)` Set the class name of the Coyote protocol handler which will be used by the connector.
`void` `setProxyName(String proxyName)` Set the proxy server name for this Connector.
`void` `setProxyPort(int proxyPort)` Set the proxy server port for this Connector.
`void` `setRedirectPort(int redirectPort)` Set the redirect port number.
`void` `setScheme(String scheme)` Set the scheme that will be assigned to requests received through this connector.
`void` `setSecure(boolean secure)` Set the secure connection flag that will be assigned to requests received through this connector.
`void` `setService(Service service)` Set the `Service` with which we are associated (if any).
`void` `setURIEncoding(String URIEncoding)` Set the URI encoding to be used for the URI.
`void` `setUseBodyEncodingForURI(boolean useBodyEncodingForURI)` Set if the entity body encoding should be used for the URI.
`void` `setUseIPVHosts(boolean useIPVHosts)` Enable the use of IP-based virtual hosting.
`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.
`protected void` `startInternal()` Begin processing requests via this Connector.
`protected void` `stopInternal()` Terminate processing requests via this Connector.
`String` `toString()` Provide a useful toString() implementation as it may be used when logging Lifecycle errors to identify the component.

### Methods inherited from class org.apache.catalina.util.LifecycleMBeanBase

`getDomain, getObjectName, postDeregister, postRegister, preDeregister, preRegister, register, setDomain, unregister`

### Methods inherited from class org.apache.catalina.util.LifecycleBase

`addLifecycleListener, destroy, findLifecycleListeners, fireLifecycleEvent, getState, getStateName, init, removeLifecycleListener, setState, setState, start, stop`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Field Detail

#### RECYCLE_FACADES

    public static final boolean RECYCLE_FACADES

Alternate flag to enable recycling of facades.

#### 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

#### info

    protected static final String info

Descriptive information about this Connector implementation.

See Also:
  Constant Field Values

#### 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.

#### 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. 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 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 ProtocolHandler protocolHandler

Coyote protocol handler.

#### adapter

    protected Adapter adapter

Coyote adapter.

#### mapper

    protected Mapper mapper

Mapper.

#### mapperListener

    protected MapperListener mapperListener

Mapper listener.

#### URIEncoding

    protected String URIEncoding

URI encoding.

#### useBodyEncodingForURI

    protected boolean useBodyEncodingForURI

URI encoding as body.

#### replacements

    protected static HashMap<String,String> replacements

### Constructor Detail

#### Connector

    public Connector()

#### Connector

    public Connector(String protocol)

### Method Detail

#### getProperty

    public Object getProperty(String name)

Return a configured property.

#### setProperty

    public boolean setProperty(String name,
                      String value)

Set a configured property.

#### getAttribute

    public Object getAttribute(String name)

Return a configured property.

#### setAttribute

    public void setAttribute(String name,
                    Object value)

Set a configured property.

#### getService

    public Service getService()

Return 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()

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()

Return 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()

Return 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

#### getInfo

    public String getInfo()

Return descriptive information about this Connector implementation.

#### getMapper

    public Mapper getMapper()

Return the mapper.

#### getMaxHeaderCount

    public int getMaxHeaderCount()

Return the maximum number of headers that are allowed by the container. A value of less than 0 means no limit.

#### setMaxHeaderCount

    public void setMaxHeaderCount(int maxHeaderCount)

Set the maximum number of headers in a request that are allowed by the container. A value of less than 0 means no limit.

Parameters:
  `maxHeaderCount` - The new setting

#### getMaxParameterCount

    public int getMaxParameterCount()

Return 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()

Return 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()

Return 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()

#### setParseBodyMethods

    public void setParseBodyMethods(String methods)

#### isParseBodyMethod

    protected boolean isParseBodyMethod(String method)

#### getPort

    public int getPort()

Return 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

#### getLocalPort

    public int getLocalPort()

Return the port number on which this connector is listening to requests. If the special value for `port` of zero is used then this method will report the actual port bound.

#### getProtocol

    public String getProtocol()

Return the Coyote protocol handler in use.

#### setProtocol

    public void setProtocol(String protocol)

Set the Coyote protocol which will be used by the connector.

Parameters:
  `protocol` - The Coyote protocol name

#### getProtocolHandlerClassName

    public String getProtocolHandlerClassName()

Return the class name of the Coyote protocol handler in use.

#### setProtocolHandlerClassName

    public void setProtocolHandlerClassName(String protocolHandlerClassName)

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()

Return the protocol handler associated with the connector.

#### getProxyName

    public String getProxyName()

Return 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()

Return 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()

Return 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)

#### getScheme

    public String getScheme()

Return 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()

Return 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()

Return the character encoding to be used for the URI.

#### 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()

Return 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/code> if Hosts are identified by name.`

#### getUseIPVHosts

    public boolean getUseIPVHosts()

Test if IP-based virtual hosting is enabled.

#### getExecutorName

    public String getExecutorName()

#### createRequest

    public Request createRequest()

Create (or allocate) and return a Request object suitable for specifying the contents of a Request to the responsible Container.

#### createResponse

    public Response createResponse()

Create (or allocate) and return a Response object suitable for receiving the contents of a Response from the responsible Container.

#### createObjectNameKeyProperties

    protected String createObjectNameKeyProperties(String type)

#### pause

    public void pause()

Pause the connector.

#### resume

    public void resume()

Pause 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`

#### 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`

#### 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`