org.apache.coyote

## Class AbstractProtocol

- java.lang.Object
- - org.apache.coyote.AbstractProtocol

All Implemented Interfaces:
  MBeanRegistration, ProtocolHandler

Direct Known Subclasses:
  AbstractAjpProtocol, AbstractHttp11Protocol

    public abstract class AbstractProtocol
    extends Object
    implements ProtocolHandler, MBeanRegistration

### Nested Class Summary

Nested Classes
`protected static class` `AbstractProtocol.AbstractConnectionHandler<S,P extends Processor<S>>`
`protected static class` `AbstractProtocol.RecycledProcessors<P extends Processor<S>,S>`

### Field Summary

Fields
`protected Adapter` `adapter` The adapter provides the link between the ProtocolHandler and the connector.
`protected String` `clientCertProvider` When client certificate information is presented in a form other than instances of `X509Certificate` it needs to be converted before it can be used and this property controls which JSSE provider is used to perform the conversion.
`protected String` `domain`
`protected AbstractEndpoint` `endpoint` Endpoint that provides low-level network I/O - must be matched to the ProtocolHandler implementation (ProtocolHandler using BIO, requires BIO Endpoint etc.).
`protected MBeanServer` `mserver`
`protected ObjectName` `oname`
`protected int` `processorCache` The maximum number of idle processors that will be retained in the cache and re-used with a subsequent request.
`protected ObjectName` `rgOname` Name of MBean for the Global Request Processor.
`protected static StringManager` `sm` The string manager for this package.
`protected ObjectName` `tpOname` Name of MBean for the ThreadPool.

### Constructor Summary

Constructors
Constructor and Description
`AbstractProtocol()`

### Method Summary

Methods
`void` `destroy()` Destroy the protocol (optional).
`Adapter` `getAdapter()`
`InetAddress` `getAddress()`
`int` `getBacklog()`
`String` `getClientCertProvider()`
`long` `getConnectionCount()`
`int` `getConnectionTimeout()`
`String` `getDomain()`
`Executor` `getExecutor()` The executor, provide access to the underlying thread pool.
`protected abstract AbstractEndpoint.Handler` `getHandler()` Obtain the handler associated with the underlying Endpoint
`int` `getKeepAliveTimeout()`
`int` `getLocalPort()`
`protected abstract Log` `getLog()` Concrete implementations need to provide access to their logger to be used by the abstract classes.
`int` `getMaxConnections()`
`int` `getMaxHeaderCount()`
`int` `getMaxThreads()`
`int` `getMinSpareThreads()`
`String` `getName()` The name will be prefix-address-port if address is non-null and prefix-port if the address is null.
`int` `getNameIndex()`
`protected abstract String` `getNamePrefix()` Obtain the prefix to be used when construction a name for this protocol handler.
`ObjectName` `getObjectName()`
`int` `getPort()`
`int` `getProcessorCache()`
`String` `getProperty(String name)` Generic property getter used by the digester.
`protected abstract String` `getProtocolName()` Obtain the name of the protocol, (Http, Ajp, etc.).
`int` `getSoLinger()`
`int` `getSoTimeout()`
`boolean` `getTcpNoDelay()`
`int` `getThreadPriority()`
`void` `init()` Initialise the protocol.
`boolean` `isAprRequired()` Requires APR/native library
`void` `pause()` Pause the protocol (optional).
`void` `postDeregister()`
`void` `postRegister(Boolean registrationDone)`
`void` `preDeregister()`
`ObjectName` `preRegister(MBeanServer server, ObjectName name)`
`void` `resume()` Resume the protocol (optional).
`void` `setAdapter(Adapter adapter)` The adapter, used to call the connector.
`void` `setAddress(InetAddress ia)`
`void` `setBacklog(int backlog)`
`void` `setClientCertProvider(String s)`
`void` `setConnectionTimeout(int timeout)`
`void` `setExecutor(Executor executor)`
`void` `setKeepAliveTimeout(int keepAliveTimeout)`
`void` `setMaxConnections(int maxConnections)`
`void` `setMaxHeaderCount(int maxHeaderCount)`
`void` `setMaxThreads(int maxThreads)`
`void` `setMinSpareThreads(int minSpareThreads)`
`void` `setPort(int port)`
`void` `setProcessorCache(int processorCache)`
`boolean` `setProperty(String name, String value)` Generic property setter used by the digester.
`void` `setSoLinger(int soLinger)`
`void` `setSoTimeout(int timeout)`
`void` `setTcpNoDelay(boolean tcpNoDelay)`
`void` `setThreadPriority(int threadPriority)`
`void` `start()` Start the protocol.
`void` `stop()` Stop the protocol.

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

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

### Field Detail

#### sm

    protected static final StringManager sm

The string manager for this package.

#### rgOname

    protected ObjectName rgOname

Name of MBean for the Global Request Processor.

#### tpOname

    protected ObjectName tpOname

Name of MBean for the ThreadPool.

#### endpoint

    protected AbstractEndpoint endpoint

Endpoint that provides low-level network I/O - must be matched to the ProtocolHandler implementation (ProtocolHandler using BIO, requires BIO Endpoint etc.).

#### adapter

    protected Adapter adapter

The adapter provides the link between the ProtocolHandler and the connector.

#### processorCache

    protected int processorCache

The maximum number of idle processors that will be retained in the cache and re-used with a subsequent request. The default is 200. A value of -1 means unlimited. In the unlimited case, the theoretical maximum number of cached Processor objects is `getMaxConnections()` although it will usually be closer to `getMaxThreads()`.

#### clientCertProvider

    protected String clientCertProvider

When client certificate information is presented in a form other than instances of `X509Certificate` it needs to be converted before it can be used and this property controls which JSSE provider is used to perform the conversion. For example it is used with the AJP connectors, the HTTP APR connector and with the `SSLValve`. If not specified, the default provider will be used.

#### domain

    protected String domain

#### oname

    protected ObjectName oname

#### mserver

    protected MBeanServer mserver

### Constructor Detail

#### AbstractProtocol

    public AbstractProtocol()

### Method Detail

#### setProperty

    public boolean setProperty(String name,
                      String value)

Generic property setter used by the digester. Other code should not need to use this. The digester will only use this method if it can't find a more specific setter. That means the property belongs to the Endpoint, the ServerSocketFactory or some other lower level component. This method ensures that it is visible to both.

#### getProperty

    public String getProperty(String name)

Generic property getter used by the digester. Other code should not need to use this.

#### setAdapter

    public void setAdapter(Adapter adapter)

Description copied from interface: `ProtocolHandler`
The adapter, used to call the connector.

Specified by:
  `setAdapter` in interface `ProtocolHandler`

#### getAdapter

    public Adapter getAdapter()

Specified by:
  `getAdapter` in interface `ProtocolHandler`

#### getProcessorCache

    public int getProcessorCache()

#### setProcessorCache

    public void setProcessorCache(int processorCache)

#### getClientCertProvider

    public String getClientCertProvider()

#### setClientCertProvider

    public void setClientCertProvider(String s)

#### isAprRequired

    public boolean isAprRequired()

Description copied from interface: `ProtocolHandler`
Requires APR/native library

Specified by:
  `isAprRequired` in interface `ProtocolHandler`

#### getExecutor

    public Executor getExecutor()

Description copied from interface: `ProtocolHandler`
The executor, provide access to the underlying thread pool.

Specified by:
  `getExecutor` in interface `ProtocolHandler`

#### setExecutor

    public void setExecutor(Executor executor)

#### getMaxThreads

    public int getMaxThreads()

#### setMaxThreads

    public void setMaxThreads(int maxThreads)

#### getMaxConnections

    public int getMaxConnections()

#### setMaxConnections

    public void setMaxConnections(int maxConnections)

#### getMinSpareThreads

    public int getMinSpareThreads()

#### setMinSpareThreads

    public void setMinSpareThreads(int minSpareThreads)

#### getThreadPriority

    public int getThreadPriority()

#### setThreadPriority

    public void setThreadPriority(int threadPriority)

#### getBacklog

    public int getBacklog()

#### setBacklog

    public void setBacklog(int backlog)

#### getTcpNoDelay

    public boolean getTcpNoDelay()

#### setTcpNoDelay

    public void setTcpNoDelay(boolean tcpNoDelay)

#### getSoLinger

    public int getSoLinger()

#### setSoLinger

    public void setSoLinger(int soLinger)

#### getKeepAliveTimeout

    public int getKeepAliveTimeout()

#### setKeepAliveTimeout

    public void setKeepAliveTimeout(int keepAliveTimeout)

#### getAddress

    public InetAddress getAddress()

#### setAddress

    public void setAddress(InetAddress ia)

#### getPort

    public int getPort()

#### setPort

    public void setPort(int port)

#### getLocalPort

    public int getLocalPort()

#### getConnectionTimeout

    public int getConnectionTimeout()

#### setConnectionTimeout

    public void setConnectionTimeout(int timeout)

#### getSoTimeout

    public int getSoTimeout()

#### setSoTimeout

    public void setSoTimeout(int timeout)

#### getMaxHeaderCount

    public int getMaxHeaderCount()

#### setMaxHeaderCount

    public void setMaxHeaderCount(int maxHeaderCount)

#### getConnectionCount

    public long getConnectionCount()

#### getNameIndex

    public int getNameIndex()

#### getName

    public String getName()

The name will be prefix-address-port if address is non-null and prefix-port if the address is null. The name will be appropriately quoted so it can be used directly in an ObjectName.

#### getLog

    protected abstract Log getLog()

Concrete implementations need to provide access to their logger to be used by the abstract classes.

#### getNamePrefix

    protected abstract String getNamePrefix()

Obtain the prefix to be used when construction a name for this protocol handler. The name will be prefix-address-port.

#### getProtocolName

    protected abstract String getProtocolName()

Obtain the name of the protocol, (Http, Ajp, etc.). Used with JMX.

#### getHandler

    protected abstract AbstractEndpoint.Handler getHandler()

Obtain the handler associated with the underlying Endpoint

#### getObjectName

    public ObjectName getObjectName()

#### getDomain

    public String getDomain()

#### preRegister

    public ObjectName preRegister(MBeanServer server,
                         ObjectName name)
                           throws Exception

Specified by:
  `preRegister` in interface `MBeanRegistration`
Throws:
  `Exception`

#### postRegister

    public void postRegister(Boolean registrationDone)

Specified by:
  `postRegister` in interface `MBeanRegistration`

#### preDeregister

    public void preDeregister()
                       throws Exception

Specified by:
  `preDeregister` in interface `MBeanRegistration`
Throws:
  `Exception`

#### postDeregister

    public void postDeregister()

Specified by:
  `postDeregister` in interface `MBeanRegistration`

#### init

    public void init()
              throws Exception

Description copied from interface: `ProtocolHandler`
Initialise the protocol.

Specified by:
  `init` in interface `ProtocolHandler`
Throws:
  `Exception`

#### start

    public void start()
               throws Exception

Description copied from interface: `ProtocolHandler`
Start the protocol.

Specified by:
  `start` in interface `ProtocolHandler`
Throws:
  `Exception`

#### pause

    public void pause()
               throws Exception

Description copied from interface: `ProtocolHandler`
Pause the protocol (optional).

Specified by:
  `pause` in interface `ProtocolHandler`
Throws:
  `Exception`

#### resume

    public void resume()
                throws Exception

Description copied from interface: `ProtocolHandler`
Resume the protocol (optional).

Specified by:
  `resume` in interface `ProtocolHandler`
Throws:
  `Exception`

#### stop

    public void stop()
              throws Exception

Description copied from interface: `ProtocolHandler`
Stop the protocol.

Specified by:
  `stop` in interface `ProtocolHandler`
Throws:
  `Exception`

#### destroy

    public void destroy()

Description copied from interface: `ProtocolHandler`
Destroy the protocol (optional).

Specified by:
  `destroy` in interface `ProtocolHandler`