Package org.apache.coyote
Class AbstractProtocol<S>
- java.lang.Object
- 
- org.apache.coyote.AbstractProtocol<S>
 
- 
- All Implemented Interfaces:
- javax.management.MBeanRegistration,- ProtocolHandler
 - Direct Known Subclasses:
- AbstractAjpProtocol,- AbstractHttp11Protocol
 
 public abstract class AbstractProtocol<S> extends java.lang.Object implements ProtocolHandler, javax.management.MBeanRegistration 
- 
- 
Nested Class SummaryNested Classes Modifier and Type Class Description protected static classAbstractProtocol.ConnectionHandler<S>protected static classAbstractProtocol.RecycledProcessors
 - 
Field SummaryFields Modifier and Type Field Description protected AdapteradapterThe adapter provides the link between the ProtocolHandler and the connector.protected java.lang.Stringdomainprotected javax.management.MBeanServermserverprotected javax.management.ObjectNameonameprotected intprocessorCacheThe maximum number of idle processors that will be retained in the cache and re-used with a subsequent request.protected javax.management.ObjectNamergOnameName of MBean for the Global Request Processor.
 - 
Constructor SummaryConstructors Constructor Description AbstractProtocol(AbstractEndpoint<S,?> endpoint)
 - 
Method SummaryAll Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidaddWaitingProcessor(Processor processor)longawaitConnectionsClose(long waitMillis)Wait for the client connections to the server to close gracefully.voidcloseServerSocketGraceful()Close the server socket (to prevent further connections) if the server socket was bound onProtocolHandler.start()(rather than onProtocolHandler.init()but do not perform any further shutdown.protected abstract ProcessorcreateProcessor()Create and configure a new Processor instance for the current protocol implementation.protected abstract ProcessorcreateUpgradeProcessor(SocketWrapperBase<?> socket, UpgradeToken upgradeToken)voiddestroy()Destroy the protocol (optional).intgetAcceptCount()intgetAcceptorThreadCount()Deprecated.Will be removed in Tomcat 10.intgetAcceptorThreadPriority()AdaptergetAdapter()Return the adapter associated with the protocol handler.java.net.InetAddressgetAddress()java.lang.StringgetClientCertProvider()When client certificate information is presented in a form other than instances ofX509Certificateit needs to be converted before it can be used and this property controls which JSSE provider is used to perform the conversion.longgetConnectionCount()intgetConnectionLinger()intgetConnectionTimeout()java.lang.StringgetDomain()protected AbstractEndpoint<S,?>getEndpoint()java.util.concurrent.ExecutorgetExecutor()The executor, provide access to the underlying thread pool.javax.management.ObjectNamegetGlobalRequestProcessorMBeanName()protected AbstractEndpoint.Handler<S>getHandler()java.lang.StringgetId()The default behavior is to identify connectors uniquely with address and port.intgetKeepAliveTimeout()The time Tomcat will wait for a subsequent request before closing the connection.intgetLocalPort()protected abstract LoggetLog()Concrete implementations need to provide access to their logger to be used by the abstract classes.intgetMaxConnections()intgetMaxHeaderCount()intgetMaxThreads()intgetMinSpareThreads()java.lang.StringgetName()The name will be prefix-address-port if address is non-null and prefix-port if the address is null.intgetNameIndex()protected abstract java.lang.StringgetNamePrefix()Obtain the prefix to be used when construction a name for this protocol handler.protected abstract UpgradeProtocolgetNegotiatedProtocol(java.lang.String name)Find a suitable handler for the protocol negotiated at the network layer.javax.management.ObjectNamegetObjectName()intgetPort()intgetPortOffset()intgetPortWithOffset()intgetProcessorCache()java.lang.StringgetProperty(java.lang.String name)Generic property getter used by the digester.protected abstract java.lang.StringgetProtocolName()Obtain the name of the protocol, (Http, Ajp, etc.).booleangetTcpNoDelay()intgetThreadPriority()protected abstract UpgradeProtocolgetUpgradeProtocol(java.lang.String name)Find a suitable handler for the protocol upgraded name specified.java.util.concurrent.ScheduledExecutorServicegetUtilityExecutor()Get the utility executor that should be used by the protocol handler.intgetWaitingProcessorCount()voidinit()Initialise the protocol.booleanisAprRequired()Requires APR/native librarybooleanisPaused()booleanisSendfileSupported()Does this ProtocolHandler support sendfile?voidpause()Pause the protocol (optional).voidpostDeregister()voidpostRegister(java.lang.Boolean registrationDone)voidpreDeregister()javax.management.ObjectNamepreRegister(javax.management.MBeanServer server, javax.management.ObjectName name)voidremoveWaitingProcessor(Processor processor)voidresume()Resume the protocol (optional).voidsetAcceptCount(int acceptCount)voidsetAcceptorThreadCount(int threadCount)Deprecated.Will be removed in Tomcat 10.voidsetAcceptorThreadPriority(int threadPriority)voidsetAdapter(Adapter adapter)The adapter, used to call the connector.voidsetAddress(java.net.InetAddress ia)voidsetClientCertProvider(java.lang.String s)voidsetConnectionLinger(int connectionLinger)voidsetConnectionTimeout(int timeout)voidsetExecutor(java.util.concurrent.Executor executor)Set the optional executor that will be used by the connector.protected voidsetHandler(AbstractEndpoint.Handler<S> handler)voidsetKeepAliveTimeout(int keepAliveTimeout)voidsetMaxConnections(int maxConnections)voidsetMaxHeaderCount(int maxHeaderCount)voidsetMaxThreads(int maxThreads)voidsetMinSpareThreads(int minSpareThreads)voidsetPort(int port)voidsetPortOffset(int portOffset)voidsetProcessorCache(int processorCache)booleansetProperty(java.lang.String name, java.lang.String value)Generic property setter used by the digester.voidsetTcpNoDelay(boolean tcpNoDelay)voidsetThreadPriority(int threadPriority)voidsetUtilityExecutor(java.util.concurrent.ScheduledExecutorService utilityExecutor)Set the utility executor that should be used by the protocol handler.voidstart()Start the protocol.protected voidstartAsyncTimeout()Note: The name of this method originated with the Servlet 3.0 asynchronous processing but evolved over time to represent a timeout that is triggered independently of the socket read/write timeouts.voidstop()Stop the protocol.protected voidstopAsyncTimeout()- 
Methods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 - 
Methods inherited from interface org.apache.coyote.ProtocolHandleraddSslHostConfig, addUpgradeProtocol, findSslHostConfigs, findUpgradeProtocols, getDesiredBufferSize
 
- 
 
- 
- 
- 
Field Detail- 
rgOnameprotected javax.management.ObjectName rgOname Name of MBean for the Global Request Processor.
 - 
adapterprotected Adapter adapter The adapter provides the link between the ProtocolHandler and the connector.
 - 
processorCacheprotected 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 isgetMaxConnections()although it will usually be closer togetMaxThreads().
 - 
domainprotected java.lang.String domain 
 - 
onameprotected javax.management.ObjectName oname 
 - 
mserverprotected javax.management.MBeanServer mserver 
 
- 
 - 
Constructor Detail- 
AbstractProtocolpublic AbstractProtocol(AbstractEndpoint<S,?> endpoint) 
 
- 
 - 
Method Detail- 
setPropertypublic boolean setProperty(java.lang.String name, java.lang.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.- Parameters:
- name- The name of the property to set
- value- The value, in string form, to set for the property
- Returns:
- trueif the property was set successfully, otherwise- false
 
 - 
getPropertypublic java.lang.String getProperty(java.lang.String name) Generic property getter used by the digester. Other code should not need to use this.- Parameters:
- name- The name of the property to get
- Returns:
- The value of the property converted to a string
 
 - 
getGlobalRequestProcessorMBeanNamepublic javax.management.ObjectName getGlobalRequestProcessorMBeanName() 
 - 
setAdapterpublic void setAdapter(Adapter adapter) Description copied from interface:ProtocolHandlerThe adapter, used to call the connector.- Specified by:
- setAdapterin interface- ProtocolHandler
- Parameters:
- adapter- The adapter to associate
 
 - 
getAdapterpublic Adapter getAdapter() Description copied from interface:ProtocolHandlerReturn the adapter associated with the protocol handler.- Specified by:
- getAdapterin interface- ProtocolHandler
- Returns:
- the adapter
 
 - 
getProcessorCachepublic int getProcessorCache() 
 - 
setProcessorCachepublic void setProcessorCache(int processorCache) 
 - 
getClientCertProviderpublic java.lang.String getClientCertProvider() When client certificate information is presented in a form other than instances ofX509Certificateit 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 theSSLValve. If not specified, the default provider will be used.- Returns:
- The name of the JSSE provider to use
 
 - 
setClientCertProviderpublic void setClientCertProvider(java.lang.String s) 
 - 
getMaxHeaderCountpublic int getMaxHeaderCount() 
 - 
setMaxHeaderCountpublic void setMaxHeaderCount(int maxHeaderCount) 
 - 
isAprRequiredpublic boolean isAprRequired() Description copied from interface:ProtocolHandlerRequires APR/native library- Specified by:
- isAprRequiredin interface- ProtocolHandler
- Returns:
- trueif this Protocol Handler requires the APR/native library, otherwise- false
 
 - 
isSendfileSupportedpublic boolean isSendfileSupported() Description copied from interface:ProtocolHandlerDoes this ProtocolHandler support sendfile?- Specified by:
- isSendfileSupportedin interface- ProtocolHandler
- Returns:
- trueif this Protocol Handler supports sendfile, otherwise- false
 
 - 
getIdpublic java.lang.String getId() Description copied from interface:ProtocolHandlerThe default behavior is to identify connectors uniquely with address and port. However, certain connectors are not using that and need some other identifier, which then can be used as a replacement.- Specified by:
- getIdin interface- ProtocolHandler
- Returns:
- the id
 
 - 
getExecutorpublic java.util.concurrent.Executor getExecutor() Description copied from interface:ProtocolHandlerThe executor, provide access to the underlying thread pool.- Specified by:
- getExecutorin interface- ProtocolHandler
- Returns:
- The executor used to process requests
 
 - 
setExecutorpublic void setExecutor(java.util.concurrent.Executor executor) Description copied from interface:ProtocolHandlerSet the optional executor that will be used by the connector.- Specified by:
- setExecutorin interface- ProtocolHandler
- Parameters:
- executor- the executor
 
 - 
getUtilityExecutorpublic java.util.concurrent.ScheduledExecutorService getUtilityExecutor() Description copied from interface:ProtocolHandlerGet the utility executor that should be used by the protocol handler.- Specified by:
- getUtilityExecutorin interface- ProtocolHandler
- Returns:
- the executor
 
 - 
setUtilityExecutorpublic void setUtilityExecutor(java.util.concurrent.ScheduledExecutorService utilityExecutor) Description copied from interface:ProtocolHandlerSet the utility executor that should be used by the protocol handler.- Specified by:
- setUtilityExecutorin interface- ProtocolHandler
- Parameters:
- utilityExecutor- the executor
 
 - 
getMaxThreadspublic int getMaxThreads() 
 - 
setMaxThreadspublic void setMaxThreads(int maxThreads) 
 - 
getMaxConnectionspublic int getMaxConnections() 
 - 
setMaxConnectionspublic void setMaxConnections(int maxConnections) 
 - 
getMinSpareThreadspublic int getMinSpareThreads() 
 - 
setMinSpareThreadspublic void setMinSpareThreads(int minSpareThreads) 
 - 
getThreadPrioritypublic int getThreadPriority() 
 - 
setThreadPrioritypublic void setThreadPriority(int threadPriority) 
 - 
getAcceptCountpublic int getAcceptCount() 
 - 
setAcceptCountpublic void setAcceptCount(int acceptCount) 
 - 
getTcpNoDelaypublic boolean getTcpNoDelay() 
 - 
setTcpNoDelaypublic void setTcpNoDelay(boolean tcpNoDelay) 
 - 
getConnectionLingerpublic int getConnectionLinger() 
 - 
setConnectionLingerpublic void setConnectionLinger(int connectionLinger) 
 - 
getKeepAliveTimeoutpublic int getKeepAliveTimeout() The time Tomcat will wait for a subsequent request before closing the connection. The default isgetConnectionTimeout().- Returns:
- The timeout in milliseconds
 
 - 
setKeepAliveTimeoutpublic void setKeepAliveTimeout(int keepAliveTimeout) 
 - 
getAddresspublic java.net.InetAddress getAddress() 
 - 
setAddresspublic void setAddress(java.net.InetAddress ia) 
 - 
getPortpublic int getPort() 
 - 
setPortpublic void setPort(int port) 
 - 
getPortOffsetpublic int getPortOffset() 
 - 
setPortOffsetpublic void setPortOffset(int portOffset) 
 - 
getPortWithOffsetpublic int getPortWithOffset() 
 - 
getLocalPortpublic int getLocalPort() 
 - 
getConnectionTimeoutpublic int getConnectionTimeout() 
 - 
setConnectionTimeoutpublic void setConnectionTimeout(int timeout) 
 - 
getConnectionCountpublic long getConnectionCount() 
 - 
setAcceptorThreadCount@Deprecated public void setAcceptorThreadCount(int threadCount) Deprecated.Will be removed in Tomcat 10.NO-OP.- Parameters:
- threadCount- Unused
 
 - 
getAcceptorThreadCount@Deprecated public int getAcceptorThreadCount() Deprecated.Will be removed in Tomcat 10.Always returns 1.- Returns:
- Always 1.
 
 - 
setAcceptorThreadPrioritypublic void setAcceptorThreadPriority(int threadPriority) 
 - 
getAcceptorThreadPrioritypublic int getAcceptorThreadPriority() 
 - 
getNameIndexpublic int getNameIndex() 
 - 
getNamepublic java.lang.String getName() The name will be prefix-address-port if address is non-null and prefix-port if the address is null.- Returns:
- A name for this protocol instance that is appropriately quoted for use in an ObjectName.
 
 - 
addWaitingProcessorpublic void addWaitingProcessor(Processor processor) 
 - 
removeWaitingProcessorpublic void removeWaitingProcessor(Processor processor) 
 - 
getWaitingProcessorCountpublic int getWaitingProcessorCount() 
 - 
getEndpointprotected AbstractEndpoint<S,?> getEndpoint() 
 - 
getHandlerprotected AbstractEndpoint.Handler<S> getHandler() 
 - 
setHandlerprotected void setHandler(AbstractEndpoint.Handler<S> handler) 
 - 
getLogprotected abstract Log getLog() Concrete implementations need to provide access to their logger to be used by the abstract classes.- Returns:
- the logger
 
 - 
getNamePrefixprotected abstract java.lang.String getNamePrefix() Obtain the prefix to be used when construction a name for this protocol handler. The name will be prefix-address-port.- Returns:
- the prefix
 
 - 
getProtocolNameprotected abstract java.lang.String getProtocolName() Obtain the name of the protocol, (Http, Ajp, etc.). Used with JMX.- Returns:
- the protocol name
 
 - 
getNegotiatedProtocolprotected abstract UpgradeProtocol getNegotiatedProtocol(java.lang.String name) Find a suitable handler for the protocol negotiated at the network layer.- Parameters:
- name- The name of the requested negotiated protocol.
- Returns:
- The instance where UpgradeProtocol.getAlpnName()matches the requested protocol
 
 - 
getUpgradeProtocolprotected abstract UpgradeProtocol getUpgradeProtocol(java.lang.String name) Find a suitable handler for the protocol upgraded name specified. This is used for direct connection protocol selection.- Parameters:
- name- The name of the requested negotiated protocol.
- Returns:
- The instance where UpgradeProtocol.getAlpnName()matches the requested protocol
 
 - 
createProcessorprotected abstract Processor createProcessor() Create and configure a new Processor instance for the current protocol implementation.- Returns:
- A fully configured Processor instance that is ready to use
 
 - 
createUpgradeProcessorprotected abstract Processor createUpgradeProcessor(SocketWrapperBase<?> socket, UpgradeToken upgradeToken) 
 - 
getObjectNamepublic javax.management.ObjectName getObjectName() 
 - 
getDomainpublic java.lang.String getDomain() 
 - 
preRegisterpublic javax.management.ObjectName preRegister(javax.management.MBeanServer server, javax.management.ObjectName name) throws java.lang.Exception- Specified by:
- preRegisterin interface- javax.management.MBeanRegistration
- Throws:
- java.lang.Exception
 
 - 
postRegisterpublic void postRegister(java.lang.Boolean registrationDone) - Specified by:
- postRegisterin interface- javax.management.MBeanRegistration
 
 - 
preDeregisterpublic void preDeregister() throws java.lang.Exception- Specified by:
- preDeregisterin interface- javax.management.MBeanRegistration
- Throws:
- java.lang.Exception
 
 - 
postDeregisterpublic void postDeregister() - Specified by:
- postDeregisterin interface- javax.management.MBeanRegistration
 
 - 
initpublic void init() throws java.lang.ExceptionDescription copied from interface:ProtocolHandlerInitialise the protocol.- Specified by:
- initin interface- ProtocolHandler
- Throws:
- java.lang.Exception- If the protocol handler fails to initialise
 
 - 
startpublic void start() throws java.lang.ExceptionDescription copied from interface:ProtocolHandlerStart the protocol.- Specified by:
- startin interface- ProtocolHandler
- Throws:
- java.lang.Exception- If the protocol handler fails to start
 
 - 
startAsyncTimeoutprotected void startAsyncTimeout() Note: The name of this method originated with the Servlet 3.0 asynchronous processing but evolved over time to represent a timeout that is triggered independently of the socket read/write timeouts.
 - 
stopAsyncTimeoutprotected void stopAsyncTimeout() 
 - 
pausepublic void pause() throws java.lang.ExceptionDescription copied from interface:ProtocolHandlerPause the protocol (optional).- Specified by:
- pausein interface- ProtocolHandler
- Throws:
- java.lang.Exception- If the protocol handler fails to pause
 
 - 
isPausedpublic boolean isPaused() 
 - 
resumepublic void resume() throws java.lang.ExceptionDescription copied from interface:ProtocolHandlerResume the protocol (optional).- Specified by:
- resumein interface- ProtocolHandler
- Throws:
- java.lang.Exception- If the protocol handler fails to resume
 
 - 
stoppublic void stop() throws java.lang.ExceptionDescription copied from interface:ProtocolHandlerStop the protocol.- Specified by:
- stopin interface- ProtocolHandler
- Throws:
- java.lang.Exception- If the protocol handler fails to stop
 
 - 
destroypublic void destroy() throws java.lang.ExceptionDescription copied from interface:ProtocolHandlerDestroy the protocol (optional).- Specified by:
- destroyin interface- ProtocolHandler
- Throws:
- java.lang.Exception- If the protocol handler fails to destroy
 
 - 
closeServerSocketGracefulpublic void closeServerSocketGraceful() Description copied from interface:ProtocolHandlerClose the server socket (to prevent further connections) if the server socket was bound onProtocolHandler.start()(rather than onProtocolHandler.init()but do not perform any further shutdown.- Specified by:
- closeServerSocketGracefulin interface- ProtocolHandler
 
 - 
awaitConnectionsClosepublic long awaitConnectionsClose(long waitMillis) Description copied from interface:ProtocolHandlerWait for the client connections to the server to close gracefully. The method will return when all of the client connections have closed or the method has been waiting forwaitTimeMillis.- Specified by:
- awaitConnectionsClosein interface- ProtocolHandler
- Parameters:
- waitMillis- The maximum time to wait in milliseconds for the client connections to close.
- Returns:
- The wait time, if any remaining when the method returned
 
 
- 
 
-