<?xml version="1.0" ?>

<domain xmlns="urn:jboss:domain:19.0">
    <extensions>
        <extension module="org.jboss.as.ee"/>
        <extension module="org.jboss.as.jmx"/>
        <extension module="org.jboss.as.logging"/>
        <extension module="org.jboss.as.naming"/>
        <extension module="org.wildfly.extension.core-management"/>
        <extension module="org.wildfly.extension.elytron"/>
        <extension module="org.wildfly.extension.io"/>
        <extension module="org.wildfly.extension.request-controller"/>
        <extension module="org.wildfly.extension.security.manager"/>
        <extension module="org.wildfly.extension.undertow"/>
    </extensions>
    <system-properties>
        <property name="java.net.preferIPv4Stack" value="true"/>
    </system-properties>
    <management>
        <access-control provider="simple">
            <role-mapping>
                <role name="SuperUser">
                    <include>
                        <user name="$local"/>
                    </include>
                </role>
            </role-mapping>
        </access-control>
    </management>
    <profiles>
        <profile name="default">
            <subsystem xmlns="urn:jboss:domain:logging:8.0">
                <periodic-rotating-file-handler name="FILE" autoflush="true">
                    <formatter>
                        <named-formatter name="PATTERN"/>
                    </formatter>
                    <file relative-to="jboss.server.log.dir" path="server.log"/>
                    <suffix value=".yyyy-MM-dd"/>
                    <append value="true"/>
                </periodic-rotating-file-handler>
                <logger category="com.arjuna">
                    <level name="WARN"/>
                </logger>
                <logger category="io.jaegertracing.Configuration">
                    <level name="WARN"/>
                </logger>
                <logger category="org.jboss.as.config">
                    <level name="DEBUG"/>
                </logger>
                <logger category="sun.rmi">
                    <level name="WARN"/>
                </logger>
                <root-logger>
                    <level name="INFO"/>
                    <handlers>
                        <handler name="FILE"/>
                    </handlers>
                </root-logger>
                <formatter name="PATTERN">
                    <pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n"/>
                </formatter>
                <formatter name="COLOR-PATTERN">
                    <pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n"/>
                </formatter>
            </subsystem>
            <subsystem xmlns="urn:jboss:domain:core-management:1.0"/>
            <subsystem xmlns="urn:jboss:domain:ee:6.0">
                <spec-descriptor-property-replacement>false</spec-descriptor-property-replacement>
                <concurrent>
                    <context-services>
                        <context-service name="default" jndi-name="java:jboss/ee/concurrency/context/default" use-transaction-setup-provider="false"/>
                    </context-services>
                    <managed-thread-factories>
                        <managed-thread-factory name="default" jndi-name="java:jboss/ee/concurrency/factory/default" context-service="default"/>
                    </managed-thread-factories>
                    <managed-executor-services>
                        <managed-executor-service name="default" jndi-name="java:jboss/ee/concurrency/executor/default" context-service="default" hung-task-termination-period="0" hung-task-threshold="60000" keepalive-time="5000"/>
                    </managed-executor-services>
                    <managed-scheduled-executor-services>
                        <managed-scheduled-executor-service name="default" jndi-name="java:jboss/ee/concurrency/scheduler/default" context-service="default" hung-task-termination-period="0" hung-task-threshold="60000" keepalive-time="3000"/>
                    </managed-scheduled-executor-services>
                </concurrent>
                <default-bindings context-service="java:jboss/ee/concurrency/context/default" managed-executor-service="java:jboss/ee/concurrency/executor/default" managed-scheduled-executor-service="java:jboss/ee/concurrency/scheduler/default" managed-thread-factory="java:jboss/ee/concurrency/factory/default"/>
            </subsystem>
            <subsystem xmlns="urn:wildfly:elytron:15.1" final-providers="combined-providers" disallowed-providers="OracleUcrypto">
                <providers>
                    <aggregate-providers name="combined-providers">
                        <providers name="elytron"/>
                        <providers name="openssl"/>
                    </aggregate-providers>
                    <provider-loader name="elytron" module="org.wildfly.security.elytron"/>
                    <provider-loader name="openssl" module="org.wildfly.openssl"/>
                </providers>
                <audit-logging>
                    <file-audit-log name="local-audit" path="audit.log" relative-to="jboss.server.log.dir" format="JSON"/>
                </audit-logging>
                <security-domains>
                    <security-domain name="ApplicationDomain" default-realm="ApplicationRealm" permission-mapper="default-permission-mapper">
                        <realm name="ApplicationRealm" role-decoder="groups-to-roles"/>
                    </security-domain>
                </security-domains>
                <security-realms>
                    <identity-realm name="local" identity="$local"/>
                    <properties-realm name="ApplicationRealm">
                        <users-properties path="application-users.properties" relative-to="jboss.domain.config.dir" digest-realm-name="ApplicationRealm"/>
                        <groups-properties path="application-roles.properties" relative-to="jboss.domain.config.dir"/>
                    </properties-realm>
                </security-realms>
                <mappers>
                    <simple-permission-mapper name="default-permission-mapper" mapping-mode="first">
                        <permission-mapping>
                            <principal name="anonymous"/>
                            <permission-set name="default-permissions"/>
                        </permission-mapping>
                        <permission-mapping match-all="true">
                            <permission-set name="login-permission"/>
                            <permission-set name="default-permissions"/>
                        </permission-mapping>
                    </simple-permission-mapper>
                    <constant-realm-mapper name="local" realm-name="local"/>
                    <simple-role-decoder name="groups-to-roles" attribute="groups"/>
                    <constant-role-mapper name="super-user-mapper">
                        <role name="SuperUser"/>
                    </constant-role-mapper>
                </mappers>
                <permission-sets>
                    <permission-set name="login-permission">
                        <permission class-name="org.wildfly.security.auth.permission.LoginPermission"/>
                    </permission-set>
                    <permission-set name="default-permissions"/>
                </permission-sets>
                <http>
                    <provider-http-server-mechanism-factory name="global"/>
                </http>
                <sasl>
                    <sasl-authentication-factory name="application-sasl-authentication" sasl-server-factory="configured" security-domain="ApplicationDomain">
                        <mechanism-configuration>
                            <mechanism mechanism-name="JBOSS-LOCAL-USER" realm-mapper="local"/>
                            <mechanism mechanism-name="DIGEST-MD5">
                                <mechanism-realm realm-name="ApplicationRealm"/>
                            </mechanism>
                        </mechanism-configuration>
                    </sasl-authentication-factory>
                    <configurable-sasl-server-factory name="configured" sasl-server-factory="elytron">
                        <properties>
                            <property name="wildfly.sasl.local-user.default-user" value="$local"/>
                            <property name="wildfly.sasl.local-user.challenge-path" value="${jboss.server.temp.dir}/auth"/>
                        </properties>
                    </configurable-sasl-server-factory>
                    <mechanism-provider-filtering-sasl-server-factory name="elytron" sasl-server-factory="global">
                        <filters>
                            <filter provider-name="WildFlyElytron"/>
                        </filters>
                    </mechanism-provider-filtering-sasl-server-factory>
                    <provider-sasl-server-factory name="global"/>
                </sasl>
                <tls>
                    <key-stores>
                        <key-store name="applicationKS">
                            <credential-reference clear-text="password"/>
                            <implementation type="JKS"/>
                            <file path="application.keystore" relative-to="jboss.domain.config.dir"/>
                        </key-store>
                    </key-stores>
                    <key-managers>
                        <key-manager name="applicationKM" key-store="applicationKS" generate-self-signed-certificate-host="localhost">
                            <credential-reference clear-text="password"/>
                        </key-manager>
                    </key-managers>
                    <server-ssl-contexts>
                        <server-ssl-context name="applicationSSC" key-manager="applicationKM"/>
                    </server-ssl-contexts>
                </tls>
            </subsystem>
            <subsystem xmlns="urn:jboss:domain:io:3.0">
                <worker name="default"/>
                <buffer-pool name="default"/>
            </subsystem>
            <subsystem xmlns="urn:jboss:domain:jmx:1.3">
                <expose-resolved-model/>
                <expose-expression-model/>
            </subsystem>
            <subsystem xmlns="urn:jboss:domain:naming:2.0"/>
            <subsystem xmlns="urn:jboss:domain:request-controller:1.0"/>
            <subsystem xmlns="urn:jboss:domain:security-manager:1.0">
                <deployment-permissions>
                    <maximum-set>
                        <permission class="java.security.AllPermission"/>
                    </maximum-set>
                </deployment-permissions>
            </subsystem>
            <subsystem xmlns="urn:jboss:domain:undertow:12.0" default-server="default-server" default-virtual-host="default-host" default-servlet-container="default" default-security-domain="other" statistics-enabled="${wildfly.undertow.statistics-enabled:${wildfly.statistics-enabled:false}}">
                <buffer-cache name="default"/>
                <server name="default-server">
                    <http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true"/>
                    <https-listener name="https" socket-binding="https" ssl-context="applicationSSC" enable-http2="true"/>
                    <host name="default-host" alias="localhost">
                        <location name="/" handler="welcome-content"/>
                        <http-invoker/>
                    </host>
                </server>
                <servlet-container name="default">
                    <jsp-config/>
                    <websockets/>
                </servlet-container>
                <handlers>
                    <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
                </handlers>
            </subsystem>
        </profile>
    </profiles>
    <interfaces>
        <interface name="management"/>
        <interface name="private"/>
        <interface name="public"/>
        <interface name="unsecure"/>
    </interfaces>
    <socket-binding-groups>
        <socket-binding-group name="standard-sockets" default-interface="public">
            <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
            <socket-binding name="http" port="${jboss.http.port:8080}"/>
            <socket-binding name="https" port="${jboss.https.port:8443}"/>
        </socket-binding-group>
    </socket-binding-groups>
    <server-groups>
        <server-group name="main-server-group" profile="default">
            <jvm name="default">
                <heap size="64m" max-size="512m"/>
            </jvm>
            <socket-binding-group ref="standard-sockets"/>
        </server-group>
        <server-group name="other-server-group" profile="default">
            <socket-binding-group ref="standard-sockets"/>
        </server-group>
    </server-groups>
    <host-excludes>
        <host-exclude name="WildFly10.0">
            <host-release id="WildFly10.0"/>
            <excluded-extensions>
                <extension module="org.wildfly.extension.core-management"/>
                <extension module="org.wildfly.extension.discovery"/>
                <extension module="org.wildfly.extension.elytron"/>
            </excluded-extensions>
        </host-exclude>
        <host-exclude name="WildFly10.1">
            <host-release id="WildFly10.1"/>
            <excluded-extensions>
                <extension module="org.wildfly.extension.core-management"/>
                <extension module="org.wildfly.extension.discovery"/>
                <extension module="org.wildfly.extension.elytron"/>
            </excluded-extensions>
        </host-exclude>
    </host-excludes>
</domain>