Undertow WildFly Subsystem Configuration
External
- EAP 7.0 Beta Configuration Guide https://access.redhat.com/documentation/en/red-hat-jboss-enterprise-application-platform/7.0.beta/configuration-guide/chapter-9-configuring-the-web-server-undertow
Internal
Overview
... <subsystem xmlns="urn:jboss:domain:undertow:3.0"> <buffer-cache name="default"/> <server name="default-server"> <http-listener name="default" worker="default" redirect-socket="https" socket-binding="http"/> <host name="default-host" alias="localhost"> <location name="/" handler="welcome-content"/> <filter-ref name="server-header"/> <filter-ref name="x-powered-by-header"/> </host> </server> <servlet-container name="default"> <jsp-config/> <websockets/> </servlet-container> <handlers> <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/> </handlers> <filters> <response-header name="server-header" header-value="JBoss-EAP/7" header-name="Server"/> <response-header name="x-powered-by-header" header-value="Undertow/1" header-name="X-Powered-By"/> </filters> </subsystem> ...
Schema
Configuration Elements
buffer-cache
server
http-listener
Note that the this http listener is also used by JBoss Remoting HTTP connector, so if the name of the listener changes, the http-connector's connector-ref should be changed accordingly.
name
worker
The HTTP listener uses the XNIO Worker declared and configured by the io subsystem. The XNIO worker's configuration is described here: io subsystem worker configuration. The default value is "default".
redirect-socket
socket-binding
record-request-start-time
By default, the request start time is not recorded, so request duration can't be calculated to be reported by the access log. In order to be able to get request duration, we need to enable request start time (record-request-start-time="true") as follows, on each listener we need to collect statistics from:
<subsystem xmlns="urn:jboss:domain:undertow:1.1"> ... <server name="default-server" > <http-listener name="http" ... record-request-start-time="true"/> <ajp-listener name="ajp" ... record-request-start-time="true"/> ... </server> </subsystem>
%D and %T access log elements will work only after record-request-start-time is turned on . For more details see access-log %D and access-log %T. Note that if both ajp-listener and http-listener are used, record-request-start-time="true" must be set on both of them.
ajp-listener
record-request-start-time
- See http-listener's record-request-start-time
host
location
filter-ref
Specifies the name of a filter declared below in the <filters/> section.
If more than one filter is specified here, the filters are executed in the order of their declared priority.
access-log
Configures Undertow to generate access logs according to a certain pattern. The functionality is similar to Tomcat's AccessLogValve. For more details see Tomcat Configuration.
servlet-container
handlers
filters
Configuring Filters
Configuring a Custom Undertow Filter in WildFly
Adding a RequestDumper
TODO: not tested yet.
... <host name="default-host" > ... <filter-ref name="request-dumper"/> </host> ... <filters> ... <filter name="request-dumper" class-name="io.undertow.server.handlers.RequestDumpingHandler" module="io.undertow.core"/> </filters> ...