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;