immutant.web.undertow

Advanced options specific to the Undertow web server used by Immutant

graceful-shutdown

(graceful-shutdown handler timeout)

Creates an io.undertow.server.handlers/GracefulShutdownHandler with the passed HttpHandler and returns it, after adding an immutant.util/at-exit fn that prohibits new requests while waiting for pending ones to complete, up to a specified number of milliseconds

http-handler

(http-handler handler)

Create an Undertow HttpHandler instance from a Ring handler function

options

Takes a map of Undertow-specific options and replaces them with an Undertow$Builder instance associated with :configuration. Three types of listeners are supported: :port (HTTP), :ssl-port (HTTPS), and :ajp-port (AJP)

The following keyword options are supported:

  • :configuration - the Builder that, if passed, will be used

Common to all listeners:

  • :host - the interface listener bound to, defaults to “localhost”

HTTP:

  • :port - a number, for a standard HTTP listener

AJP:

  • :ajp-port - a number, for an Apache JServ Protocol listener

HTTPS:

  • :ssl-port - a number, requires either :ssl-context, :keystore, or :key-managers

  • :keystore - the filepath (a String) to the keystore

  • :key-password - the password for the keystore
  • :truststore - if separate from the keystore
  • :trust-password - if :truststore passed
  • :ssl-context - a valid javax.net.ssl.SSLContext

  • :key-managers - a valid javax.net.ssl.KeyManager[]
  • :trust-managers - a valid javax.net.ssl.TrustManager[]
  • :client-auth - SSL client auth, may be :want or :need

  • :http2? - whether to enable HTTP 2.0 support

Tuning:

  • :io-threads - # threads handling IO, defaults to available processors
  • :worker-threads - # threads invoking handlers, defaults to (* io-threads 8)
  • :buffer-size - a number, defaults to 16k for modern servers
  • :buffers-per-region - a number, defaults to 10
  • :direct-buffers? - boolean, defaults to true