Package org.apache.coyote
Interface ProtocolHandler
-
- All Known Implementing Classes:
AbstractAjpProtocol,AbstractHttp11JsseProtocol,AbstractHttp11Protocol,AbstractProtocol,AjpAprProtocol,AjpNio2Protocol,AjpNioProtocol,Http11AprProtocol,Http11Nio2Protocol,Http11NioProtocol
public interface ProtocolHandlerAbstract 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:
Adapter
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description voidaddSslHostConfig(SSLHostConfig sslHostConfig)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.voidcloseServerSocketGraceful()static ProtocolHandlercreate(java.lang.String protocol, boolean apr)Create a new ProtocolHandler for the given protocol.voiddestroy()Destroy the protocol (optional).SSLHostConfig[]findSslHostConfigs()Find all configured SSL virtual host configurations which will be used by SNI.UpgradeProtocol[]findUpgradeProtocols()Return all configured upgrade protocols.AdaptergetAdapter()Return the adapter associated with the protocol handler.default intgetDesiredBufferSize()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.java.util.concurrent.ExecutorgetExecutor()The executor, provide access to the underlying thread pool.java.util.concurrent.ScheduledExecutorServicegetUtilityExecutor()Get the utility executor that should be used by the protocol handler.voidinit()Initialise the protocol.booleanisAprRequired()Requires APR/native librarybooleanisSendfileSupported()Does 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(java.util.concurrent.Executor executor)Set the optional executor that will be used by the connector.voidsetUtilityExecutor(java.util.concurrent.ScheduledExecutorService utilityExecutor)Set the utility executor that should be used by the protocol handler.voidstart()Start the protocol.voidstop()Stop the protocol.
-
-
-
Method Detail
-
getAdapter
Adapter getAdapter()
Return the adapter associated with the protocol handler.- Returns:
- the adapter
-
setAdapter
void setAdapter(Adapter adapter)
The adapter, used to call the connector.- Parameters:
adapter- The adapter to associate
-
getExecutor
java.util.concurrent.Executor getExecutor()
The executor, provide access to the underlying thread pool.- Returns:
- The executor used to process requests
-
setExecutor
void setExecutor(java.util.concurrent.Executor executor)
Set the optional executor that will be used by the connector.- Parameters:
executor- the executor
-
getUtilityExecutor
java.util.concurrent.ScheduledExecutorService getUtilityExecutor()
Get the utility executor that should be used by the protocol handler.- Returns:
- the executor
-
setUtilityExecutor
void setUtilityExecutor(java.util.concurrent.ScheduledExecutorService utilityExecutor)
Set the utility executor that should be used by the protocol handler.- Parameters:
utilityExecutor- the executor
-
init
void init() throws java.lang.Exception
Initialise the protocol.- Throws:
java.lang.Exception- If the protocol handler fails to initialise
-
start
void start() throws java.lang.ExceptionStart the protocol.- Throws:
java.lang.Exception- If the protocol handler fails to start
-
pause
void pause() throws java.lang.ExceptionPause the protocol (optional).- Throws:
java.lang.Exception- If the protocol handler fails to pause
-
resume
void resume() throws java.lang.ExceptionResume the protocol (optional).- Throws:
java.lang.Exception- If the protocol handler fails to resume
-
stop
void stop() throws java.lang.Exception
Stop the protocol.- Throws:
java.lang.Exception- If the protocol handler fails to stop
-
destroy
void destroy() throws java.lang.ExceptionDestroy the protocol (optional).- Throws:
java.lang.Exception- If the protocol handler fails to destroy
-
closeServerSocketGraceful
void closeServerSocketGraceful()
-
isAprRequired
boolean isAprRequired()
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
void addSslHostConfig(SSLHostConfig sslHostConfig)
Add a new SSL configuration for a virtual host.- Parameters:
sslHostConfig- the configuration
-
findSslHostConfigs
SSLHostConfig[] findSslHostConfigs()
Find all configured SSL virtual host configurations which will be used by SNI.- Returns:
- the configurations
-
addUpgradeProtocol
void addUpgradeProtocol(UpgradeProtocol upgradeProtocol)
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
-
create
static ProtocolHandler create(java.lang.String protocol, boolean apr) throws java.lang.ClassNotFoundException, java.lang.InstantiationException, java.lang.IllegalAccessException, java.lang.IllegalArgumentException, java.lang.reflect.InvocationTargetException, java.lang.NoSuchMethodException, java.lang.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:
java.lang.ClassNotFoundException- Specified protocol was not foundjava.lang.InstantiationException- Specified protocol could not be instantiatedjava.lang.IllegalAccessException- Exception occurredjava.lang.IllegalArgumentException- Exception occurredjava.lang.reflect.InvocationTargetException- Exception occurredjava.lang.NoSuchMethodException- Exception occurredjava.lang.SecurityException- Exception occurred
-
-