## Children (1)

- host

## Provided Capabilities (1)

Name | Dynamic | Other provider points
--- | --- | ---
org.wildfly.extension.undertow.handler | true | /subsystem=undertow/configuration=handler/file=*

## Attributes (10)

- cached-connections-per-thread - The number of connections that will be kept alive indefinitely

  Type | INT
  Default Value | 5
  Is the attribute nillable? | true
  Does the attribute allow expression? | true
  Where is the attribute stored? | configuration
  Access Type | read-write
  Is restarted required? | all-services
  Stability Level | default
  Raw DMR model |
      {
          "type" : {
              "TYPE_MODEL_VALUE" : "INT"
          },
          "description" : "The number of connections that will be kept alive indefinitely",
          "expressions-allowed" : true,
          "required" : false,
          "nillable" : true,
          "default" : 5,
          "stability" : "default",
          "access-type" : "read-write",
          "storage" : "configuration",
          "restart-required" : "all-services",
          "capability-reference" : null
      }

- connection-idle-timeout - The amount of time a connection can be idle before it will be closed. Connections will not time out once the pool size is down to the configured minimum (as configured by cached-connections-per-thread)

  Type | INT
  Default Value | 60000
  Unit | MILLISECONDS
  Is the attribute nillable? | true
  Does the attribute allow expression? | true
  Where is the attribute stored? | configuration
  Access Type | read-write
  Is restarted required? | all-services
  Stability Level | default
  Raw DMR model |
      {
          "type" : {
              "TYPE_MODEL_VALUE" : "INT"
          },
          "description" : "The amount of time a connection can be idle before it will be closed. Connections will not time out once the pool size is down to the configured minimum (as configured by cached-connections-per-thread)",
          "expressions-allowed" : true,
          "required" : false,
          "nillable" : true,
          "default" : 60000,
          "unit" : "MILLISECONDS",
          "stability" : "default",
          "access-type" : "read-write",
          "storage" : "configuration",
          "restart-required" : "all-services",
          "capability-reference" : null
      }

- connections-per-thread - The number of connections that will be maintained to backend servers, per IO thread.

  Type | INT
  Default Value | 40
  Is the attribute nillable? | true
  Does the attribute allow expression? | true
  Where is the attribute stored? | configuration
  Access Type | read-write
  Is restarted required? | all-services
  Stability Level | default
  Raw DMR model |
      {
          "type" : {
              "TYPE_MODEL_VALUE" : "INT"
          },
          "description" : "The number of connections that will be maintained to backend servers, per IO thread.",
          "expressions-allowed" : true,
          "required" : false,
          "nillable" : true,
          "default" : 40,
          "stability" : "default",
          "access-type" : "read-write",
          "storage" : "configuration",
          "restart-required" : "all-services",
          "capability-reference" : null
      }

- max-request-time - The maximum time that a proxy request can be active for, before being killed

  Type | INT
  Default Value | -1
  Unit | MILLISECONDS
  Is the attribute nillable? | true
  Does the attribute allow expression? | true
  Where is the attribute stored? | configuration
  Access Type | read-write
  Is restarted required? | all-services
  Stability Level | default
  Raw DMR model |
      {
          "type" : {
              "TYPE_MODEL_VALUE" : "INT"
          },
          "description" : "The maximum time that a proxy request can be active for, before being killed",
          "expressions-allowed" : true,
          "required" : false,
          "nillable" : true,
          "default" : -1,
          "unit" : "MILLISECONDS",
          "stability" : "default",
          "access-type" : "read-write",
          "storage" : "configuration",
          "restart-required" : "all-services",
          "capability-reference" : null
      }

- max-retries - The number of times to attempt to retry a request if it fails. Note that if a request is not considered idempotent then it will only be retried if the proxy can be sure it was not sent to the backend server).

  Type | INT
  Default Value | 1
  Is the attribute nillable? | true
  Does the attribute allow expression? | true
  Where is the attribute stored? | configuration
  Access Type | read-write
  Is restarted required? | all-services
  Stability Level | default
  Raw DMR model |
      {
          "type" : {
              "TYPE_MODEL_VALUE" : "INT"
          },
          "description" : "The number of times to attempt to retry a request if it fails. Note that if a request is not considered idempotent then it will only be retried if the proxy can be sure it was not sent to the backend server).",
          "expressions-allowed" : true,
          "required" : false,
          "nillable" : true,
          "default" : 1,
          "stability" : "default",
          "access-type" : "read-write",
          "storage" : "configuration",
          "restart-required" : "all-services",
          "capability-reference" : null
      }

- problem-server-retry - Time in seconds to wait before attempting to reconnect to a server that is down

  Type | INT
  Default Value | 30
  Unit | SECONDS
  Is the attribute nillable? | true
  Does the attribute allow expression? | true
  Where is the attribute stored? | configuration
  Access Type | read-write
  Is restarted required? | all-services
  Stability Level | default
  Raw DMR model |
      {
          "type" : {
              "TYPE_MODEL_VALUE" : "INT"
          },
          "description" : "Time in seconds to wait before attempting to reconnect to a server that is down",
          "expressions-allowed" : true,
          "required" : false,
          "nillable" : true,
          "default" : 30,
          "unit" : "SECONDS",
          "stability" : "default",
          "access-type" : "read-write",
          "storage" : "configuration",
          "restart-required" : "all-services",
          "capability-reference" : null
      }

- request-queue-size - The number of requests that can be queued if the connection pool is full before requests are rejected with a 503

  Type | INT
  Default Value | 10
  Is the attribute nillable? | true
  Does the attribute allow expression? | true
  Where is the attribute stored? | configuration
  Access Type | read-write
  Is restarted required? | all-services
  Stability Level | default
  Raw DMR model |
      {
          "type" : {
              "TYPE_MODEL_VALUE" : "INT"
          },
          "description" : "The number of requests that can be queued if the connection pool is full before requests are rejected with a 503",
          "expressions-allowed" : true,
          "required" : false,
          "nillable" : true,
          "default" : 10,
          "stability" : "default",
          "access-type" : "read-write",
          "storage" : "configuration",
          "restart-required" : "all-services",
          "capability-reference" : null
      }

- 🅲 reuse-x-forwarded-header - Append(reuse existing) remote hop to x-forwarded-* headers, if not, previous value is discarded and remote hop becomes the value.

  Type | BOOLEAN
  Default Value | false
  Is the attribute nillable? | true
  Does the attribute allow expression? | true
  Where is the attribute stored? | configuration
  Access Type | read-write
  Is restarted required? | all-services
  Stability Level | community
  Raw DMR model |
      {
          "type" : {
              "TYPE_MODEL_VALUE" : "BOOLEAN"
          },
          "description" : "Append(reuse existing) remote hop to x-forwarded-* headers, if not, previous value is discarded and remote hop becomes the value.",
          "expressions-allowed" : true,
          "required" : false,
          "nillable" : true,
          "default" : false,
          "stability" : "community",
          "access-type" : "read-write",
          "storage" : "configuration",
          "restart-required" : "all-services",
          "capability-reference" : null
      }

- 🅲 rewrite-host-header - Set host header to connection remote end and create x-forwarded-host header.

  Type | BOOLEAN
  Default Value | false
  Is the attribute nillable? | true
  Does the attribute allow expression? | true
  Where is the attribute stored? | configuration
  Access Type | read-write
  Is restarted required? | all-services
  Stability Level | community
  Raw DMR model |
      {
          "type" : {
              "TYPE_MODEL_VALUE" : "BOOLEAN"
          },
          "description" : "Set host header to connection remote end and create x-forwarded-host header.",
          "expressions-allowed" : true,
          "required" : false,
          "nillable" : true,
          "default" : false,
          "stability" : "community",
          "access-type" : "read-write",
          "storage" : "configuration",
          "restart-required" : "all-services",
          "capability-reference" : null
      }

- session-cookie-names - Comma separated list of session cookie names. Generally this will just be JSESSIONID.

  Type | STRING
  Default Value | JSESSIONID
  Is the attribute nillable? | true
  Does the attribute allow expression? | true
  Where is the attribute stored? | configuration
  Access Type | read-write
  Is restarted required? | all-services
  Stability Level | default
  Raw DMR model |
      {
          "type" : {
              "TYPE_MODEL_VALUE" : "STRING"
          },
          "description" : "Comma separated list of session cookie names. Generally this will just be JSESSIONID.",
          "expressions-allowed" : true,
          "required" : false,
          "nillable" : true,
          "default" : "JSESSIONID",
          "min-length" : 1,
          "max-length" : 2147483647,
          "stability" : "default",
          "access-type" : "read-write",
          "storage" : "configuration",
          "restart-required" : "all-services",
          "capability-reference" : null
      }

## Operations (2)

- add - Adds a reverse proxy handler

  Request Parameter | Type | Required | Expressions Allowed | Default value | Description
  --- | --- | --- | --- | --- | ---
  cached-connections-per-thread | INT | false | true | 5 | The number of connections that will be kept alive indefinitely
  connection-idle-timeout | INT | false | true | 60000 | The amount of time a connection can be idle before it will be closed. Connections will not time out once the pool size is down to the configured minimum (as configured by cached-connections-per-thread)
  connections-per-thread | INT | false | true | 40 | The number of connections that will be maintained to backend servers, per IO thread.
  max-request-time | INT | false | true | -1 | The maximum time that a proxy request can be active for, before being killed
  max-retries | INT | false | true | 1 | The number of times to attempt to retry a request if it fails. Note that if a request is not considered idempotent then it will only be retried if the proxy can be sure it was not sent to the backend server).
  problem-server-retry | INT | false | true | 30 | Time in seconds to wait before attempting to reconnect to a server that is down
  request-queue-size | INT | false | true | 10 | The number of requests that can be queued if the connection pool is full before requests are rejected with a 503
  reuse-x-forwarded-header | BOOLEAN | false | true | false | Append(reuse existing) remote hop to x-forwarded-* headers, if not, previous value is discarded and remote hop becomes the value.
  rewrite-host-header | BOOLEAN | false | true | false | Set host header to connection remote end and create x-forwarded-host header.
  session-cookie-names | STRING | false | true | JSESSIONID | Comma separated list of session cookie names. Generally this will just be JSESSIONID.

  Raw DMR model |
      {
          "operation-name" : "add",
          "description" : "Adds a reverse proxy handler",
          "request-properties" : {
              "cached-connections-per-thread" : {
                  "type" : {
                      "TYPE_MODEL_VALUE" : "INT"
                  },
                  "description" : "The number of connections that will be kept alive indefinitely",
                  "expressions-allowed" : true,
                  "required" : false,
                  "nillable" : true,
                  "default" : 5,
                  "stability" : "default"
              },
              "connection-idle-timeout" : {
                  "type" : {
                      "TYPE_MODEL_VALUE" : "INT"
                  },
                  "description" : "The amount of time a connection can be idle before it will be closed. Connections will not time out once the pool size is down to the configured minimum (as configured by cached-connections-per-thread)",
                  "expressions-allowed" : true,
                  "required" : false,
                  "nillable" : true,
                  "default" : 60000,
                  "unit" : "MILLISECONDS",
                  "stability" : "default"
              },
              "connections-per-thread" : {
                  "type" : {
                      "TYPE_MODEL_VALUE" : "INT"
                  },
                  "description" : "The number of connections that will be maintained to backend servers, per IO thread.",
                  "expressions-allowed" : true,
                  "required" : false,
                  "nillable" : true,
                  "default" : 40,
                  "stability" : "default"
              },
              "max-request-time" : {
                  "type" : {
                      "TYPE_MODEL_VALUE" : "INT"
                  },
                  "description" : "The maximum time that a proxy request can be active for, before being killed",
                  "expressions-allowed" : true,
                  "required" : false,
                  "nillable" : true,
                  "default" : -1,
                  "unit" : "MILLISECONDS",
                  "stability" : "default"
              },
              "max-retries" : {
                  "type" : {
                      "TYPE_MODEL_VALUE" : "INT"
                  },
                  "description" : "The number of times to attempt to retry a request if it fails. Note that if a request is not considered idempotent then it will only be retried if the proxy can be sure it was not sent to the backend server).",
                  "expressions-allowed" : true,
                  "required" : false,
                  "nillable" : true,
                  "default" : 1,
                  "stability" : "default"
              },
              "problem-server-retry" : {
                  "type" : {
                      "TYPE_MODEL_VALUE" : "INT"
                  },
                  "description" : "Time in seconds to wait before attempting to reconnect to a server that is down",
                  "expressions-allowed" : true,
                  "required" : false,
                  "nillable" : true,
                  "default" : 30,
                  "unit" : "SECONDS",
                  "stability" : "default"
              },
              "request-queue-size" : {
                  "type" : {
                      "TYPE_MODEL_VALUE" : "INT"
                  },
                  "description" : "The number of requests that can be queued if the connection pool is full before requests are rejected with a 503",
                  "expressions-allowed" : true,
                  "required" : false,
                  "nillable" : true,
                  "default" : 10,
                  "stability" : "default"
              },
              "reuse-x-forwarded-header" : {
                  "type" : {
                      "TYPE_MODEL_VALUE" : "BOOLEAN"
                  },
                  "description" : "Append(reuse existing) remote hop to x-forwarded-* headers, if not, previous value is discarded and remote hop becomes the value.",
                  "expressions-allowed" : true,
                  "required" : false,
                  "nillable" : true,
                  "default" : false,
                  "stability" : "community"
              },
              "rewrite-host-header" : {
                  "type" : {
                      "TYPE_MODEL_VALUE" : "BOOLEAN"
                  },
                  "description" : "Set host header to connection remote end and create x-forwarded-host header.",
                  "expressions-allowed" : true,
                  "required" : false,
                  "nillable" : true,
                  "default" : false,
                  "stability" : "community"
              },
              "session-cookie-names" : {
                  "type" : {
                      "TYPE_MODEL_VALUE" : "STRING"
                  },
                  "description" : "Comma separated list of session cookie names. Generally this will just be JSESSIONID.",
                  "expressions-allowed" : true,
                  "required" : false,
                  "nillable" : true,
                  "default" : "JSESSIONID",
                  "min-length" : 1,
                  "max-length" : 2147483647,
                  "stability" : "default"
              }
          },
          "reply-properties" : {},
          "stability" : "default",
          "read-only" : false,
          "restart-required" : "resource-services",
          "runtime-only" : false
      }

- remove - Removes a reverse proxy handler

  Raw DMR model |
      {
          "operation-name" : "remove",
          "description" : "Removes a reverse proxy handler",
          "request-properties" : {},
          "reply-properties" : {},
          "stability" : "default",
          "read-only" : false,
          "restart-required" : "resource-services",
          "runtime-only" : false
      }

## Galleon Features

Galleon features are to be used when creating Galleon feature-packs.

- subsystem.undertow.configuration.handler.reverse-proxy

      <feature spec="subsystem.undertow.configuration.handler.reverse-proxy">
        <param name="reverse-proxy" value="{resource name}"/>
        <param name="cached-connections-per-thread" value="{value}"/>
        <param name="connection-idle-timeout" value="{value}"/>
        <param name="connections-per-thread" value="{value}"/>
        <param name="max-request-time" value="{value}"/>
        <param name="max-retries" value="{value}"/>
        <param name="problem-server-retry" value="{value}"/>
        <param name="request-queue-size" value="{value}"/>
        <param name="reuse-x-forwarded-header" value="{value}"/>
        <param name="rewrite-host-header" value="{value}"/>
        <param name="session-cookie-names" value="{value}"/>
      <feature/>