Package org.apache.tomcat.util.net
Class NioEndpoint
java.lang.Object
org.apache.tomcat.util.net.AbstractEndpoint<S,U>
org.apache.tomcat.util.net.AbstractJsseEndpoint<NioChannel,SocketChannel>
org.apache.tomcat.util.net.NioEndpoint
NIO tailored thread pool, providing the following services:
- Socket acceptor thread
- Socket poller thread
- Worker threads pool
- Author:
- Mladen Turk, Remy Maucherat
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classclassPoller class.static classPollerEvent, cacheable object for poller events to avoid GCstatic classSendfileData class.protected classThis class is the equivalent of the Worker, but will simply use in an external Executor thread pool.Nested classes/interfaces inherited from class org.apache.tomcat.util.net.AbstractEndpoint
AbstractEndpoint.BindState, AbstractEndpoint.Handler<S> -
Field Summary
FieldsFields inherited from class org.apache.tomcat.util.net.AbstractEndpoint
acceptor, acceptorThreadCount, acceptorThreadPriority, attributes, connections, internalExecutor, negotiableProtocols, paused, processorCache, running, sm, socketProperties, sslHostConfigs, threadPriority -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidbind()Initialize the endpoint.protected SocketProcessorBase<NioChannel>createSocketProcessor(SocketWrapperBase<NioChannel> socketWrapper, SocketEvent event) protected voiddestroySocket(SocketChannel socket) Close the socket.protected voidActually close the server socket but don't perform any other clean-up.booleanIs deferAccept supported?intNumber of keep-alive sockets.protected LoggetLog()protected Logprotected SynchronizedStack<NioChannel>protected NioEndpoint.PollerDeprecated.Will be removed in Tomcat 9.intDeprecated.Will be removed in Tomcat 10.intlongprotected NetworkChannelprotected CountDownLatchbooleanprotected voidprotected SocketChannelvoidsetPollerThreadCount(int pollerThreadCount) Deprecated.Will be removed in Tomcat 10.voidsetPollerThreadPriority(int pollerThreadPriority) voidsetSelectorTimeout(long timeout) protected booleansetSocketOptions(SocketChannel socket) Process the specified connection.protected voidsetStopLatch(CountDownLatch stopLatch) voidsetUseInheritedChannel(boolean useInheritedChannel) voidStart the NIO endpoint, creating acceptor, poller threads.voidStop the endpoint.voidunbind()Deallocate NIO memory pools, and close server socket.Methods inherited from class org.apache.tomcat.util.net.AbstractJsseEndpoint
createSSLContext, createSSLEngine, getLocalAddress, getSniParseLimit, getSslImplementation, getSslImplementationName, init, initialiseSsl, isAlpnSupported, setDefaultSslHostConfig, setSniParseLimit, setSslImplementationNameMethods inherited from class org.apache.tomcat.util.net.AbstractEndpoint
addNegotiatedProtocol, addSslHostConfig, addSslHostConfig, awaitConnectionsClose, closeServerSocketGraceful, closeSocket, countDownConnection, countUpOrAwaitConnection, createExecutor, destroy, destroySsl, findSslHostConfigs, generateCertificateDebug, getAcceptCount, getAcceptorThreadCount, getAcceptorThreadPriority, getAddress, getAttribute, getBacklog, getBindOnInit, getBindState, getConnectionCount, getConnectionLinger, getConnections, getConnectionTimeout, getCurrentThreadCount, getCurrentThreadsBusy, getDaemon, getDefaultSSLHostConfigName, getDomain, getExecutor, getExecutorTerminationTimeoutMillis, getHandler, getKeepAliveTimeout, getLocalPort, getMaxConnections, getMaxHeaderCount, getMaxKeepAliveRequests, getMaxThreads, getMinSpareThreads, getName, getPort, getPortOffset, getPortWithOffset, getProperty, getSocketProperties, getSoLinger, getSoTimeout, getSSLHostConfig, getTcpNoDelay, getThreadPriority, getUseAsyncIO, getUseSendfile, getUseVirtualThreads, hasNegotiableProtocols, initializeConnectionLatch, isPaused, isRunning, isSSLEnabled, logCertificate, pause, processSocket, releaseConnectionLatch, releaseSSLContext, reloadSslHostConfig, reloadSslHostConfigs, removeSslHostConfig, resume, setAcceptCount, setAcceptorThreadCount, setAcceptorThreadPriority, setAddress, setAttribute, setBacklog, setBindOnInit, setConnectionLinger, setConnectionTimeout, setDaemon, setDefaultSSLHostConfigName, setDomain, setExecutor, setExecutorTerminationTimeoutMillis, setHandler, setKeepAliveTimeout, setMaxConnections, setMaxHeaderCount, setMaxKeepAliveRequests, setMaxThreads, setMinSpareThreads, setName, setPort, setPortOffset, setProperty, setSoLinger, setSoTimeout, setSSLEnabled, setTcpNoDelay, setThreadPriority, setUseAsyncIO, setUseSendfile, setUseVirtualThreads, shutdownExecutor, start, startAcceptorThread, stop, toTimeout, unlockAccept
-
Field Details
-
OP_REGISTER
public static final int OP_REGISTER- See Also:
-
-
Constructor Details
-
NioEndpoint
public NioEndpoint()
-
-
Method Details
-
setUseInheritedChannel
public void setUseInheritedChannel(boolean useInheritedChannel) -
getUseInheritedChannel
public boolean getUseInheritedChannel() -
setPollerThreadPriority
public void setPollerThreadPriority(int pollerThreadPriority) -
getPollerThreadPriority
public int getPollerThreadPriority() -
setPollerThreadCount
Deprecated.Will be removed in Tomcat 10.NO-OP.- Parameters:
pollerThreadCount- Unused
-
getPollerThreadCount
Deprecated.Will be removed in Tomcat 10.Always returns 1.- Returns:
- Always 1.
-
setSelectorTimeout
public void setSelectorTimeout(long timeout) -
getSelectorTimeout
public long getSelectorTimeout() -
getPoller0
Deprecated.Will be removed in Tomcat 9.Not used.- Returns:
- The poller
-
getDeferAccept
public boolean getDeferAccept()Is deferAccept supported?- Specified by:
getDeferAcceptin classAbstractEndpoint<NioChannel,SocketChannel>
-
getKeepAliveCount
public int getKeepAliveCount()Number of keep-alive sockets.- Returns:
- The number of sockets currently in the keep-alive state waiting for the next request to be received on the socket
-
bind
Initialize the endpoint.- Specified by:
bindin classAbstractEndpoint<NioChannel,SocketChannel> - Throws:
Exception
-
initServerSocket
- Throws:
Exception
-
startInternal
Start the NIO endpoint, creating acceptor, poller threads.- Specified by:
startInternalin classAbstractEndpoint<NioChannel,SocketChannel> - Throws:
Exception
-
stopInternal
public void stopInternal()Stop the endpoint. This will cause all processing threads to stop.- Specified by:
stopInternalin classAbstractEndpoint<NioChannel,SocketChannel>
-
unbind
Deallocate NIO memory pools, and close server socket.- Overrides:
unbindin classAbstractJsseEndpoint<NioChannel,SocketChannel> - Throws:
Exception
-
doCloseServerSocket
Description copied from class:AbstractEndpointActually close the server socket but don't perform any other clean-up.- Specified by:
doCloseServerSocketin classAbstractEndpoint<NioChannel,SocketChannel> - Throws:
IOException- If an error occurs closing the socket
-
getNioChannels
-
getPoller
-
getStopLatch
-
setStopLatch
-
setSocketOptions
Process the specified connection.- Specified by:
setSocketOptionsin classAbstractEndpoint<NioChannel,SocketChannel> - Parameters:
socket- The socket channel- Returns:
trueif the socket was correctly configured and processing may continue,falseif the socket needs to be close immediately
-
destroySocket
Description copied from class:AbstractEndpointClose the socket. This is used when the connector is not in a state which allows processing the socket, or if there was an error which prevented the allocation of the socket wrapper.- Specified by:
destroySocketin classAbstractEndpoint<NioChannel,SocketChannel> - Parameters:
socket- The newly accepted socket
-
getServerSocket
- Specified by:
getServerSocketin classAbstractJsseEndpoint<NioChannel,SocketChannel>
-
serverSocketAccept
- Specified by:
serverSocketAcceptin classAbstractEndpoint<NioChannel,SocketChannel> - Throws:
Exception
-
getLog
- Specified by:
getLogin classAbstractEndpoint<NioChannel,SocketChannel>
-
getLogCertificate
- Overrides:
getLogCertificatein classAbstractEndpoint<NioChannel,SocketChannel>
-
createSocketProcessor
protected SocketProcessorBase<NioChannel> createSocketProcessor(SocketWrapperBase<NioChannel> socketWrapper, SocketEvent event) - Specified by:
createSocketProcessorin classAbstractEndpoint<NioChannel,SocketChannel>
-