From 80f46a80560b2b2ed9fb418c33df75136bc3dc52 Mon Sep 17 00:00:00 2001 From: "Christopher L. Shannon (cshannon)" Date: Tue, 29 Nov 2016 11:20:27 -0500 Subject: [PATCH] https://issues.apache.org/jira/browse/AMQ-6521 Adding support for Jetty 9.3 by re-adding in the logic to dynamically load the correct GzipHandler depending on the version --- .../transport/http/HttpTransportServer.java | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/activemq-http/src/main/java/org/apache/activemq/transport/http/HttpTransportServer.java b/activemq-http/src/main/java/org/apache/activemq/transport/http/HttpTransportServer.java index 02bf11f1e6..f9774f3126 100644 --- a/activemq-http/src/main/java/org/apache/activemq/transport/http/HttpTransportServer.java +++ b/activemq-http/src/main/java/org/apache/activemq/transport/http/HttpTransportServer.java @@ -32,7 +32,6 @@ import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; -import org.eclipse.jetty.servlets.gzip.GzipHandler; public class HttpTransportServer extends WebTransportServerSupport { @@ -123,11 +122,34 @@ public class HttpTransportServer extends WebTransportServerSupport { private int getConnectorLocalPort() throws Exception { return (Integer)connector.getClass().getMethod("getLocalPort").invoke(connector); } + private void addGzipHandler(ServletContextHandler contextHandler) throws Exception { - Handler handler = new GzipHandler(); + Handler handler = null; + try { + handler = (Handler) forName("org.eclipse.jetty.server.handler.GzipHandler").newInstance(); + } catch (Throwable t) { + handler = (Handler) forName("org.eclipse.jetty.servlets.gzip.GzipHandler").newInstance(); + } contextHandler.setHandler(handler); } + private Class forName(String name) throws ClassNotFoundException { + Class clazz = null; + ClassLoader loader = Thread.currentThread().getContextClassLoader(); + if (loader != null) { + try { + clazz = loader.loadClass(name); + } catch (ClassNotFoundException e) { + // ignore + } + } + if (clazz == null) { + clazz = HttpTransportServer.class.getClassLoader().loadClass(name); + } + + return clazz; + } + @Override protected void doStop(ServiceStopper stopper) throws Exception { Server temp = server;