Apache Tomcat 7.0.42

## org.apache.tomcat.util.net
Class JIoEndpoint

    java.lang.Object
      org.apache.tomcat.util.net.AbstractEndpoint
          org.apache.tomcat.util.net.JIoEndpoint

    public class JIoEndpoint

extends AbstractEndpoint

Handle incoming TCP connections. This class implement a simple server model: one listener thread accepts on a socket and creates a new worker thread for each incoming connection. More advanced Endpoints will reuse the threads, use queues, etc.

Author:
  James Duncan Davidson, Jason Hunter, James Todd, Costin Manolache, Gal Shachor, Yoav Shapira, Remy Maucherat

Nested Class Summary
`protected class` `JIoEndpoint.Acceptor` The background thread that listens for incoming TCP/IP connections and hands them off to an appropriate processor.
`protected class` `JIoEndpoint.AsyncTimeout` Async timeout thread
`static interface` `JIoEndpoint.Handler` Bare bones interface used for socket processing.
`protected class` `JIoEndpoint.SocketProcessor` This 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`

Field Summary
`protected JIoEndpoint.Handler` `handler` Handling of accepted sockets.
`protected ServerSocket` `serverSocket` Associated server socket.
`protected ServerSocketFactory` `serverSocketFactory` Server socket factory.
`protected ConcurrentLinkedQueue<SocketWrapper<Socket>>` `waitingRequests`

Fields inherited from class org.apache.tomcat.util.net.AbstractEndpoint
`acceptors, acceptorThreadCount, acceptorThreadPriority, attributes, internalExecutor, paused, running, sm, socketProperties, threadPriority`

Constructor Summary
`JIoEndpoint()`

Method Summary
`void` `bind()`
`protected AbstractEndpoint.Acceptor` `createAcceptor()` Hook to allow Endpoints to provide a specific Acceptor implementation.
`boolean` `getDeferAccept()`
`JIoEndpoint.Handler` `getHandler()`
`int` `getLocalPort()` Port in use.
`protected Log` `getLog()`
`ServerSocketFactory` `getServerSocketFactory()`
`boolean` `getUseComet()`
`boolean` `getUseCometTimeout()`
`boolean` `getUsePolling()`
`boolean` `getUseSendfile()`
`protected boolean` `processSocket(Socket socket)` Process a new connection from a new client.
`boolean` `processSocketAsync(SocketWrapper<Socket> socket, SocketStatus status)` Process an existing async connection.
`void` `setHandler(JIoEndpoint.Handler handler)`
`void` `setServerSocketFactory(ServerSocketFactory factory)`
`protected boolean` `setSocketOptions(Socket socket)` Configure the socket.
`void` `startInternal()`
`void` `stopInternal()`
`void` `unbind()` Deallocate APR memory pools, and close server socket.

Methods inherited from class org.apache.tomcat.util.net.AbstractEndpoint

`adjustRelativePath, countDownConnection, countUpOrAwaitConnection, createExecutor, destroy, getAcceptorThreadCount, getAcceptorThreadPriority, getAddress, getAlgorithm, getAllowUnsafeLegacyRenegotiation, getAttribute, getBacklog, getBindOnInit, getCiphers, getCiphersArray, getClientAuth, getConnectionCount, getCrlFile, getCurrentThreadCount, getCurrentThreadsBusy, getDaemon, getExecutor, getKeepAliveTimeout, getKeyAlias, getKeyPass, getKeystoreFile, getKeystorePass, getKeystoreProvider, getKeystoreType, getMaxConnections, getMaxHeaderCount, getMaxKeepAliveRequests, getMaxThreads, getMaxThreadsExecutor, getMinSpareThreads, getName, getPort, getProperty, getSessionCacheSize, getSessionTimeout, getSocketProperties, getSoLinger, getSoTimeout, getSslEnabledProtocolsArray, getSslProtocol, getTcpNoDelay, getThreadPriority, getTrustManagerClassName, getTrustMaxCertLength, getTruststoreAlgorithm, getTruststoreFile, getTruststorePass, getTruststoreProvider, getTruststoreType, handleExceptionWithDelay, init, initializeConnectionLatch, isPaused, isRunning, isSSLEnabled, pause, releaseConnectionLatch, resume, setAcceptorThreadCount, setAcceptorThreadPriority, setAddress, setAlgorithm, setAllowUnsafeLegacyRenegotiation, setAttribute, setBacklog, setBindOnInit, setCiphers, setClientAuth, setCrlFile, setDaemon, setExecutor, setKeepAliveTimeout, setKeyAlias, setKeyPass, setKeystoreFile, setKeystorePass, setKeystoreProvider, setKeystoreType, setMaxConnections, setMaxHeaderCount, setMaxKeepAliveRequests, setMaxThreads, setMinSpareThreads, setName, setPort, setProperty, setSessionCacheSize, setSessionTimeout, setSoLinger, setSoTimeout, setSSLEnabled, setSslEnabledProtocols, setSslProtocol, setTcpNoDelay, setThreadPriority, setTrustManagerClassName, setTrustMaxCertLength, setTruststoreAlgorithm, setTruststoreFile, setTruststorePass, setTruststoreProvider, setTruststoreType, shutdownExecutor, start, startAcceptorThreads, stop, unlockAccept`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### serverSocket

    protected ServerSocket serverSocket

  Associated server socket.

### handler

    protected JIoEndpoint.Handler handler

  Handling of accepted sockets.

### serverSocketFactory

    protected ServerSocketFactory serverSocketFactory

  Server socket factory.

### waitingRequests

    protected ConcurrentLinkedQueue<SocketWrapper<Socket>> waitingRequests

Constructor Detail

### JIoEndpoint

    public JIoEndpoint()

Method Detail

### setHandler

    public void setHandler(JIoEndpoint.Handler handler)

### getHandler

    public JIoEndpoint.Handler getHandler()

### setServerSocketFactory

    public void setServerSocketFactory(ServerSocketFactory factory)

### getServerSocketFactory

    public ServerSocketFactory getServerSocketFactory()

### getLocalPort

    public int getLocalPort()

  Port in use.

  Specified by:
    `getLocalPort` in class `AbstractEndpoint`

### getUseSendfile

    public boolean getUseSendfile()

  Specified by:
    `getUseSendfile` in class `AbstractEndpoint`

### getUseComet

    public boolean getUseComet()

  Specified by:
    `getUseComet` in class `AbstractEndpoint`

### getUseCometTimeout

    public boolean getUseCometTimeout()

  Specified by:
    `getUseCometTimeout` in class `AbstractEndpoint`

### getDeferAccept

    public boolean getDeferAccept()

  Specified by:
    `getDeferAccept` in class `AbstractEndpoint`

### getUsePolling

    public boolean getUsePolling()

  Specified by:
    `getUsePolling` in class `AbstractEndpoint`

### bind

    public void bind()
              throws Exception

  Specified by:
    `bind` in class `AbstractEndpoint`
  Throws:
    `Exception`

### startInternal

    public void startInternal()
                       throws Exception

  Specified by:
    `startInternal` in class `AbstractEndpoint`
  Throws:
    `Exception`

### stopInternal

    public void stopInternal()

  Specified by:
    `stopInternal` in class `AbstractEndpoint`

### unbind

    public void unbind()
                throws Exception

  Deallocate APR memory pools, and close server socket.

  Specified by:
    `unbind` in class `AbstractEndpoint`
  Throws:
    `Exception`

### createAcceptor

    protected AbstractEndpoint.Acceptor createAcceptor()

  Description copied from class: `AbstractEndpoint`
  Hook to allow Endpoints to provide a specific Acceptor implementation.

  Specified by:
    `createAcceptor` in class `AbstractEndpoint`

### setSocketOptions

    protected boolean setSocketOptions(Socket socket)

  Configure the socket.

### processSocket

    protected boolean processSocket(Socket socket)

  Process a new connection from a new client. Wraps the socket so keep-alive and other attributes can be tracked and then passes the socket to the executor for processing.

  Parameters:
    `socket` - The socket associated with the client.
  Returns:
    `true` if the socket is passed to the executor, `false` if something went wrong or if the endpoint is shutting down. Returning `false` is an indication to close the socket immediately.

### processSocketAsync

    public boolean processSocketAsync(SocketWrapper<Socket> socket,
                                      SocketStatus status)

  Process an existing async connection. If processing is required, passes the wrapped socket to an executor for processing.

  Parameters:
    `socket` - The socket associated with the client.
    `status` - Only OPEN and TIMEOUT are used. The others are used for Comet requests that are not supported by the BIO (JIO) Connector.
  Returns:
    `true` if the socket is passed to the executor, `false` if something went wrong. Returning `false` is an indication to close the socket immediately.

### getLog

    protected Log getLog()

  Specified by:
    `getLog` in class `AbstractEndpoint`

Apache Tomcat 7.0.42

Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.