diff --git a/meecrowave-doc/pom.xml b/meecrowave-doc/pom.xml
index 89ec459..0d3c100 100644
--- a/meecrowave-doc/pom.xml
+++ b/meecrowave-doc/pom.xml
@@ -164,7 +164,7 @@
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>exec-maven-plugin</artifactId>
-        <version>1.6.0</version>
+        <version>3.0.0</version>
         <executions>
           <execution>
             <id>meecrowave-site</id>
@@ -175,6 +175,8 @@
           </execution>
         </executions>
         <configuration>
+          <cleanupDaemonThreads>false</cleanupDaemonThreads>
+          <stopUnresponsiveDaemonThreads>false</stopUnresponsiveDaemonThreads>
           <includeProjectDependencies>true</includeProjectDependencies>
           <mainClass>org.apache.meecrowave.doc.JBake</mainClass>
           <arguments>
diff --git a/meecrowave-doc/src/main/java/org/apache/meecrowave/doc/JBake.java b/meecrowave-doc/src/main/java/org/apache/meecrowave/doc/JBake.java
index 9746ef4..abf3a2d 100755
--- a/meecrowave-doc/src/main/java/org/apache/meecrowave/doc/JBake.java
+++ b/meecrowave-doc/src/main/java/org/apache/meecrowave/doc/JBake.java
@@ -54,6 +54,7 @@
 import org.apache.meecrowave.doc.generator.MavenConfiguration;
 import org.apache.meecrowave.doc.generator.OAuth2Configuration;
 import org.apache.meecrowave.doc.generator.ProxyConfiguration;
+import org.apache.meecrowave.proxy.servlet.meecrowave.ProxyServletSetup;
 import org.jbake.app.Oven;
 import org.jbake.app.configuration.ConfigUtil;
 import org.jbake.app.configuration.DefaultJBakeConfiguration;
@@ -123,6 +124,7 @@
                             add("source-highlighter=highlightjs");
                             add("highlightjs-theme=idea");
                             add("context_rootpath=/meecrowave");
+                            add("icons=font");
                         }});
                     }}));
                     config.addConfiguration(DefaultJBakeConfiguration.class.cast(
@@ -243,8 +245,10 @@
 
             try (final Meecrowave container = new Meecrowave(new Meecrowave.Builder() {{
                 setWebResourceCached(false);
+                property("proxy-skip", "true");
             }}) {{
                 start();
+                getTomcat().getServer().setParentClassLoader(Thread.currentThread().getContextClassLoader());
                 deployWebapp("/meecrowave", destination);
             }}) {
                 System.out.println("Started on http://localhost:" + container.getConfiguration().getHttpPort() + "/meecrowave");
diff --git a/meecrowave-doc/src/main/jbake/assets/assets/css/styles.css b/meecrowave-doc/src/main/jbake/assets/assets/css/styles.css
index edb6c74..d758f1b 100644
--- a/meecrowave-doc/src/main/jbake/assets/assets/css/styles.css
+++ b/meecrowave-doc/src/main/jbake/assets/assets/css/styles.css
@@ -1261,3 +1261,67 @@
 pre {
     padding: 0;
 }
+
+
+}
+.admonitionblock td.content > :first-child {
+  margin: 0;
+}
+.admonitionblock {
+  margin-bottom: 1rem;
+}
+.admonitionblock > table {
+  padding-top: 1rem;
+  padding-bottom: 1rem;
+  width: 100%;
+  height: 100%;
+  position: relative;
+  display: block;
+  /*border: 1px solid #c6c6c6;
+  border-radius: 5px;*/
+}
+.admonitionblock td.content > code {
+  background-color: unset !important;
+  color: unset !important;
+}
+.admonitionblock td.content {
+  display: block;
+  width: 100%;
+  padding: 0.5rem;
+}
+.admonitionblock .icon {
+  padding-right: 0.6rem;
+  padding-top: 0.5rem;
+}
+.admonitionblock .icon i {
+  display: inline-flex;
+  align-items: center;
+  height: 100%;
+}
+.admonitionblock .icon i::after {
+  content: attr(title);
+  hyphens: none;
+}
+.icon-important:before, .icon-note:before, .icon-tip:before, .icon-warning:before {
+    font-size: 1em;
+}
+.icon-important:before {
+    content: "\f06a";
+    font-family: "Font Awesome 5 Free";
+    color: #e96065;
+}
+.icon-note:before {
+    content: "\f05a";
+    font-family: "Font Awesome 5 Free";
+    color: #0675c1;
+}
+.icon-tip:before {
+    content: "\f059";
+    font-family: "Font Awesome 5 Free";
+    color: #6ec01e;
+}
+.icon-warning:before {
+    content: "\f071";
+    font-family: "Font Awesome 5 Free";
+    color: #ffc300;
+}
diff --git a/meecrowave-doc/src/main/jbake/assets/assets/js/main.js b/meecrowave-doc/src/main/jbake/assets/assets/js/main.js
index da07fe8..6dc2e61 100644
--- a/meecrowave-doc/src/main/jbake/assets/assets/js/main.js
+++ b/meecrowave-doc/src/main/jbake/assets/assets/js/main.js
@@ -46,4 +46,30 @@
     });    
 
     hljs.initHighlightingOnLoad();
+
+    // set admonitionblock custom theme
+    // drop titles from <i> to not pollute the ui with pointless text
+    function setAdmonitionStyle(item, color) {
+      var i = $(item);
+      i.css('border-left', '1.5px solid ' + color);
+      i.css('padding-left', '2rem');
+      i.css('background-color', color + '10');
+      i.css('color', color);
+    }
+    $('div.admonitionblock td.icon > i.fa').each(function (idx, item) {
+      item.title = '';
+  
+      var jItem = $(item);
+      jItem.addClass('fa-lg');
+      var content = jItem.parent().parent().find('td.content');
+      if (jItem.hasClass('icon-important')) {
+          setAdmonitionStyle(content, '#e96065');
+      } else if (jItem.hasClass('icon-note')) {
+          setAdmonitionStyle(content, '#0675c1');
+      } else if (jItem.hasClass('icon-warning')) {
+          setAdmonitionStyle(content, '#ffc300');
+      } else {
+          setAdmonitionStyle(content, '#6ec01e');
+      }
+    });
 });
\ No newline at end of file
diff --git a/meecrowave-doc/src/main/jbake/content/meecrowave-websocket/index.adoc b/meecrowave-doc/src/main/jbake/content/meecrowave-websocket/index.adoc
new file mode 100755
index 0000000..32b8253
--- /dev/null
+++ b/meecrowave-doc/src/main/jbake/content/meecrowave-websocket/index.adoc
@@ -0,0 +1,27 @@
+= Meecrowave WebSocket
+:jbake-date: 2021-04-22
+:jbake-type: page
+:jbake-status: published
+:jbake-meecrowavepdf:
+:jbake-meecrowavetitleicon: icon icon_chat
+:jbake-meecrowavecolor: body-red
+:icons: font
+
+WARNING: this module is available with Apache Meecrowave >= 1.2.11.
+
+Coordinates:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.meecrowave</groupId>
+  <artifactId>meecrowave-websocket</artifactId>
+  <version>${meecrowave.version}</version>
+</dependency>
+----
+
+IMPORTANT: this module requires `org.apache.tomcat:tomcat-websocket-api` but replaces `org.apache.tomcat:tomcat-websocket` until Tomcat enables a better way to extend its default.
+
+Once this module added, you can implement a server websocket endpoint as a CDI bean, it will use `CDI.current().select(endpointType).get()` to resolve it.
+
+NOTE: you can still pass a custom `Configurator` to your endpoint to customize the lookup or runtime of the endpoint.
diff --git a/meecrowave-websocket/pom.xml b/meecrowave-websocket/pom.xml
new file mode 100644
index 0000000..71828d3
--- /dev/null
+++ b/meecrowave-websocket/pom.xml
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <parent>
+    <artifactId>meecrowave</artifactId>
+    <groupId>org.apache.meecrowave</groupId>
+    <version>1.2.11-SNAPSHOT</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+
+  <artifactId>meecrowave-websocket</artifactId>
+  <name>Meecrowave :: WebSocket</name>
+
+  <properties>
+    <meecrowave.build.name>${project.groupId}.websocket</meecrowave.build.name>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>meecrowave-specs-api</artifactId>
+      <version>${project.version}</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.tomcat</groupId>
+      <artifactId>tomcat-websocket</artifactId>
+      <version>${tomcat.version}</version>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-shade-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>embed-tomcat-websocket</id>
+            <phase>package</phase>
+            <goals>
+              <goal>shade</goal>
+            </goals>
+            <configuration>
+              <createDependencyReducedPom>true</createDependencyReducedPom>
+              <dependencyReducedPomLocation>${project.build.directory}/reduced.pom</dependencyReducedPomLocation>
+              <artifactSet>
+                <includes>
+                  <include>${project.groupId}:${project.artifactId}</include>
+                  <include>org.apache.tomcat:tomcat-websocket</include>
+                </includes>
+              </artifactSet>
+              <filters>
+                <filter>
+                  <artifact>org.apache.tomcat:tomcat-websocket</artifact>
+                  <excludes>
+                    META-INF/services/javax.websocket.server.ServerEndpointConfig$Configurator
+                  </excludes>
+                </filter>
+                <filter>
+                  <artifact>*:*</artifact>
+                  <excludes>
+                    <exclude>META-INF/*.SF</exclude>
+                    <exclude>META-INF/*.DSA</exclude>
+                    <exclude>META-INF/*.RSA</exclude>
+                  </excludes>
+                </filter>
+              </filters>
+            </configuration>
+          </execution>
+          <execution>
+            <phase>package</phase>
+            <goals>
+              <goal>shade</goal>
+            </goals>
+            <configuration>
+              <transformers>
+                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
+              </transformers>
+              <shadedArtifactAttached>true</shadedArtifactAttached>
+              <shadedClassifierName>jakarta</shadedClassifierName>
+              <createDependencyReducedPom>false</createDependencyReducedPom>
+              <artifactSet>
+                <includes>
+                  <include>${project.groupId}:${project.artifactId}</include>
+                  <include>org.apache.tomcat:tomcat-websocket</include>
+                </includes>
+              </artifactSet>
+              <filters>
+                <filter>
+                  <artifact>org.apache.tomcat:tomcat-websocket</artifact>
+                  <excludes>
+                    META-INF/services/javax.websocket.server.ServerEndpointConfig$Configurator
+                  </excludes>
+                </filter>
+                <filter>
+                  <artifact>*:*</artifact>
+                  <excludes>
+                    <exclude>META-INF/*.SF</exclude>
+                    <exclude>META-INF/*.DSA</exclude>
+                    <exclude>META-INF/*.RSA</exclude>
+                  </excludes>
+                </filter>
+              </filters>
+              <relocations>
+                <relocation>
+                  <pattern>javax.activation</pattern>
+                  <shadedPattern>jakarta.activation</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>javax.annotation</pattern>
+                  <shadedPattern>jakarta.annotation</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>javax.el</pattern>
+                  <shadedPattern>jakarta.el</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>javax.enterprise</pattern>
+                  <shadedPattern>jakarta.enterprise</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>javax.decorator</pattern>
+                  <shadedPattern>jakarta.decorator</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>javax.inject</pattern>
+                  <shadedPattern>jakarta.inject</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>javax.interceptor</pattern>
+                  <shadedPattern>jakarta.interceptor</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>javax.servlet</pattern>
+                  <shadedPattern>jakarta.servlet</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>javax.websocket</pattern>
+                  <shadedPattern>jakarta.websocket</shadedPattern>
+                </relocation>
+              </relocations>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
\ No newline at end of file
diff --git a/meecrowave-websocket/src/main/java/org/apache/meecrowave/websocket/CDIServerConfigurator.java b/meecrowave-websocket/src/main/java/org/apache/meecrowave/websocket/CDIServerConfigurator.java
new file mode 100644
index 0000000..cd25611
--- /dev/null
+++ b/meecrowave-websocket/src/main/java/org/apache/meecrowave/websocket/CDIServerConfigurator.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.meecrowave.websocket;
+
+import javax.enterprise.inject.spi.CDI;
+import javax.websocket.Extension;
+import javax.websocket.HandshakeResponse;
+import javax.websocket.server.HandshakeRequest;
+import javax.websocket.server.ServerEndpointConfig;
+import java.util.List;
+import java.util.Set;
+
+import static java.util.Collections.emptyList;
+import static java.util.stream.Collectors.toList;
+import static java.util.stream.Collectors.toSet;
+
+public class CDIServerConfigurator extends ServerEndpointConfig.Configurator {
+    @Override
+    public <T> T getEndpointInstance(final Class<T> clazz) throws InstantiationException {
+        try {
+            return CDI.current().select(clazz).get();
+        } catch (final RuntimeException re) {
+            return super.getEndpointInstance(clazz);
+        }
+    }
+
+    @Override
+    public String getNegotiatedSubprotocol(final List<String> supported, final List<String> requested) {
+        return requested.stream().filter(supported::contains).findFirst().orElse("");
+    }
+
+
+    @Override
+    public List<Extension> getNegotiatedExtensions(final List<Extension> installed,
+                                                   final List<Extension> requested) {
+        if (requested.isEmpty()) {
+            return emptyList();
+        }
+        final Set<String> names = installed.stream().map(Extension::getName).collect(toSet());
+        return requested.stream().filter(e -> names.contains(e.getName())).collect(toList());
+    }
+
+    @Override
+    public boolean checkOrigin(final String originHeaderValue) {
+        return true;
+    }
+
+    @Override
+    public void modifyHandshake(final ServerEndpointConfig sec,
+                                final HandshakeRequest request,
+                                final HandshakeResponse response) {
+        // no-op
+    }
+}
diff --git a/meecrowave-websocket/src/main/resources/META-INF/services/javax.websocket.server.ServerEndpointConfig$Configurator b/meecrowave-websocket/src/main/resources/META-INF/services/javax.websocket.server.ServerEndpointConfig$Configurator
new file mode 100644
index 0000000..269ba96
--- /dev/null
+++ b/meecrowave-websocket/src/main/resources/META-INF/services/javax.websocket.server.ServerEndpointConfig$Configurator
@@ -0,0 +1 @@
+org.apache.meecrowave.websocket.CDIServerConfigurator
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 2845f69..7fd2457 100644
--- a/pom.xml
+++ b/pom.xml
@@ -86,6 +86,7 @@
     <module>meecrowave-oauth2</module>
     <module>meecrowave-letsencrypt</module>
     <module>meecrowave-proxy</module>
+    <module>meecrowave-websocket</module>
   </modules>
 
   <dependencyManagement>
