keycloak-uncached

Details

diff --git a/server/src/main/webapp/WEB-INF/web.xml b/server/src/main/webapp/WEB-INF/web.xml
index f800f47..0b1e810 100755
--- a/server/src/main/webapp/WEB-INF/web.xml
+++ b/server/src/main/webapp/WEB-INF/web.xml
@@ -21,6 +21,11 @@
         <async-supported>true</async-supported>
     </servlet>
 
+    <servlet>
+        <servlet-name>TmpAdminRedirectServlet</servlet-name>
+        <servlet-class>org.keycloak.services.tmp.TmpAdminRedirectServlet</servlet-class>
+    </servlet>
+
     <listener>
         <listener-class>org.keycloak.services.listeners.KeycloakSessionDestroyListener</listener-class>
     </listener>
@@ -44,6 +49,12 @@
         <url-pattern>/rest/*</url-pattern>
     </servlet-mapping>
 
+    <servlet-mapping>
+        <servlet-name>TmpAdminRedirectServlet</servlet-name>
+        <url-pattern>/admin</url-pattern>
+        <url-pattern>/admin/</url-pattern>
+    </servlet-mapping>
+
     <!--
 
     <security-constraint>
diff --git a/services/src/main/java/org/keycloak/services/tmp/TmpAdminRedirectServlet.java b/services/src/main/java/org/keycloak/services/tmp/TmpAdminRedirectServlet.java
new file mode 100644
index 0000000..f00be8d
--- /dev/null
+++ b/services/src/main/java/org/keycloak/services/tmp/TmpAdminRedirectServlet.java
@@ -0,0 +1,21 @@
+package org.keycloak.services.tmp;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ * TODO Remove once fixed in WildFly (https://issues.jboss.org/browse/WFLY-2687)
+ *
+ * @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
+ */
+public class TmpAdminRedirectServlet extends HttpServlet {
+
+    @Override
+    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+        resp.sendRedirect(req.getContextPath() + "/admin/index.html");
+    }
+
+}
diff --git a/testsuite/integration/src/main/java/org/keycloak/testutils/KeycloakServer.java b/testsuite/integration/src/main/java/org/keycloak/testutils/KeycloakServer.java
index ab3e4bf..f6affa3 100755
--- a/testsuite/integration/src/main/java/org/keycloak/testutils/KeycloakServer.java
+++ b/testsuite/integration/src/main/java/org/keycloak/testutils/KeycloakServer.java
@@ -33,9 +33,11 @@ import io.undertow.servlet.Servlets;
 import io.undertow.servlet.api.DefaultServletConfig;
 import io.undertow.servlet.api.DeploymentInfo;
 import io.undertow.servlet.api.FilterInfo;
+import io.undertow.servlet.api.ServletInfo;
 import org.jboss.resteasy.logging.Logger;
 import org.jboss.resteasy.plugins.server.undertow.UndertowJaxrsServer;
 import org.jboss.resteasy.spi.ResteasyDeployment;
+import org.keycloak.services.tmp.TmpAdminRedirectServlet;
 import org.keycloak.util.JsonSerialization;
 import org.keycloak.models.Constants;
 import org.keycloak.models.KeycloakSession;
@@ -259,6 +261,10 @@ public class KeycloakServer {
         di.addFilter(filter);
         di.addFilterUrlMapping("SessionFilter", "/rest/*", DispatcherType.REQUEST);
 
+        ServletInfo tmpAdminRedirectServlet = Servlets.servlet("TmpAdminRedirectServlet", TmpAdminRedirectServlet.class);
+        tmpAdminRedirectServlet.addMappings("/admin", "/admin/");
+        di.addServlet(tmpAdminRedirectServlet);
+
         server.deploy(di);
 
         factory = KeycloakApplication.createSessionFactory();