Class AprEndpoint

  • All Implemented Interfaces:
    SSLContext.SNICallBack

    @Deprecated
    public class AprEndpoint
    extends AbstractEndpoint<java.lang.Long,​java.lang.Long>
    implements SSLContext.SNICallBack
    Deprecated.
    The APR/Native Connector will be removed in Tomcat 10.1.x onwards.
    APR tailored thread pool, providing the following services:
    • Socket acceptor thread
    • Socket poller thread
    • Sendfile thread
    • Worker threads pool
    Author:
    Mladen Turk, Remy Maucherat
    • Field Detail

      • rootPool

        protected long rootPool
        Deprecated.
        Root APR memory pool.
      • serverSock

        protected volatile long serverSock
        Deprecated.
        Server socket "pointer".
      • serverSockPool

        protected long serverSockPool
        Deprecated.
        APR memory pool for the server socket.
      • sslContext

        protected long sslContext
        Deprecated.
        SSL context.
      • deferAccept

        protected boolean deferAccept
        Deprecated.
        Defer accept.
      • sendfileSize

        protected int sendfileSize
        Deprecated.
        Size of the sendfile (= concurrent files which can be served).
      • pollTime

        protected int pollTime
        Deprecated.
        Poll interval, in microseconds. The smaller the value, the more CPU the poller will use, but the more responsive to activity it will be.
    • Constructor Detail

      • AprEndpoint

        public AprEndpoint()
        Deprecated.
    • Method Detail

      • setDeferAccept

        public void setDeferAccept​(boolean deferAccept)
        Deprecated.
      • getDeferAccept

        public boolean getDeferAccept()
        Deprecated.
        Overrides:
        getDeferAccept in class AbstractEndpoint<java.lang.Long,​java.lang.Long>
      • setIpv6v6only

        public void setIpv6v6only​(boolean ipv6v6only)
        Deprecated.
      • getIpv6v6only

        public boolean getIpv6v6only()
        Deprecated.
      • setSendfileSize

        public void setSendfileSize​(int sendfileSize)
        Deprecated.
      • getSendfileSize

        public int getSendfileSize()
        Deprecated.
      • getPollTime

        public int getPollTime()
        Deprecated.
      • setPollTime

        public void setPollTime​(int pollTime)
        Deprecated.
      • setUseSendfile

        public void setUseSendfile​(boolean useSendfile)
        Deprecated.
        Overrides:
        setUseSendfile in class AbstractEndpoint<java.lang.Long,​java.lang.Long>
      • getLocalAddress

        public java.net.InetSocketAddress getLocalAddress()
                                                   throws java.io.IOException
        Deprecated.
        Description copied from class: AbstractEndpoint
        Obtain the network address the server socket is bound to. This primarily exists to enable the correct address to be used when unlocking the server socket since it removes the guess-work involved if no address is specifically set.
        Specified by:
        getLocalAddress in class AbstractEndpoint<java.lang.Long,​java.lang.Long>
        Returns:
        The network address that the server socket is listening on or null if the server socket is not currently bound.
        Throws:
        java.io.IOException - If there is a problem determining the currently bound socket
      • setMaxConnections

        public void setMaxConnections​(int maxConnections)
        Deprecated.
        This endpoint does not support -1 for unlimited connections, nor does it support setting this attribute while the endpoint is running.
        Overrides:
        setMaxConnections in class AbstractEndpoint<java.lang.Long,​java.lang.Long>
      • getUnixDomainSocketPath

        public java.lang.String getUnixDomainSocketPath()
        Deprecated.
      • setUnixDomainSocketPath

        public void setUnixDomainSocketPath​(java.lang.String unixDomainSocketPath)
        Deprecated.
      • getUnixDomainSocketPathPermissions

        public java.lang.String getUnixDomainSocketPathPermissions()
        Deprecated.
      • setUnixDomainSocketPathPermissions

        public void setUnixDomainSocketPathPermissions​(java.lang.String unixDomainSocketPathPermissions)
        Deprecated.
      • getKeepAliveCount

        public int getKeepAliveCount()
        Deprecated.
        Obtain the number of kept alive sockets.
        Returns:
        The number of open sockets currently managed by the Poller
      • getSendfileCount

        public int getSendfileCount()
        Deprecated.
        Obtain the number of sendfile sockets.
        Returns:
        The number of sockets currently managed by the Sendfile poller.
      • getId

        public java.lang.String getId()
        Deprecated.
        Description copied from class: AbstractEndpoint
        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.
        Overrides:
        getId in class AbstractEndpoint<java.lang.Long,​java.lang.Long>
        Returns:
        the id
      • bind

        public void bind()
                  throws java.lang.Exception
        Deprecated.
        Initialize the endpoint.
        Specified by:
        bind in class AbstractEndpoint<java.lang.Long,​java.lang.Long>
        Throws:
        java.lang.Exception
      • createSSLContext

        protected void createSSLContext​(SSLHostConfig sslHostConfig)
                                 throws java.lang.Exception
        Deprecated.
        Description copied from class: AbstractEndpoint
        Create the SSLContext for the given SSLHostConfig.
        Specified by:
        createSSLContext in class AbstractEndpoint<java.lang.Long,​java.lang.Long>
        Parameters:
        sslHostConfig - The SSLHostConfig for which the SSLContext should be created
        Throws:
        java.lang.Exception - If the SSLContext cannot be created for the given SSLHostConfig
      • getSslContext

        public long getSslContext​(java.lang.String sniHostName)
        Deprecated.
        Description copied from interface: SSLContext.SNICallBack
        This callback is made during the TLS handshake when the client uses the SNI extension to request a specific TLS host.
        Specified by:
        getSslContext in interface SSLContext.SNICallBack
        Parameters:
        sniHostName - The host name requested by the client - must be in lower case
        Returns:
        The Java representation of the pointer to the OpenSSL SSLContext to use for the given host or zero if no SSLContext could be identified
      • isAlpnSupported

        public boolean isAlpnSupported()
        Deprecated.
        Description copied from class: AbstractEndpoint
        Identifies if the endpoint supports ALPN. Note that a return value of true implies that AbstractEndpoint.isSSLEnabled() will also return true.
        Specified by:
        isAlpnSupported in class AbstractEndpoint<java.lang.Long,​java.lang.Long>
        Returns:
        true if the endpoint supports ALPN in its current configuration, otherwise false.
      • startInternal

        public void startInternal()
                           throws java.lang.Exception
        Deprecated.
        Start the APR endpoint, creating acceptor, poller and sendfile threads.
        Specified by:
        startInternal in class AbstractEndpoint<java.lang.Long,​java.lang.Long>
        Throws:
        java.lang.Exception
      • stopInternal

        public void stopInternal()
        Deprecated.
        Stop the endpoint. This will cause all processing threads to stop.
        Specified by:
        stopInternal in class AbstractEndpoint<java.lang.Long,​java.lang.Long>
      • unbind

        public void unbind()
                    throws java.lang.Exception
        Deprecated.
        Deallocate APR memory pools, and close server socket.
        Specified by:
        unbind in class AbstractEndpoint<java.lang.Long,​java.lang.Long>
        Throws:
        java.lang.Exception
      • doCloseServerSocket

        protected void doCloseServerSocket()
        Deprecated.
        Description copied from class: AbstractEndpoint
        Actually close the server socket but don't perform any other clean-up.
        Specified by:
        doCloseServerSocket in class AbstractEndpoint<java.lang.Long,​java.lang.Long>
      • setSocketOptions

        protected boolean setSocketOptions​(SocketWrapperBase<java.lang.Long> socketWrapper)
        Deprecated.
        Process the specified connection.
        Parameters:
        socketWrapper - The socket wrapper
        Returns:
        true if the socket was correctly configured and processing may continue, false if the socket needs to be close immediately
      • allocatePoller

        protected long allocatePoller​(int size,
                                      long pool,
                                      int timeout)
        Deprecated.
        Allocate a new poller of the specified size.
        Parameters:
        size - The size
        pool - The pool from which the poller will be allocated
        timeout - The timeout
        Returns:
        the poller pointer
      • setSocketOptions

        protected boolean setSocketOptions​(java.lang.Long socket)
        Deprecated.
        Process given socket. This is called when the socket has been accepted.
        Specified by:
        setSocketOptions in class AbstractEndpoint<java.lang.Long,​java.lang.Long>
        Parameters:
        socket - The socket
        Returns:
        true if the socket was correctly configured and processing may continue, false if the socket needs to be close immediately
      • serverSocketAccept

        protected java.lang.Long serverSocketAccept()
                                             throws java.lang.Exception
        Deprecated.
        Specified by:
        serverSocketAccept in class AbstractEndpoint<java.lang.Long,​java.lang.Long>
        Throws:
        java.lang.Exception
      • processSocket

        protected boolean processSocket​(long socket,
                                        SocketEvent event)
        Deprecated.
        Process the given socket. Typically keep alive or upgraded protocol.
        Parameters:
        socket - The socket to process
        event - The event to process
        Returns:
        true if the processing completed normally otherwise false which indicates an error occurred and that the socket should be closed
      • destroySocket

        protected void destroySocket​(java.lang.Long socket)
        Deprecated.
        Description copied from class: AbstractEndpoint
        Close 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:
        destroySocket in class AbstractEndpoint<java.lang.Long,​java.lang.Long>
        Parameters:
        socket - The newly accepted socket
      • getLog

        protected Log getLog()
        Deprecated.
        Specified by:
        getLog in class AbstractEndpoint<java.lang.Long,​java.lang.Long>