From fefb46410e368b9aa9df02760ce355250bb76480 Mon Sep 17 00:00:00 2001 From: Greg Thomas Date: Sat, 21 Sep 2019 14:18:48 +0100 Subject: [PATCH] Support for @WebServlet annotation --- .../servlet/SystemCacheDetailsServlet.java | 16 ++++++------ .../servlet/SystemPropertiesServlet.java | 16 ++++++------ .../container/AdminConsolePlugin.java | 25 ++++++++++++++++++- xmppserver/src/main/webapp/WEB-INF/web.xml | 22 ---------------- 4 files changed, 42 insertions(+), 37 deletions(-) diff --git a/xmppserver/src/main/java/org/jivesoftware/admin/servlet/SystemCacheDetailsServlet.java b/xmppserver/src/main/java/org/jivesoftware/admin/servlet/SystemCacheDetailsServlet.java index 7c34489f2c..0d4a0eaba8 100644 --- a/xmppserver/src/main/java/org/jivesoftware/admin/servlet/SystemCacheDetailsServlet.java +++ b/xmppserver/src/main/java/org/jivesoftware/admin/servlet/SystemCacheDetailsServlet.java @@ -13,13 +13,6 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import javax.servlet.ServletException; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; - import org.jivesoftware.util.CookieUtils; import org.jivesoftware.util.ListPager; import org.jivesoftware.util.LocaleUtils; @@ -29,6 +22,15 @@ import org.jivesoftware.util.cache.Cache; import org.jivesoftware.util.cache.CacheFactory; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +@WebServlet(value = "/SystemCacheDetails.jsp") public class SystemCacheDetailsServlet extends HttpServlet { private static final String[] SEARCH_FIELDS = {"cacheName", "searchKey", "searchValue"}; diff --git a/xmppserver/src/main/java/org/jivesoftware/admin/servlet/SystemPropertiesServlet.java b/xmppserver/src/main/java/org/jivesoftware/admin/servlet/SystemPropertiesServlet.java index 02f635d4be..42b01e281c 100644 --- a/xmppserver/src/main/java/org/jivesoftware/admin/servlet/SystemPropertiesServlet.java +++ b/xmppserver/src/main/java/org/jivesoftware/admin/servlet/SystemPropertiesServlet.java @@ -8,13 +8,6 @@ import java.util.function.Predicate; import java.util.stream.Collectors; -import javax.servlet.ServletException; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; - import org.jivesoftware.util.CookieUtils; import org.jivesoftware.util.JiveGlobals; import org.jivesoftware.util.ListPager; @@ -23,7 +16,16 @@ import org.jivesoftware.util.SystemProperty; import org.jivesoftware.util.WebManager; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + @SuppressWarnings("serial") +@WebServlet(value = "/server-properties.jsp") public class SystemPropertiesServlet extends HttpServlet { private static final String[] SEARCH_FIELDS = {"searchName", "searchValue", "searchDefaultValue", "searchPlugin", "searchDescription", "searchDynamic"}; diff --git a/xmppserver/src/main/java/org/jivesoftware/openfire/container/AdminConsolePlugin.java b/xmppserver/src/main/java/org/jivesoftware/openfire/container/AdminConsolePlugin.java index bb165a0542..faf83f96c5 100644 --- a/xmppserver/src/main/java/org/jivesoftware/openfire/container/AdminConsolePlugin.java +++ b/xmppserver/src/main/java/org/jivesoftware/openfire/container/AdminConsolePlugin.java @@ -18,17 +18,22 @@ import java.io.File; import java.io.IOException; +import java.net.URL; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import org.apache.jasper.servlet.JasperInitializer; import org.apache.tomcat.InstanceManager; import org.apache.tomcat.SimpleInstanceManager; +import org.eclipse.jetty.annotations.AnnotationConfiguration; import org.eclipse.jetty.annotations.ServletContainerInitializersStarter; import org.eclipse.jetty.plus.annotation.ContainerInitializer; +import org.eclipse.jetty.plus.webapp.EnvConfiguration; +import org.eclipse.jetty.plus.webapp.PlusConfiguration; import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.HttpConfiguration; @@ -40,9 +45,16 @@ import org.eclipse.jetty.server.handler.ContextHandlerCollection; import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.server.handler.HandlerCollection; +import org.eclipse.jetty.util.resource.Resource; import org.eclipse.jetty.util.ssl.SslContextFactory; import org.eclipse.jetty.util.thread.QueuedThreadPool; +import org.eclipse.jetty.webapp.Configuration; +import org.eclipse.jetty.webapp.FragmentConfiguration; +import org.eclipse.jetty.webapp.JettyWebXmlConfiguration; +import org.eclipse.jetty.webapp.MetaInfConfiguration; import org.eclipse.jetty.webapp.WebAppContext; +import org.eclipse.jetty.webapp.WebInfConfiguration; +import org.eclipse.jetty.webapp.WebXmlConfiguration; import org.jivesoftware.openfire.JMXManager; import org.jivesoftware.openfire.XMPPServer; import org.jivesoftware.openfire.keystore.CertificateStore; @@ -276,7 +288,6 @@ protected void shutdown() { if (certificateListener != null) { CertificateManager.removeListener(certificateListener); } - //noinspection ConstantConditions try { if (adminServer != null && adminServer.isRunning()) { adminServer.stop(); @@ -419,6 +430,18 @@ private void createWebAppContext() { initializers.add(new ContainerInitializer(new JasperInitializer(), null)); context.setAttribute("org.eclipse.jetty.containerInitializers", initializers); context.setAttribute(InstanceManager.class.getName(), new SimpleInstanceManager()); + context.setConfigurations(new Configuration[]{ + new AnnotationConfiguration(), + new WebInfConfiguration(), + new WebXmlConfiguration(), + new MetaInfConfiguration(), + new FragmentConfiguration(), + new EnvConfiguration(), + new PlusConfiguration(), + new JettyWebXmlConfiguration() + }); + final URL classes = getClass().getProtectionDomain().getCodeSource().getLocation(); + context.getMetaData().setWebInfClassesDirs(Collections.singletonList(Resource.newResource(classes))); // The index.html includes a redirect to the index.jsp and doesn't bypass // the context security when in development mode diff --git a/xmppserver/src/main/webapp/WEB-INF/web.xml b/xmppserver/src/main/webapp/WEB-INF/web.xml index b02098c7dc..ca04a15c7a 100644 --- a/xmppserver/src/main/webapp/WEB-INF/web.xml +++ b/xmppserver/src/main/webapp/WEB-INF/web.xml @@ -127,16 +127,6 @@ org.jivesoftware.openfire.container.PluginIconServlet - - SystemPropertiesServlet - org.jivesoftware.admin.servlet.SystemPropertiesServlet - - - - SystemCacheDetails - org.jivesoftware.admin.servlet.SystemCacheDetailsServlet - - @@ -154,18 +144,6 @@ /geticon - - SystemPropertiesServlet - - /server-properties.jsp - - - - SystemCacheDetails - - /SystemCacheDetails.jsp - - dwr-invoker /dwr/*