public abstract class AbstractEndpoint<S> extends Object
Modifier and Type | Class and Description |
---|---|
static class |
AbstractEndpoint.Acceptor |
protected static class |
AbstractEndpoint.BindState |
static interface |
AbstractEndpoint.Handler |
Modifier and Type | Field and Description |
---|---|
protected AbstractEndpoint.Acceptor[] |
acceptors
Threads used to accept new connections and pass them to worker threads.
|
protected int |
acceptorThreadCount
Acceptor thread count.
|
protected int |
acceptorThreadPriority
Priority of the acceptor threads.
|
protected HashMap<String,Object> |
attributes
Attributes provide a way for configuration to be passed to sub-components
without the
ProtocolHandler being aware of the
properties available on those sub-components. |
protected boolean |
internalExecutor
Are we using an internal executor
|
protected boolean |
paused
Will be set to true whenever the endpoint is paused.
|
protected boolean |
running
Running state of the endpoint.
|
protected static StringManager |
sm |
protected SocketProperties |
socketProperties
Socket properties
|
protected int |
threadPriority
Priority of the worker threads.
|
Constructor and Description |
---|
AbstractEndpoint() |
Modifier and Type | Method and Description |
---|---|
abstract void |
bind() |
protected void |
configureUseServerCipherSuitesOrder(SSLEngine engine)
Configures SSLEngine to honor cipher suites ordering based upon
endpoint configuration.
|
protected long |
countDownConnection() |
protected void |
countUpOrAwaitConnection() |
protected abstract AbstractEndpoint.Acceptor |
createAcceptor()
Hook to allow Endpoints to provide a specific Acceptor implementation.
|
void |
createExecutor() |
void |
destroy() |
int |
getAcceptorThreadCount() |
int |
getAcceptorThreadPriority() |
InetAddress |
getAddress() |
String |
getAlgorithm() |
String |
getAllowUnsafeLegacyRenegotiation() |
Object |
getAttribute(String key)
Used by sub-components to retrieve configuration information.
|
int |
getBacklog() |
boolean |
getBindOnInit() |
String |
getCiphers() |
String |
getClientAuth() |
long |
getConnectionCount()
Return the current count of connections handled by this endpoint, if the
connections are counted (which happens when the maximum count of
connections is limited), or
-1 if they are not. |
String |
getCrlFile() |
int |
getCurrentThreadCount()
Return the amount of threads that are managed by the pool.
|
int |
getCurrentThreadsBusy()
Return the amount of threads that are in use
|
boolean |
getDaemon() |
protected abstract boolean |
getDeferAccept() |
Executor |
getExecutor() |
long |
getExecutorTerminationTimeoutMillis() |
int |
getKeepAliveTimeout() |
String |
getKeyAlias() |
String |
getKeyPass() |
String |
getKeystoreFile() |
String |
getKeystorePass() |
String |
getKeystoreProvider() |
String |
getKeystoreType() |
abstract int |
getLocalPort() |
protected abstract Log |
getLog() |
int |
getMaxConnections() |
int |
getMaxHeaderCount() |
int |
getMaxKeepAliveRequests() |
int |
getMaxThreads() |
protected int |
getMaxThreadsInternal() |
int |
getMaxThreadsWithExecutor() |
int |
getMinSpareThreads() |
String |
getName() |
int |
getPort() |
String |
getProperty(String name) |
String |
getSessionCacheSize() |
String |
getSessionTimeout() |
SocketProperties |
getSocketProperties() |
int |
getSoLinger()
Socket linger.
|
int |
getSoTimeout()
Socket timeout.
|
String[] |
getSslEnabledProtocolsArray() |
String |
getSslProtocol() |
boolean |
getTcpNoDelay()
Socket TCP no delay.
|
int |
getThreadPriority() |
String |
getTrustManagerClassName() |
String |
getTrustMaxCertLength() |
String |
getTruststoreAlgorithm() |
String |
getTruststoreFile() |
String |
getTruststorePass() |
String |
getTruststoreProvider() |
String |
getTruststoreType() |
abstract boolean |
getUseComet() |
abstract boolean |
getUseCometTimeout() |
abstract boolean |
getUsePolling() |
abstract boolean |
getUseSendfile() |
String |
getUseServerCipherSuitesOrder() |
protected int |
handleExceptionWithDelay(int currentErrorDelay)
Provides a common approach for sub-classes to handle exceptions where a
delay is required to prevent a Thread from entering a tight loop which
will consume CPU and may also trigger large amounts of logging.
|
void |
init() |
protected LimitLatch |
initializeConnectionLatch() |
boolean |
isPaused() |
boolean |
isRunning() |
boolean |
isSSLEnabled() |
void |
pause()
Pause the endpoint, which will stop it accepting new connections.
|
abstract void |
processSocketAsync(SocketWrapper<S> socketWrapper,
SocketStatus socketStatus) |
protected void |
releaseConnectionLatch() |
abstract void |
removeWaitingRequest(SocketWrapper<S> socketWrapper) |
void |
resume()
Resume the endpoint, which will make it start accepting new connections
again.
|
void |
setAcceptorThreadCount(int acceptorThreadCount) |
void |
setAcceptorThreadPriority(int acceptorThreadPriority) |
void |
setAddress(InetAddress address) |
void |
setAlgorithm(String s) |
void |
setAllowUnsafeLegacyRenegotiation(String s) |
void |
setAttribute(String name,
Object value)
Generic property setter called when a property for which a specific
setter already exists within the
ProtocolHandler needs to be made available to
sub-components. |
void |
setBacklog(int backlog) |
void |
setBindOnInit(boolean b) |
void |
setCiphers(String s) |
void |
setClientAuth(String s) |
void |
setCrlFile(String crlFile) |
void |
setDaemon(boolean b) |
void |
setExecutor(Executor executor) |
void |
setExecutorTerminationTimeoutMillis(long executorTerminationTimeoutMillis) |
void |
setKeepAliveTimeout(int keepAliveTimeout) |
void |
setKeyAlias(String s) |
void |
setKeyPass(String s) |
void |
setKeystoreFile(String s) |
void |
setKeystorePass(String s) |
void |
setKeystoreProvider(String s) |
void |
setKeystoreType(String s) |
void |
setMaxConnections(int maxCon) |
void |
setMaxHeaderCount(int maxHeaderCount) |
void |
setMaxKeepAliveRequests(int maxKeepAliveRequests) |
void |
setMaxThreads(int maxThreads) |
void |
setMinSpareThreads(int minSpareThreads) |
void |
setName(String name) |
void |
setPort(int port) |
boolean |
setProperty(String name,
String value) |
void |
setSessionCacheSize(String s) |
void |
setSessionTimeout(String s) |
void |
setSoLinger(int soLinger) |
void |
setSoTimeout(int soTimeout) |
void |
setSSLEnabled(boolean SSLEnabled) |
void |
setSslEnabledProtocols(String s) |
void |
setSslProtocol(String s) |
void |
setTcpNoDelay(boolean tcpNoDelay) |
void |
setThreadPriority(int threadPriority) |
void |
setTrustManagerClassName(String trustManagerClassName) |
void |
setTrustMaxCertLength(String trustMaxCertLength) |
void |
setTruststoreAlgorithm(String truststoreAlgorithm) |
void |
setTruststoreFile(String s) |
void |
setTruststorePass(String truststorePass) |
void |
setTruststoreProvider(String truststoreProvider) |
void |
setTruststoreType(String truststoreType) |
void |
setUseServerCipherSuitesOrder(String s) |
void |
shutdownExecutor() |
void |
start() |
protected void |
startAcceptorThreads() |
abstract void |
startInternal() |
void |
stop() |
abstract void |
stopInternal() |
abstract void |
unbind() |
protected void |
unlockAccept()
Unlock the server socket accept using a bogus connection.
|
protected static final StringManager sm
protected volatile boolean running
protected volatile boolean paused
protected volatile boolean internalExecutor
protected SocketProperties socketProperties
protected AbstractEndpoint.Acceptor[] acceptors
protected int acceptorThreadCount
protected int acceptorThreadPriority
protected int threadPriority
protected HashMap<String,Object> attributes
ProtocolHandler
being aware of the
properties available on those sub-components. One example of such a
sub-component is the
ServerSocketFactory
.public SocketProperties getSocketProperties()
public long getExecutorTerminationTimeoutMillis()
public void setExecutorTerminationTimeoutMillis(long executorTerminationTimeoutMillis)
public void setAcceptorThreadCount(int acceptorThreadCount)
public int getAcceptorThreadCount()
public void setAcceptorThreadPriority(int acceptorThreadPriority)
public int getAcceptorThreadPriority()
public void setMaxConnections(int maxCon)
public int getMaxConnections()
public long getConnectionCount()
-1
if they are not. This
property is added here so that this value can be inspected through JMX.
It is visible on "ThreadPool" MBean.
The count is incremented by the Acceptor before it tries to accept a new connection. Until the limit is reached and thus the count cannot be incremented, this value is more by 1 (the count of acceptors) than the actual count of connections that are being served.
public void setExecutor(Executor executor)
public Executor getExecutor()
public int getPort()
public void setPort(int port)
public abstract int getLocalPort()
public InetAddress getAddress()
public void setAddress(InetAddress address)
public void setBacklog(int backlog)
public int getBacklog()
public boolean getBindOnInit()
public void setBindOnInit(boolean b)
public int getKeepAliveTimeout()
public void setKeepAliveTimeout(int keepAliveTimeout)
public boolean getTcpNoDelay()
public void setTcpNoDelay(boolean tcpNoDelay)
public int getSoLinger()
public void setSoLinger(int soLinger)
public int getSoTimeout()
public void setSoTimeout(int soTimeout)
public boolean isSSLEnabled()
public void setSSLEnabled(boolean SSLEnabled)
public void setMinSpareThreads(int minSpareThreads)
public int getMinSpareThreads()
public void setMaxThreads(int maxThreads)
public int getMaxThreads()
protected int getMaxThreadsInternal()
public int getMaxThreadsWithExecutor()
public void setThreadPriority(int threadPriority)
public int getThreadPriority()
public int getMaxKeepAliveRequests()
public void setMaxKeepAliveRequests(int maxKeepAliveRequests)
public int getMaxHeaderCount()
public void setMaxHeaderCount(int maxHeaderCount)
public void setName(String name)
public String getName()
public void setDaemon(boolean b)
public boolean getDaemon()
protected abstract boolean getDeferAccept()
public void setAttribute(String name, Object value)
ProtocolHandler
needs to be made available to
sub-components. The specific setter will call this method to populate the
attributes.name
- Name of property to setvalue
- The value to set the property topublic Object getAttribute(String key)
key
- The name of the property for which the value should be
retrievedpublic int getCurrentThreadCount()
public int getCurrentThreadsBusy()
public boolean isRunning()
public boolean isPaused()
public void createExecutor()
public void shutdownExecutor()
protected void unlockAccept()
public abstract void processSocketAsync(SocketWrapper<S> socketWrapper, SocketStatus socketStatus)
public abstract void removeWaitingRequest(SocketWrapper<S> socketWrapper)
protected final void startAcceptorThreads()
protected abstract AbstractEndpoint.Acceptor createAcceptor()
public void pause()
public void resume()
protected abstract Log getLog()
public abstract boolean getUseSendfile()
public abstract boolean getUseComet()
public abstract boolean getUseCometTimeout()
public abstract boolean getUsePolling()
protected LimitLatch initializeConnectionLatch()
protected void releaseConnectionLatch()
protected void countUpOrAwaitConnection() throws InterruptedException
InterruptedException
protected long countDownConnection()
protected int handleExceptionWithDelay(int currentErrorDelay)
currentErrorDelay
- The current delay being applied on failurepublic String getAlgorithm()
public void setAlgorithm(String s)
public String getClientAuth()
public void setClientAuth(String s)
public String getKeystoreFile()
public void setKeystoreFile(String s)
public String getKeystorePass()
public void setKeystorePass(String s)
public String getKeystoreType()
public void setKeystoreType(String s)
public String getKeystoreProvider()
public void setKeystoreProvider(String s)
public String getSslProtocol()
public void setSslProtocol(String s)
public String getCiphers()
public void setCiphers(String s)
public String getUseServerCipherSuitesOrder()
public void setUseServerCipherSuitesOrder(String s)
public String getKeyAlias()
public void setKeyAlias(String s)
public String getKeyPass()
public void setKeyPass(String s)
public String getTruststoreFile()
public void setTruststoreFile(String s)
public String getTruststorePass()
public void setTruststorePass(String truststorePass)
public String getTruststoreType()
public void setTruststoreType(String truststoreType)
public String getTruststoreProvider()
public void setTruststoreProvider(String truststoreProvider)
public String getTruststoreAlgorithm()
public void setTruststoreAlgorithm(String truststoreAlgorithm)
public String getTrustManagerClassName()
public void setTrustManagerClassName(String trustManagerClassName)
public String getCrlFile()
public void setCrlFile(String crlFile)
public String getTrustMaxCertLength()
public void setTrustMaxCertLength(String trustMaxCertLength)
public String getSessionCacheSize()
public void setSessionCacheSize(String s)
public String getSessionTimeout()
public void setSessionTimeout(String s)
public String getAllowUnsafeLegacyRenegotiation()
public void setAllowUnsafeLegacyRenegotiation(String s)
public String[] getSslEnabledProtocolsArray()
public void setSslEnabledProtocols(String s)
protected void configureUseServerCipherSuitesOrder(SSLEngine engine)
UnsupportedOperationException
- If the runtime JVM doesn't support
this setting.Copyright © 2000-2021 Apache Software Foundation. All Rights Reserved.