org.apache.coyote

## Interface ProtocolHandler

- All Known Implementing Classes:
    AbstractAjpProtocol, AbstractHttp11JsseProtocol, AbstractHttp11Protocol, AbstractProtocol, AjpAprProtocol, AjpNio2Protocol, AjpNioProtocol, Http11AprProtocol, Http11Nio2Protocol, Http11NioProtocol

      public interface ProtocolHandler

  Abstract 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 and Description
    --- | ---
    `void` | `addSslHostConfig(SSLHostConfig sslHostConfig)` Add a new SSL configuration for a virtual host.
    `void` | `addUpgradeProtocol(UpgradeProtocol upgradeProtocol)` Add a new protocol for used by HTTP/1.1 upgrade or ALPN.
    `void` | `closeServerSocketGraceful()` Close the server socket (to prevent further connections) if the server socket was bound on `start()` (rather than on `init()` but do not perform any further shutdown.
    `static ProtocolHandler` | `create(String protocol, boolean apr)` Create a new ProtocolHandler for the given protocol.
    `void` | `destroy()` 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.
    `Adapter` | `getAdapter()` Return the adapter associated with the protocol handler.
    `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.
    `Executor` | `getExecutor()` The executor, provide access to the underlying thread pool.
    `ScheduledExecutorService` | `getUtilityExecutor()` Get the utility executor that should be used by the protocol handler.
    `void` | `init()` Initialise the protocol.
    `boolean` | `isAprRequired()` Requires APR/native library
    `boolean` | `isSendfileSupported()` Does this ProtocolHandler support sendfile?
    `void` | `pause()` Pause the protocol (optional).
    `void` | `resume()` Resume the protocol (optional).
    `void` | `setAdapter(Adapter adapter)` The adapter, used to call the connector.
    `void` | `setExecutor(Executor executor)` Set the optional executor that will be used by the connector.
    `void` | `setUtilityExecutor(ScheduledExecutorService utilityExecutor)` Set the utility executor that should be used by the protocol handler.
    `void` | `start()` Start the protocol.
    `void` | `stop()` 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

          Executor getExecutor()

      The executor, provide access to the underlying thread pool.
      Returns:
        The executor used to process requests

    - #### setExecutor

          void setExecutor(Executor executor)

      Set the optional executor that will be used by the connector.
      Parameters:
        `executor` - the executor

    - #### getUtilityExecutor

          ScheduledExecutorService getUtilityExecutor()

      Get the utility executor that should be used by the protocol handler.
      Returns:
        the executor

    - #### setUtilityExecutor

          void setUtilityExecutor(ScheduledExecutorService utilityExecutor)

      Set the utility executor that should be used by the protocol handler.
      Parameters:
        `utilityExecutor` - the executor

    - #### init

          void init()
             throws Exception

      Initialise the protocol.
      Throws:
        `Exception` - If the protocol handler fails to initialise

    - #### start

          void start()
              throws Exception

      Start the protocol.
      Throws:
        `Exception` - If the protocol handler fails to start

    - #### pause

          void pause()
              throws Exception

      Pause the protocol (optional).
      Throws:
        `Exception` - If the protocol handler fails to pause

    - #### resume

          void resume()
               throws Exception

      Resume the protocol (optional).
      Throws:
        `Exception` - If the protocol handler fails to resume

    - #### stop

          void stop()
             throws Exception

      Stop the protocol.
      Throws:
        `Exception` - If the protocol handler fails to stop

    - #### destroy

          void destroy()
                throws Exception

      Destroy the protocol (optional).
      Throws:
        `Exception` - If the protocol handler fails to destroy

    - #### closeServerSocketGraceful

          void closeServerSocketGraceful()

      Close the server socket (to prevent further connections) if the server socket was bound on `start()` (rather than on `init()` but do not perform any further shutdown.

    - #### isAprRequired

          boolean isAprRequired()

      Requires APR/native library
      Returns:
        `true` if this Protocol Handler requires the APR/native library, otherwise `false`

    - #### isSendfileSupported

          boolean isSendfileSupported()

      Does this ProtocolHandler support sendfile?
      Returns:
        `true` if this Protocol Handler supports sendfile, otherwise `false`

    - #### 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(String protocol,
                                        boolean apr)
                                 throws ClassNotFoundException,
                                        InstantiationException,
                                        IllegalAccessException,
                                        IllegalArgumentException,
                                        InvocationTargetException,
                                        NoSuchMethodException,
                                        SecurityException

      Create a new ProtocolHandler for the given protocol.
      Parameters:
        `protocol` - the protocol
        `apr` - if `true` the APR protcol handler will be used
      Returns:
        the newly instantiated protocol handler
      Throws:
        `ClassNotFoundException` - Specified protocol was not found
        `InstantiationException` - Specified protocol could not be instantiated
        `IllegalAccessException` - Exception occurred
        `IllegalArgumentException` - Exception occurred
        `InvocationTargetException` - Exception occurred
        `NoSuchMethodException` - Exception occurred
        `SecurityException` - Exception occurred

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