Interface ProtocolHandler
- All Known Implementing Classes:
AbstractAjpProtocol,AbstractHttp11JsseProtocol,AbstractHttp11Protocol,AbstractProtocol,AjpAprProtocol,AjpNio2Protocol,AjpNioProtocol,Http11AprProtocol,Http11Nio2Protocol,Http11NioProtocol
public interface ProtocolHandler
Abstract the protocol implementation, including threading, etc. This is the main interface to be implemented by a
coyote protocol. Adapter is the main interface to be implemented by a coyote servlet container.
- Author:
- Remy Maucherat, Costin Manolache
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionvoidaddSslHostConfig(SSLHostConfig sslHostConfig) Add a new SSL configuration for a virtual host.voidaddSslHostConfig(SSLHostConfig sslHostConfig, boolean replace) Add a new SSL configuration for a virtual host.voidaddUpgradeProtocol(UpgradeProtocol upgradeProtocol) Add a new protocol for used by HTTP/1.1 upgrade or ALPN.longawaitConnectionsClose(long waitMillis) Wait for the client connections to the server to close gracefully.voidstatic ProtocolHandlerCreate a new ProtocolHandler for the given protocol.voiddestroy()Destroy the protocol (optional).Find all configured SSL virtual host configurations which will be used by SNI.Return all configured upgrade protocols.Return the adapter associated with the protocol handler.default intSome protocols, like AJP, have a packet length that shouldn't be exceeded, and this can be used to adjust the buffering used by the application layer.The executor, provide access to the underlying thread pool.default StringgetId()The default behavior is to identify connectors uniquely with address and port.Get the utility executor that should be used by the protocol handler.voidinit()Initialise the protocol.booleanDeprecated.This method will be removed in Tomcat 9.1.x onwards and has been removed from Tomcat 10.1.x onwards.booleanDoes this ProtocolHandler support sendfile?voidpause()Pause the protocol (optional).voidresume()Resume the protocol (optional).voidsetAdapter(Adapter adapter) The adapter, used to call the connector.voidsetExecutor(Executor executor) Set the optional executor that will be used by the connector.voidsetUtilityExecutor(ScheduledExecutorService utilityExecutor) Set the utility executor that should be used by the protocol handler.voidstart()Start the protocol.voidstop()Stop the protocol.
-
Method Details
-
getAdapter
-
setAdapter
The adapter, used to call the connector.- Parameters:
adapter- The adapter to associate
-
getExecutor
Executor getExecutor()The executor, provide access to the underlying thread pool.- Returns:
- The executor used to process requests
-
setExecutor
Set the optional executor that will be used by the connector.- Parameters:
executor- the executor
-
getUtilityExecutor
ScheduledExecutorService getUtilityExecutor()Get the utility executor that should be used by the protocol handler.- Returns:
- the executor
-
setUtilityExecutor
Set the utility executor that should be used by the protocol handler.- Parameters:
utilityExecutor- the executor
-
init
-
start
-
pause
-
resume
-
stop
-
destroy
-
closeServerSocketGraceful
-
awaitConnectionsClose
long awaitConnectionsClose(long waitMillis) Wait 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.- 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
-
isAprRequired
Deprecated.This method will be removed in Tomcat 9.1.x onwards and has been removed from Tomcat 10.1.x onwards.Requires APR/native library- Returns:
trueif this Protocol Handler requires the APR/native library, otherwisefalse
-
isSendfileSupported
boolean isSendfileSupported()Does this ProtocolHandler support sendfile?- Returns:
trueif this Protocol Handler supports sendfile, otherwisefalse
-
addSslHostConfig
Add a new SSL configuration for a virtual host.- Parameters:
sslHostConfig- the configuration
-
addSslHostConfig
Add a new SSL configuration for a virtual host.- Parameters:
sslHostConfig- the configurationreplace- Iftruereplacement of an existing configuration is permitted, otherwise any such attempted replacement will trigger an exception- Throws:
IllegalArgumentException- If the host name is not valid or if a configuration has already been provided for that host and replacement is not allowed
-
findSslHostConfigs
SSLHostConfig[] findSslHostConfigs()Find all configured SSL virtual host configurations which will be used by SNI.- Returns:
- the configurations
-
addUpgradeProtocol
Add a new protocol for used by HTTP/1.1 upgrade or ALPN.- Parameters:
upgradeProtocol- the protocol
-
findUpgradeProtocols
UpgradeProtocol[] findUpgradeProtocols()Return all configured upgrade protocols.- Returns:
- the protocols
-
getDesiredBufferSize
default int getDesiredBufferSize()Some protocols, like AJP, have a packet length that shouldn't be exceeded, and this can be used to adjust the buffering used by the application layer.- Returns:
- the desired buffer size, or -1 if not relevant
-
getId
The 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.- Returns:
- the id
-
create
static ProtocolHandler create(String protocol, boolean apr) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException Create a new ProtocolHandler for the given protocol.- Parameters:
protocol- the protocolapr- iftruethe APR protcol handler will be used- Returns:
- the newly instantiated protocol handler
- Throws:
ClassNotFoundException- Specified protocol was not foundInstantiationException- Specified protocol could not be instantiatedIllegalAccessException- Exception occurredIllegalArgumentException- Exception occurredInvocationTargetException- Exception occurredNoSuchMethodException- Exception occurredSecurityException- Exception occurred
-