@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(); }