Repository: activemq
Updated Branches:
  refs/heads/master 4e766d92c -> 80f46a805


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


Project: http://git-wip-us.apache.org/repos/asf/activemq/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/80f46a80
Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/80f46a80
Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/80f46a80

Branch: refs/heads/master
Commit: 80f46a80560b2b2ed9fb418c33df75136bc3dc52
Parents: 4e766d9
Author: Christopher L. Shannon (cshannon) <christopher.l.shan...@gmail.com>
Authored: Tue Nov 29 11:20:27 2016 -0500
Committer: Christopher L. Shannon (cshannon) <christopher.l.shan...@gmail.com>
Committed: Tue Nov 29 11:38:36 2016 -0500

----------------------------------------------------------------------
 .../transport/http/HttpTransportServer.java     | 26 ++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/80f46a80/activemq-http/src/main/java/org/apache/activemq/transport/http/HttpTransportServer.java
----------------------------------------------------------------------
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 02bf11f..f9774f3 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;

Reply via email to