Ejemplo n.º 1
0
 @Override
 public void initializeParsers(ExtensionParsingContext context) {
   context.setSubsystemXmlMapping(
       SUBSYSTEM_NAME,
       Namespace.UNDERTOW_1_0.getUriString(),
       UndertowSubsystemParser_1_0.INSTANCE);
   context.setSubsystemXmlMapping(
       SUBSYSTEM_NAME,
       Namespace.UNDERTOW_1_1.getUriString(),
       UndertowSubsystemParser_1_1.INSTANCE);
   context.setSubsystemXmlMapping(
       SUBSYSTEM_NAME,
       Namespace.UNDERTOW_1_2.getUriString(),
       UndertowSubsystemParser_1_2.INSTANCE);
   context.setSubsystemXmlMapping(
       SUBSYSTEM_NAME,
       Namespace.UNDERTOW_2_0.getUriString(),
       UndertowSubsystemParser_2_0.INSTANCE);
   context.setSubsystemXmlMapping(
       SUBSYSTEM_NAME,
       Namespace.UNDERTOW_3_0.getUriString(),
       UndertowSubsystemParser_3_0.INSTANCE);
 }
  static {
    xmlDescription =
        builder(UndertowRootDefinition.INSTANCE, Namespace.UNDERTOW_3_0.getUriString())
            .addAttributes(
                UndertowRootDefinition.DEFAULT_VIRTUAL_HOST,
                UndertowRootDefinition.DEFAULT_SERVLET_CONTAINER,
                UndertowRootDefinition.DEFAULT_SERVER,
                UndertowRootDefinition.INSTANCE_ID)
            .addAttribute(UndertowRootDefinition.STATISTICS_ENABLED)
            .addChild(
                builder(BufferCacheDefinition.INSTANCE)
                    .addAttributes(
                        BufferCacheDefinition.BUFFER_SIZE,
                        BufferCacheDefinition.BUFFERS_PER_REGION,
                        BufferCacheDefinition.MAX_REGIONS))
            .addChild(
                builder(ServerDefinition.INSTANCE)
                    .addAttributes(
                        ServerDefinition.DEFAULT_HOST, ServerDefinition.SERVLET_CONTAINER)
                    .addChild(
                        builder(AjpListenerResourceDefinition.INSTANCE)
                            .addAttributes(
                                AjpListenerResourceDefinition.SCHEME,
                                AjpListenerResourceDefinition.BUFFER_POOL,
                                AjpListenerResourceDefinition.ENABLED,
                                AjpListenerResourceDefinition.SOCKET_BINDING,
                                AjpListenerResourceDefinition.WORKER,
                                ListenerResourceDefinition.REDIRECT_SOCKET)
                            .addAttribute(ListenerResourceDefinition.RESOLVE_PEER_ADDRESS)
                            .addAttributes(
                                ListenerResourceDefinition.MAX_HEADER_SIZE,
                                ListenerResourceDefinition.MAX_ENTITY_SIZE,
                                ListenerResourceDefinition.BUFFER_PIPELINED_DATA,
                                ListenerResourceDefinition.MAX_PARAMETERS,
                                ListenerResourceDefinition.MAX_HEADERS,
                                ListenerResourceDefinition.MAX_COOKIES,
                                ListenerResourceDefinition.ALLOW_ENCODED_SLASH,
                                ListenerResourceDefinition.DECODE_URL,
                                ListenerResourceDefinition.URL_CHARSET,
                                ListenerResourceDefinition.ALWAYS_SET_KEEP_ALIVE,
                                ListenerResourceDefinition.MAX_BUFFERED_REQUEST_SIZE,
                                ListenerResourceDefinition.RECORD_REQUEST_START_TIME,
                                ListenerResourceDefinition.ALLOW_EQUALS_IN_COOKIE_VALUE,
                                ListenerResourceDefinition.NO_REQUEST_TIMEOUT,
                                ListenerResourceDefinition.REQUEST_PARSE_TIMEOUT,
                                ListenerResourceDefinition.DISALLOWED_METHODS)
                            .addAttributes(
                                ListenerResourceDefinition.BACKLOG,
                                ListenerResourceDefinition.RECEIVE_BUFFER,
                                ListenerResourceDefinition.SEND_BUFFER,
                                ListenerResourceDefinition.KEEP_ALIVE,
                                ListenerResourceDefinition.READ_TIMEOUT,
                                ListenerResourceDefinition.WRITE_TIMEOUT,
                                ListenerResourceDefinition.MAX_CONNECTIONS))
                    .addChild(
                        builder(HttpListenerResourceDefinition.INSTANCE)
                            .addAttributes(
                                HttpListenerResourceDefinition.BUFFER_POOL,
                                HttpListenerResourceDefinition.CERTIFICATE_FORWARDING,
                                HttpListenerResourceDefinition.ENABLED,
                                HttpListenerResourceDefinition.SOCKET_BINDING,
                                HttpListenerResourceDefinition.WORKER,
                                ListenerResourceDefinition.REDIRECT_SOCKET,
                                HttpListenerResourceDefinition.PROXY_ADDRESS_FORWARDING,
                                HttpListenerResourceDefinition.ENABLE_HTTP2)
                            .addAttribute(ListenerResourceDefinition.RESOLVE_PEER_ADDRESS)
                            .addAttributes(
                                ListenerResourceDefinition.MAX_HEADER_SIZE,
                                ListenerResourceDefinition.MAX_ENTITY_SIZE,
                                ListenerResourceDefinition.BUFFER_PIPELINED_DATA,
                                ListenerResourceDefinition.MAX_PARAMETERS,
                                ListenerResourceDefinition.MAX_HEADERS,
                                ListenerResourceDefinition.MAX_COOKIES,
                                ListenerResourceDefinition.ALLOW_ENCODED_SLASH,
                                ListenerResourceDefinition.DECODE_URL,
                                ListenerResourceDefinition.URL_CHARSET,
                                ListenerResourceDefinition.ALWAYS_SET_KEEP_ALIVE,
                                ListenerResourceDefinition.MAX_BUFFERED_REQUEST_SIZE,
                                ListenerResourceDefinition.RECORD_REQUEST_START_TIME,
                                ListenerResourceDefinition.ALLOW_EQUALS_IN_COOKIE_VALUE,
                                ListenerResourceDefinition.NO_REQUEST_TIMEOUT,
                                ListenerResourceDefinition.REQUEST_PARSE_TIMEOUT,
                                ListenerResourceDefinition.DISALLOWED_METHODS)
                            .addAttributes(
                                ListenerResourceDefinition.BACKLOG,
                                ListenerResourceDefinition.RECEIVE_BUFFER,
                                ListenerResourceDefinition.SEND_BUFFER,
                                ListenerResourceDefinition.KEEP_ALIVE,
                                ListenerResourceDefinition.READ_TIMEOUT,
                                ListenerResourceDefinition.WRITE_TIMEOUT,
                                ListenerResourceDefinition.MAX_CONNECTIONS))
                    .addChild(
                        builder(HttpsListenerResourceDefinition.INSTANCE)
                            .addAttributes(
                                AjpListenerResourceDefinition.SOCKET_BINDING,
                                AjpListenerResourceDefinition.WORKER,
                                AjpListenerResourceDefinition.BUFFER_POOL,
                                AjpListenerResourceDefinition.ENABLED)
                            .addAttribute(ListenerResourceDefinition.RESOLVE_PEER_ADDRESS)
                            .addAttributes(
                                HttpsListenerResourceDefinition.SECURITY_REALM,
                                HttpsListenerResourceDefinition.VERIFY_CLIENT,
                                HttpsListenerResourceDefinition.ENABLED_CIPHER_SUITES,
                                HttpsListenerResourceDefinition.ENABLED_PROTOCOLS,
                                HttpsListenerResourceDefinition.ENABLE_HTTP2,
                                HttpsListenerResourceDefinition.ENABLE_SPDY,
                                HttpsListenerResourceDefinition.SSL_SESSION_CACHE_SIZE,
                                HttpsListenerResourceDefinition.SSL_SESSION_TIMEOUT)
                            .addAttributes(
                                ListenerResourceDefinition.MAX_HEADER_SIZE,
                                ListenerResourceDefinition.MAX_ENTITY_SIZE,
                                ListenerResourceDefinition.BUFFER_PIPELINED_DATA,
                                ListenerResourceDefinition.MAX_PARAMETERS,
                                ListenerResourceDefinition.MAX_HEADERS,
                                ListenerResourceDefinition.MAX_COOKIES,
                                ListenerResourceDefinition.ALLOW_ENCODED_SLASH,
                                ListenerResourceDefinition.DECODE_URL,
                                ListenerResourceDefinition.URL_CHARSET,
                                ListenerResourceDefinition.ALWAYS_SET_KEEP_ALIVE,
                                ListenerResourceDefinition.MAX_BUFFERED_REQUEST_SIZE,
                                ListenerResourceDefinition.RECORD_REQUEST_START_TIME,
                                ListenerResourceDefinition.ALLOW_EQUALS_IN_COOKIE_VALUE,
                                ListenerResourceDefinition.NO_REQUEST_TIMEOUT,
                                ListenerResourceDefinition.REQUEST_PARSE_TIMEOUT,
                                ListenerResourceDefinition.DISALLOWED_METHODS)
                            .addAttributes(
                                ListenerResourceDefinition.BACKLOG,
                                ListenerResourceDefinition.RECEIVE_BUFFER,
                                ListenerResourceDefinition.SEND_BUFFER,
                                ListenerResourceDefinition.KEEP_ALIVE,
                                ListenerResourceDefinition.READ_TIMEOUT,
                                ListenerResourceDefinition.WRITE_TIMEOUT,
                                ListenerResourceDefinition.MAX_CONNECTIONS))
                    .addChild(
                        builder(HostDefinition.INSTANCE)
                            .addAttributes(
                                HostDefinition.ALIAS,
                                HostDefinition.DEFAULT_WEB_MODULE,
                                HostDefinition.DEFAULT_RESPONSE_CODE,
                                HostDefinition.DISABLE_CONSOLE_REDIRECT)
                            .addChild(
                                builder(LocationDefinition.INSTANCE)
                                    .addAttributes(LocationDefinition.HANDLER)
                                    .addChild(
                                        builder(FilterRefDefinition.INSTANCE)
                                            .addAttributes(
                                                FilterRefDefinition.PREDICATE,
                                                FilterRefDefinition.PRIORITY)))
                            .addChild(
                                builder(AccessLogDefinition.INSTANCE)
                                    .addAttributes(
                                        AccessLogDefinition.PATTERN,
                                        AccessLogDefinition.DIRECTORY,
                                        AccessLogDefinition.RELATIVE_TO,
                                        AccessLogDefinition.PREFIX,
                                        AccessLogDefinition.SUFFIX,
                                        AccessLogDefinition.WORKER,
                                        AccessLogDefinition.ROTATE,
                                        AccessLogDefinition.USE_SERVER_LOG,
                                        AccessLogDefinition.EXTENDED,
                                        AccessLogDefinition.PREDICATE))
                            .addChild(
                                builder(FilterRefDefinition.INSTANCE)
                                    .addAttributes(
                                        FilterRefDefinition.PREDICATE,
                                        FilterRefDefinition.PRIORITY))
                            .addChild(
                                builder(SingleSignOnDefinition.INSTANCE)
                                    .addAttributes(
                                        SingleSignOnDefinition.DOMAIN,
                                        SingleSignOnDefinition.PATH,
                                        SingleSignOnDefinition.HTTP_ONLY,
                                        SingleSignOnDefinition.SECURE,
                                        SingleSignOnDefinition.COOKIE_NAME))))
            .addChild(
                builder(ServletContainerDefinition.INSTANCE)
                    .addAttribute(ServletContainerDefinition.ALLOW_NON_STANDARD_WRAPPERS)
                    .addAttribute(ServletContainerDefinition.DEFAULT_BUFFER_CACHE)
                    .addAttribute(ServletContainerDefinition.STACK_TRACE_ON_ERROR)
                    .addAttribute(ServletContainerDefinition.USE_LISTENER_ENCODING)
                    .addAttribute(ServletContainerDefinition.DEFAULT_ENCODING)
                    .addAttribute(ServletContainerDefinition.IGNORE_FLUSH)
                    .addAttribute(ServletContainerDefinition.EAGER_FILTER_INIT)
                    .addAttribute(ServletContainerDefinition.DEFAULT_SESSION_TIMEOUT)
                    .addAttribute(ServletContainerDefinition.DISABLE_CACHING_FOR_SECURED_PAGES)
                    .addAttribute(ServletContainerDefinition.DIRECTORY_LISTING)
                    .addAttribute(ServletContainerDefinition.PROACTIVE_AUTHENTICATION)
                    .addAttribute(ServletContainerDefinition.SESSION_ID_LENGTH)
                    .addChild(
                        builder(JspDefinition.INSTANCE)
                            .setXmlElementName(Constants.JSP_CONFIG)
                            .addAttributes(
                                JspDefinition.DISABLED,
                                JspDefinition.DEVELOPMENT,
                                JspDefinition.KEEP_GENERATED,
                                JspDefinition.TRIM_SPACES,
                                JspDefinition.TAG_POOLING,
                                JspDefinition.MAPPED_FILE,
                                JspDefinition.CHECK_INTERVAL,
                                JspDefinition.MODIFICATION_TEST_INTERVAL,
                                JspDefinition.RECOMPILE_ON_FAIL,
                                JspDefinition.SMAP,
                                JspDefinition.DUMP_SMAP,
                                JspDefinition.GENERATE_STRINGS_AS_CHAR_ARRAYS,
                                JspDefinition.ERROR_ON_USE_BEAN_INVALID_CLASS_ATTRIBUTE,
                                JspDefinition.SCRATCH_DIR,
                                JspDefinition.SOURCE_VM,
                                JspDefinition.TARGET_VM,
                                JspDefinition.JAVA_ENCODING,
                                JspDefinition.X_POWERED_BY,
                                JspDefinition.DISPLAY_SOURCE_FRAGMENT))
                    .addChild(
                        builder(SessionCookieDefinition.INSTANCE)
                            .addAttributes(
                                SessionCookieDefinition.NAME,
                                SessionCookieDefinition.DOMAIN,
                                SessionCookieDefinition.COMMENT,
                                SessionCookieDefinition.HTTP_ONLY,
                                SessionCookieDefinition.SECURE,
                                SessionCookieDefinition.MAX_AGE))
                    .addChild(
                        builder(PersistentSessionsDefinition.INSTANCE)
                            .addAttributes(
                                PersistentSessionsDefinition.PATH,
                                PersistentSessionsDefinition.RELATIVE_TO))
                    .addChild(
                        builder(WebsocketsDefinition.INSTANCE)
                            .addAttributes(
                                WebsocketsDefinition.WORKER,
                                WebsocketsDefinition.BUFFER_POOL,
                                WebsocketsDefinition.DISPATCH_TO_WORKER))
                    .addChild(
                        builder(MimeMappingDefinition.INSTANCE)
                            .setXmlWrapperElement("mime-mappings")
                            .addAttributes(MimeMappingDefinition.VALUE))
                    .addChild(
                        builder(WelcomeFileDefinition.INSTANCE)
                            .setXmlWrapperElement("welcome-files")))
            .addChild(
                builder(HandlerDefinitions.INSTANCE)
                    .setXmlElementName(Constants.HANDLERS)
                    .setNoAddOperation(true)
                    .addChild(
                        builder(FileHandler.INSTANCE)
                            .addAttributes(
                                FileHandler.PATH,
                                FileHandler.CACHE_BUFFER_SIZE,
                                FileHandler.CACHE_BUFFERS,
                                FileHandler.DIRECTORY_LISTING,
                                FileHandler.FOLLOW_SYMLINK,
                                FileHandler.SAFE_SYMLINK_PATHS,
                                FileHandler.CASE_SENSITIVE))
                    .addChild(
                        builder(ReverseProxyHandler.INSTANCE)
                            .addAttributes(
                                ReverseProxyHandler.CONNECTIONS_PER_THREAD,
                                ReverseProxyHandler.SESSION_COOKIE_NAMES,
                                ReverseProxyHandler.PROBLEM_SERVER_RETRY,
                                ReverseProxyHandler.MAX_REQUEST_TIME,
                                ReverseProxyHandler.REQUEST_QUEUE_SIZE,
                                ReverseProxyHandler.CACHED_CONNECTIONS_PER_THREAD,
                                ReverseProxyHandler.CONNECTION_IDLE_TIMEOUT)
                            .addChild(
                                builder(ReverseProxyHandlerHost.INSTANCE)
                                    .setXmlElementName(Constants.HOST)
                                    .addAttributes(
                                        ReverseProxyHandlerHost.INSTANCE_ID,
                                        ReverseProxyHandlerHost.PATH,
                                        ReverseProxyHandlerHost.SCHEME,
                                        ReverseProxyHandlerHost.OUTBOUND_SOCKET_BINDING,
                                        ReverseProxyHandlerHost.SECURITY_REALM))))
            .addChild(
                builder(FilterDefinitions.INSTANCE)
                    .setXmlElementName(Constants.FILTERS)
                    .setNoAddOperation(true)
                    .addChild(
                        builder(ConnectionLimitHandler.INSTANCE)
                            .addAttributes(
                                ConnectionLimitHandler.MAX_CONCURRENT_REQUESTS,
                                ConnectionLimitHandler.QUEUE_SIZE))
                    .addChild(
                        builder(ResponseHeaderFilter.INSTANCE)
                            .addAttributes(ResponseHeaderFilter.NAME, ResponseHeaderFilter.VALUE))
                    .addChild(builder(GzipFilter.INSTANCE))
                    .addChild(
                        builder(ErrorPageDefinition.INSTANCE)
                            .addAttributes(ErrorPageDefinition.CODE, ErrorPageDefinition.PATH))
                    .addChild(
                        builder(ModClusterDefinition.INSTANCE)
                            .addAttributes(
                                ModClusterDefinition.MANAGEMENT_SOCKET_BINDING,
                                ModClusterDefinition.ADVERTISE_SOCKET_BINDING,
                                ModClusterDefinition.SECURITY_KEY,
                                ModClusterDefinition.ADVERTISE_PROTOCOL,
                                ModClusterDefinition.ADVERTISE_PATH,
                                ModClusterDefinition.ADVERTISE_FREQUENCY,
                                ModClusterDefinition.HEALTH_CHECK_INTERVAL,
                                ModClusterDefinition.BROKEN_NODE_TIMEOUT,
                                ModClusterDefinition.WORKER,
                                ModClusterDefinition.MAX_REQUEST_TIME,
                                ModClusterDefinition.MANAGEMENT_ACCESS_PREDICATE,
                                ModClusterDefinition.CONNECTIONS_PER_THREAD,
                                ModClusterDefinition.CACHED_CONNECTIONS_PER_THREAD,
                                ModClusterDefinition.CONNECTION_IDLE_TIMEOUT,
                                ModClusterDefinition.REQUEST_QUEUE_SIZE,
                                ModClusterDefinition.SECURITY_REALM,
                                ModClusterDefinition.USE_ALIAS))
                    .addChild(
                        builder(CustomFilterDefinition.INSTANCE)
                            .addAttributes(
                                CustomFilterDefinition.CLASS_NAME,
                                CustomFilterDefinition.MODULE,
                                CustomFilterDefinition.PARAMETERS)
                            .setXmlElementName("filter"))
                    .addChild(
                        builder(ExpressionFilterDefinition.INSTANCE)
                            .addAttributes(
                                ExpressionFilterDefinition.EXPRESSION,
                                ExpressionFilterDefinition.MODULE))
                    .addChild(
                        builder(RewriteFilterDefinition.INSTANCE)
                            .addAttributes(
                                RewriteFilterDefinition.TARGET, RewriteFilterDefinition.REDIRECT)))

            // here to make sure we always add filters & handlers path to mgmt model
            .setAdditionalOperationsGenerator(
                new PersistentResourceXMLDescription.AdditionalOperationsGenerator() {
                  @Override
                  public void additionalOperations(
                      final PathAddress address,
                      final ModelNode addOperation,
                      final List<ModelNode> operations) {
                    operations.add(
                        Util.createAddOperation(address.append(UndertowExtension.PATH_FILTERS)));
                    operations.add(
                        Util.createAddOperation(address.append(UndertowExtension.PATH_HANDLERS)));
                  }
                })
            .build();
  }