# Class Connector

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

All Implemented Interfaces:
  `MBeanRegistration, JmxEnabled, Lifecycle`

public class Connector extends LifecycleMBeanBase
Implementation of a Coyote connector.

## Nested Class Summary

### Nested classes/interfaces inherited from interface Lifecycle

`Lifecycle.SingleUse`

## Field Summary

Fields
Modifier and Type
Field
Description
`protected Adapter`
`adapter`
Coyote adapter.
`protected boolean`
`allowTrace`
Do we allow TRACE ?
`protected long`
`asyncTimeout`
Default timeout for asynchronous requests (ms).
`protected boolean`
`discardFacades`
The flag that controls recycling of the facades of the request processing objects.
`protected boolean`
`enableLookups`
The "enable DNS lookups" flag for this Connector.
`static final String`
`INTERNAL_EXECUTOR_NAME`
`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. 2 MiB by default.
`protected int`
`maxSavePostSize`
Maximum size of a POST which will be saved by the container during authentication. 4 KiB 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 final ProtocolHandler`
`protocolHandler`
Coyote protocol handler.
`protected final 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 final boolean`
`RECYCLE_FACADES`
Alternate flag to enable recycling of facades.
`protected int`
`redirectPort`
The redirect port for non-SSL to SSL redirects.
`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 final StringManager`
`sm`
The string manager for this package.
`protected boolean`
`useBodyEncodingForURI`
URI encoding as body.
`protected boolean`
`useIPVHosts`
Flag to use IP-based virtual hosting.
`protected boolean`
`xpoweredBy`
Is generation of X-Powered-By response header enabled/disabled?

### Fields inherited from class LifecycleMBeanBase

`mserver`

### Fields inherited from interface 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
Description
`Connector()`
Defaults to using HTTP/1.1 NIO implementation.
`Connector(String protocol)`
`Connector(ProtocolHandler protocolHandler)`

## Method Summary

Modifier and Type
Method
Description
`void`
`addSslHostConfig(SSLHostConfig sslHostConfig)`
`void`
`addUpgradeProtocol(UpgradeProtocol upgradeProtocol)`
`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()`
Subclasses implement this method to perform any instance destruction required.
`SSLHostConfig[]`
`findSslHostConfigs()`
`UpgradeProtocol[]`
`findUpgradeProtocols()`
`boolean`
`getAllowTrace()`
`long`
`getAsyncTimeout()`
`Object`
`getAttribute(String name)`
Deprecated.
Use `getProperty(String)`.
`boolean`
`getDiscardFacades()`
`protected String`
`getDomainInternal()`
Method implemented by subclasses to identify the domain in which MBeans should be registered.
`boolean`
`getEnableLookups()`
`String`
`getEncodedReverseSolidusHandling()`
`EncodedSolidusHandling`
`getEncodedReverseSolidusHandlingInternal()`
`String`
`getEncodedSolidusHandling()`
`EncodedSolidusHandling`
`getEncodedSolidusHandlingInternal()`
`String`
`getExecutorName()`
`int`
`getLocalPort()`
`int`
`getMaxCookieCount()`
`int`
`getMaxParameterCount()`
`int`
`getMaxPartCount()`
`int`
`getMaxPartHeaderSize()`
`int`
`getMaxPostSize()`
`int`
`getMaxSavePostSize()`
`protected String`
`getObjectNameKeyProperties()`
Allow subclasses to specify the key properties component of the `ObjectName` that will be used to register this component.
`String`
`getParseBodyMethods()`
`int`
`getPort()`
`int`
`getPortOffset()`
`int`
`getPortWithOffset()`
`Object`
`getProperty(String name)`
Return a property from the protocol handler.
`String`
`getProtocol()`
`ProtocolHandler`
`getProtocolHandler()`
`String`
`getProtocolHandlerClassName()`
`String`
`getProxyName()`
`int`
`getProxyPort()`
`int`
`getRedirectPort()`
`int`
`getRedirectPortWithOffset()`
`String`
`getScheme()`
`boolean`
`getSecure()`
`Service`
`getService()`
`Charset`
`getURICharset()`
`String`
`getURIEncoding()`
`boolean`
`getUseBodyEncodingForURI()`
`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()`
Subclasses implement this method to perform any instance initialisation required.
`protected boolean`
`isParseBodyMethod(String method)`
`void`
`pause()`
Pause the connector.
`void`
`resume()`
Resume 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)`
Deprecated.
Use `setProperty(String, String)`.
`void`
`setDiscardFacades(boolean discardFacades)`
Set the recycling strategy for the object facades.
`void`
`setEnableLookups(boolean enableLookups)`
Set the "enable DNS lookups" flag.
`void`
`setEncodedReverseSolidusHandling(String encodedReverseSolidusHandling)`
`void`
`setEncodedSolidusHandling(String encodedSolidusHandling)`
`void`
`setMaxCookieCount(int maxCookieCount)`
`void`
`setMaxParameterCount(int maxParameterCount)`
Set the maximum number of parameters (GET plus POST) that will be automatically parsed by the container.
`void`
`setMaxPartCount(int maxPartCount)`
`void`
`setMaxPartHeaderSize(int maxPartHeaderSize)`
`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)`
Set list of HTTP methods which should allow body parameter parsing.
`void`
`setPort(int port)`
Set the port number on which we listen for requests.
`void`
`setPortOffset(int portOffset)`
`boolean`
`setProperty(String name, String value)`
Set a property on the protocol handler.
`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()`

### Methods inherited from class LifecycleMBeanBase

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

### Methods inherited from class LifecycleBase

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

### Methods inherited from class Object

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

## 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:
  - 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
Is generation of X-Powered-By response header enabled/disabled?

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

### Connector

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

### Connector

public Connector(String protocol)

### Connector

public Connector(ProtocolHandler protocolHandler)

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

### getMaxPartCount

public int getMaxPartCount()

### setMaxPartCount

public void setMaxPartCount(int maxPartCount)

### getMaxPartHeaderSize

public int getMaxPartHeaderSize()

### setMaxPartHeaderSize

public void setMaxPartHeaderSize(int maxPartHeaderSize)

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

### getProtocolHandlerClassName

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

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

### getEncodedReverseSolidusHandling

public String getEncodedReverseSolidusHandling()

### setEncodedReverseSolidusHandling

public void setEncodedReverseSolidusHandling(String encodedReverseSolidusHandling)

### getEncodedReverseSolidusHandlingInternal

public EncodedSolidusHandling getEncodedReverseSolidusHandlingInternal()

### 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: `LifecycleBase`
Subclasses implement this method to perform any instance initialisation required.

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: `LifecycleBase`
Subclasses implement this method to perform any instance destruction required.

Overrides:
  `destroyInternal` in class `LifecycleMBeanBase`
Throws:
  `LifecycleException` - If the destruction fails

### toString

public String toString()

Overrides:
  `toString` in class `Object`

### getDomainInternal

protected String getDomainInternal()
Description copied from class: `LifecycleMBeanBase`
Method implemented by subclasses 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 subclasses 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`