From c9ef1623c9616ec4481483b04440f2ec7548ecf8 Mon Sep 17 00:00:00 2001 From: markt Date: Sun, 5 Jun 2011 13:40:57 +0000 Subject: [PATCH] Create an AbstactConnectionHandler and pull up the common JMX code from the AJP and HTTP connectors git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1132404 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/coyote/AbstractProtocol.java | 75 +++++++++++++++++++ .../org/apache/coyote/ajp/AbstractAjpProtocol.java | 7 ++ java/org/apache/coyote/ajp/AjpAprProtocol.java | 64 +++------------- java/org/apache/coyote/ajp/AjpNioProtocol.java | 64 +++------------- java/org/apache/coyote/ajp/AjpProtocol.java | 64 +++------------- .../coyote/http11/AbstractHttp11Protocol.java | 6 ++ .../apache/coyote/http11/Http11AprProtocol.java | 79 +++----------------- .../apache/coyote/http11/Http11NioProtocol.java | 85 ++++------------------ java/org/apache/coyote/http11/Http11Protocol.java | 78 +++----------------- 9 files changed, 153 insertions(+), 369 deletions(-) diff --git a/java/org/apache/coyote/AbstractProtocol.java b/java/org/apache/coyote/AbstractProtocol.java index d547bd0fa..27a24d21a 100644 --- a/java/org/apache/coyote/AbstractProtocol.java +++ b/java/org/apache/coyote/AbstractProtocol.java @@ -18,6 +18,7 @@ package org.apache.coyote; import java.net.InetAddress; import java.util.concurrent.Executor; +import java.util.concurrent.atomic.AtomicLong; import javax.management.MBeanRegistration; import javax.management.MBeanServer; @@ -247,6 +248,12 @@ public abstract class AbstractProtocol implements ProtocolHandler, /** + * Obtain the name of the protocol, (Http, Ajp, etc.). Used with JMX. + */ + protected abstract String getProtocolName(); + + + /** * Obtain the handler associated with the underlying Endpoint */ protected abstract Handler getHandler(); @@ -442,4 +449,72 @@ public abstract class AbstractProtocol implements ProtocolHandler, if (rgOname != null) Registry.getRegistry(null, null).unregisterComponent(rgOname); } + + + // ------------------------------------------- Connection handler base class + + protected abstract static class AbstractConnectionHandler + implements AbstractEndpoint.Handler { + + protected RequestGroupInfo global = new RequestGroupInfo(); + protected AtomicLong registerCount = new AtomicLong(0); + + protected abstract AbstractProtocol getProtocol(); + protected abstract Log getLog(); + + + @Override + public Object getGlobal() { + return global; + } + + + protected void register(AbstractProcessor processor) { + if (getProtocol().getDomain() != null) { + synchronized (this) { + try { + long count = registerCount.incrementAndGet(); + RequestInfo rp = + processor.getRequest().getRequestProcessor(); + rp.setGlobalProcessor(global); + ObjectName rpName = new ObjectName( + getProtocol().getDomain() + + ":type=RequestProcessor,worker=" + + getProtocol().getName() + + ",name=" + getProtocol().getProtocolName() + + "Request" + count); + if (getLog().isDebugEnabled()) { + getLog().debug("Register " + rpName); + } + Registry.getRegistry(null, null).registerComponent(rp, + rpName, null); + rp.setRpName(rpName); + } catch (Exception e) { + getLog().warn("Error registering request"); + } + } + } + } + + protected void unregister(AbstractProcessor processor) { + if (getProtocol().getDomain() != null) { + synchronized (this) { + try { + RequestInfo rp = + processor.getRequest().getRequestProcessor(); + rp.setGlobalProcessor(null); + ObjectName rpName = rp.getRpName(); + if (getLog().isDebugEnabled()) { + getLog().debug("Unregister " + rpName); + } + Registry.getRegistry(null, null).unregisterComponent( + rpName); + rp.setRpName(null); + } catch (Exception e) { + getLog().warn("Error unregistering request", e); + } + } + } + } + } } diff --git a/java/org/apache/coyote/ajp/AbstractAjpProtocol.java b/java/org/apache/coyote/ajp/AbstractAjpProtocol.java index ffb07b695..9c69bd7d7 100644 --- a/java/org/apache/coyote/ajp/AbstractAjpProtocol.java +++ b/java/org/apache/coyote/ajp/AbstractAjpProtocol.java @@ -28,6 +28,13 @@ public abstract class AbstractAjpProtocol extends AbstractProtocol { StringManager.getManager(Constants.Package); + @Override + protected String getProtocolName() { + return "Ajp"; + } + + + // ------------------------------------------------- AJP specific properties // ------------------------------------------ managed in the ProtocolHandler diff --git a/java/org/apache/coyote/ajp/AjpAprProtocol.java b/java/org/apache/coyote/ajp/AjpAprProtocol.java index 35788b6c7..559ae6e56 100644 --- a/java/org/apache/coyote/ajp/AjpAprProtocol.java +++ b/java/org/apache/coyote/ajp/AjpAprProtocol.java @@ -20,16 +20,11 @@ package org.apache.coyote.ajp; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.atomic.AtomicInteger; -import java.util.concurrent.atomic.AtomicLong; -import javax.management.ObjectName; - -import org.apache.coyote.RequestGroupInfo; -import org.apache.coyote.RequestInfo; +import org.apache.coyote.AbstractProtocol; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; import org.apache.tomcat.util.ExceptionUtils; -import org.apache.tomcat.util.modeler.Registry; import org.apache.tomcat.util.net.AbstractEndpoint; import org.apache.tomcat.util.net.AprEndpoint; import org.apache.tomcat.util.net.AprEndpoint.Handler; @@ -106,11 +101,10 @@ public class AjpAprProtocol extends AbstractAjpProtocol { // -------------------------------------- AjpConnectionHandler Inner Class - protected static class AjpConnectionHandler implements Handler { + protected static class AjpConnectionHandler + extends AbstractConnectionHandler implements Handler { protected AjpAprProtocol proto; - protected AtomicLong registerCount = new AtomicLong(0); - protected RequestGroupInfo global = new RequestGroupInfo(); protected ConcurrentHashMap, AjpAprProcessor> connections = new ConcurrentHashMap, AjpAprProcessor>(); @@ -160,8 +154,13 @@ public class AjpAprProtocol extends AbstractAjpProtocol { } @Override - public Object getGlobal() { - return global; + protected AbstractProtocol getProtocol() { + return proto; + } + + @Override + protected Log getLog() { + return log; } @Override @@ -270,48 +269,5 @@ public class AjpAprProtocol extends AbstractAjpProtocol { register(processor); return processor; } - - protected void register(AjpAprProcessor processor) { - if (proto.getDomain() != null) { - synchronized (this) { - try { - long count = registerCount.incrementAndGet(); - RequestInfo rp = processor.getRequest().getRequestProcessor(); - rp.setGlobalProcessor(global); - ObjectName rpName = new ObjectName - (proto.getDomain() + ":type=RequestProcessor,worker=" - + proto.getName() + ",name=AjpRequest" + count); - if (log.isDebugEnabled()) { - log.debug("Register " + rpName); - } - Registry.getRegistry(null, null).registerComponent(rp, rpName, null); - rp.setRpName(rpName); - } catch (Exception e) { - log.warn("Error registering request"); - } - } - } - } - - protected void unregister(AjpAprProcessor processor) { - if (proto.getDomain() != null) { - synchronized (this) { - try { - RequestInfo rp = processor.getRequest().getRequestProcessor(); - rp.setGlobalProcessor(null); - ObjectName rpName = rp.getRpName(); - if (log.isDebugEnabled()) { - log.debug("Unregister " + rpName); - } - Registry.getRegistry(null, null).unregisterComponent(rpName); - rp.setRpName(null); - } catch (Exception e) { - log.warn("Error unregistering request", e); - } - } - } - } - } - } diff --git a/java/org/apache/coyote/ajp/AjpNioProtocol.java b/java/org/apache/coyote/ajp/AjpNioProtocol.java index c620d8fc4..1d9aec892 100644 --- a/java/org/apache/coyote/ajp/AjpNioProtocol.java +++ b/java/org/apache/coyote/ajp/AjpNioProtocol.java @@ -22,16 +22,11 @@ import java.util.Iterator; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.atomic.AtomicInteger; -import java.util.concurrent.atomic.AtomicLong; -import javax.management.ObjectName; - -import org.apache.coyote.RequestGroupInfo; -import org.apache.coyote.RequestInfo; +import org.apache.coyote.AbstractProtocol; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; import org.apache.tomcat.util.ExceptionUtils; -import org.apache.tomcat.util.modeler.Registry; import org.apache.tomcat.util.net.AbstractEndpoint; import org.apache.tomcat.util.net.NioChannel; import org.apache.tomcat.util.net.NioEndpoint; @@ -95,11 +90,10 @@ public class AjpNioProtocol extends AbstractAjpProtocol { // -------------------------------------- AjpConnectionHandler Inner Class - protected static class AjpConnectionHandler implements Handler { + protected static class AjpConnectionHandler + extends AbstractConnectionHandler implements Handler { protected AjpNioProtocol proto; - protected AtomicLong registerCount = new AtomicLong(0); - protected RequestGroupInfo global = new RequestGroupInfo(); protected ConcurrentHashMap connections = new ConcurrentHashMap(); @@ -149,8 +143,13 @@ public class AjpNioProtocol extends AbstractAjpProtocol { } @Override - public Object getGlobal() { - return global; + protected AbstractProtocol getProtocol() { + return proto; + } + + @Override + protected Log getLog() { + return log; } @Override @@ -314,48 +313,5 @@ public class AjpNioProtocol extends AbstractAjpProtocol { register(processor); return processor; } - - protected void register(AjpNioProcessor processor) { - if (proto.getDomain() != null) { - synchronized (this) { - try { - long count = registerCount.incrementAndGet(); - RequestInfo rp = processor.getRequest().getRequestProcessor(); - rp.setGlobalProcessor(global); - ObjectName rpName = new ObjectName - (proto.getDomain() + ":type=RequestProcessor,worker=" - + proto.getName() + ",name=AjpRequest" + count); - if (log.isDebugEnabled()) { - log.debug("Register " + rpName); - } - Registry.getRegistry(null, null).registerComponent(rp, rpName, null); - rp.setRpName(rpName); - } catch (Exception e) { - log.warn("Error registering request"); - } - } - } - } - - protected void unregister(AjpNioProcessor processor) { - if (proto.getDomain() != null) { - synchronized (this) { - try { - RequestInfo rp = processor.getRequest().getRequestProcessor(); - rp.setGlobalProcessor(null); - ObjectName rpName = rp.getRpName(); - if (log.isDebugEnabled()) { - log.debug("Unregister " + rpName); - } - Registry.getRegistry(null, null).unregisterComponent(rpName); - rp.setRpName(null); - } catch (Exception e) { - log.warn("Error unregistering request", e); - } - } - } - } - } - } diff --git a/java/org/apache/coyote/ajp/AjpProtocol.java b/java/org/apache/coyote/ajp/AjpProtocol.java index bf40caa7f..76e8324a2 100644 --- a/java/org/apache/coyote/ajp/AjpProtocol.java +++ b/java/org/apache/coyote/ajp/AjpProtocol.java @@ -21,16 +21,11 @@ import java.net.Socket; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.atomic.AtomicInteger; -import java.util.concurrent.atomic.AtomicLong; -import javax.management.ObjectName; - -import org.apache.coyote.RequestGroupInfo; -import org.apache.coyote.RequestInfo; +import org.apache.coyote.AbstractProtocol; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; import org.apache.tomcat.util.ExceptionUtils; -import org.apache.tomcat.util.modeler.Registry; import org.apache.tomcat.util.net.AbstractEndpoint; import org.apache.tomcat.util.net.JIoEndpoint; import org.apache.tomcat.util.net.JIoEndpoint.Handler; @@ -95,11 +90,10 @@ public class AjpProtocol extends AbstractAjpProtocol { // -------------------------------------- AjpConnectionHandler Inner Class - protected static class AjpConnectionHandler implements Handler { + protected static class AjpConnectionHandler + extends AbstractConnectionHandler implements Handler { protected AjpProtocol proto; - protected AtomicLong registerCount = new AtomicLong(0); - protected RequestGroupInfo global = new RequestGroupInfo(); protected ConcurrentHashMap, AjpProcessor> connections = new ConcurrentHashMap, AjpProcessor>(); @@ -144,13 +138,19 @@ public class AjpProtocol extends AbstractAjpProtocol { } }; + public AjpConnectionHandler(AjpProtocol proto) { this.proto = proto; } @Override - public Object getGlobal() { - return global; + protected AbstractProtocol getProtocol() { + return proto; + } + + @Override + protected Log getLog() { + return log; } @Override @@ -227,47 +227,5 @@ public class AjpProtocol extends AbstractAjpProtocol { register(processor); return processor; } - - protected void register(AjpProcessor processor) { - if (proto.getDomain() != null) { - synchronized (this) { - try { - long count = registerCount.incrementAndGet(); - RequestInfo rp = processor.getRequest().getRequestProcessor(); - rp.setGlobalProcessor(global); - ObjectName rpName = new ObjectName - (proto.getDomain() + ":type=RequestProcessor,worker=" - + proto.getName() + ",name=AjpRequest" + count); - if (log.isDebugEnabled()) { - log.debug("Register " + rpName); - } - Registry.getRegistry(null, null).registerComponent(rp, rpName, null); - rp.setRpName(rpName); - } catch (Exception e) { - log.warn("Error registering request"); - } - } - } - } - - protected void unregister(AjpProcessor processor) { - if (proto.getDomain() != null) { - synchronized (this) { - try { - RequestInfo rp = processor.getRequest().getRequestProcessor(); - rp.setGlobalProcessor(null); - ObjectName rpName = rp.getRpName(); - if (log.isDebugEnabled()) { - log.debug("Unregister " + rpName); - } - Registry.getRegistry(null, null).unregisterComponent(rpName); - rp.setRpName(null); - } catch (Exception e) { - log.warn("Error unregistering request", e); - } - } - } - } } - } diff --git a/java/org/apache/coyote/http11/AbstractHttp11Protocol.java b/java/org/apache/coyote/http11/AbstractHttp11Protocol.java index d5de4da46..0d1aca45a 100644 --- a/java/org/apache/coyote/http11/AbstractHttp11Protocol.java +++ b/java/org/apache/coyote/http11/AbstractHttp11Protocol.java @@ -28,6 +28,12 @@ public abstract class AbstractHttp11Protocol extends AbstractProtocol { StringManager.getManager(Constants.Package); + @Override + protected String getProtocolName() { + return "Http"; + } + + // ------------------------------------------------ HTTP specific properties // ------------------------------------------ managed in the ProtocolHandler diff --git a/java/org/apache/coyote/http11/Http11AprProtocol.java b/java/org/apache/coyote/http11/Http11AprProtocol.java index 66a891952..c10814245 100644 --- a/java/org/apache/coyote/http11/Http11AprProtocol.java +++ b/java/org/apache/coyote/http11/Http11AprProtocol.java @@ -17,21 +17,14 @@ package org.apache.coyote.http11; -import java.security.AccessController; -import java.security.PrivilegedAction; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.atomic.AtomicInteger; -import java.util.concurrent.atomic.AtomicLong; -import javax.management.ObjectName; - -import org.apache.coyote.RequestGroupInfo; -import org.apache.coyote.RequestInfo; +import org.apache.coyote.AbstractProtocol; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; import org.apache.tomcat.util.ExceptionUtils; -import org.apache.tomcat.util.modeler.Registry; import org.apache.tomcat.util.net.AbstractEndpoint; import org.apache.tomcat.util.net.AprEndpoint; import org.apache.tomcat.util.net.AprEndpoint.Handler; @@ -190,11 +183,10 @@ public class Http11AprProtocol extends AbstractHttp11Protocol { // -------------------- Connection handler -------------------- - protected static class Http11ConnectionHandler implements Handler { + protected static class Http11ConnectionHandler + extends AbstractConnectionHandler implements Handler { protected Http11AprProtocol proto; - protected AtomicLong registerCount = new AtomicLong(0); - protected RequestGroupInfo global = new RequestGroupInfo(); protected ConcurrentHashMap connections = new ConcurrentHashMap(); @@ -245,8 +237,13 @@ public class Http11AprProtocol extends AbstractHttp11Protocol { } @Override - public Object getGlobal() { - return global; + protected AbstractProtocol getProtocol() { + return proto; + } + + @Override + protected Log getLog() { + return log; } @Override @@ -418,61 +415,5 @@ public class Http11AprProtocol extends AbstractHttp11Protocol { register(processor); return processor; } - - protected void register(Http11AprProcessor processor) { - if (proto.getDomain() != null) { - synchronized (this) { - try { - long count = registerCount.incrementAndGet(); - final RequestInfo rp = processor.getRequest().getRequestProcessor(); - rp.setGlobalProcessor(global); - final ObjectName rpName = new ObjectName - (proto.getDomain() + ":type=RequestProcessor,worker=" - + proto.getName() + ",name=HttpRequest" + count); - if (log.isDebugEnabled()) { - log.debug("Register " + rpName); - } - if (Constants.IS_SECURITY_ENABLED) { - AccessController.doPrivileged(new PrivilegedAction() { - @Override - public Void run() { - try { - Registry.getRegistry(null, null).registerComponent(rp, rpName, null); - } catch (Exception e) { - log.warn("Error registering request"); - } - return null; - } - }); - } else { - Registry.getRegistry(null, null).registerComponent(rp, rpName, null); - } - rp.setRpName(rpName); - } catch (Exception e) { - log.warn("Error registering request"); - } - } - } - } - - protected void unregister(Http11AprProcessor processor) { - if (proto.getDomain() != null) { - synchronized (this) { - try { - RequestInfo rp = processor.getRequest().getRequestProcessor(); - rp.setGlobalProcessor(null); - ObjectName rpName = rp.getRpName(); - if (log.isDebugEnabled()) { - log.debug("Unregister " + rpName); - } - Registry.getRegistry(null, null).unregisterComponent(rpName); - rp.setRpName(null); - } catch (Exception e) { - log.warn("Error unregistering request", e); - } - } - } - } - } } diff --git a/java/org/apache/coyote/http11/Http11NioProtocol.java b/java/org/apache/coyote/http11/Http11NioProtocol.java index 92bc093a7..4818d64a8 100644 --- a/java/org/apache/coyote/http11/Http11NioProtocol.java +++ b/java/org/apache/coyote/http11/Http11NioProtocol.java @@ -19,22 +19,15 @@ package org.apache.coyote.http11; import java.nio.channels.SelectionKey; import java.nio.channels.SocketChannel; -import java.security.AccessController; -import java.security.PrivilegedAction; import java.util.Iterator; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.atomic.AtomicInteger; -import java.util.concurrent.atomic.AtomicLong; -import javax.management.ObjectName; - -import org.apache.coyote.RequestGroupInfo; -import org.apache.coyote.RequestInfo; +import org.apache.coyote.AbstractProtocol; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; import org.apache.tomcat.util.ExceptionUtils; -import org.apache.tomcat.util.modeler.Registry; import org.apache.tomcat.util.net.AbstractEndpoint; import org.apache.tomcat.util.net.NioChannel; import org.apache.tomcat.util.net.NioEndpoint; @@ -158,11 +151,10 @@ public class Http11NioProtocol extends AbstractHttp11JsseProtocol { // -------------------- Connection handler -------------------- - protected static class Http11ConnectionHandler implements Handler { + protected static class Http11ConnectionHandler + extends AbstractConnectionHandler implements Handler { protected Http11NioProtocol proto; - protected AtomicLong registerCount = new AtomicLong(0); - protected RequestGroupInfo global = new RequestGroupInfo(); protected ConcurrentHashMap connections = new ConcurrentHashMap(); @@ -182,7 +174,7 @@ public class Http11NioProtocol extends AbstractHttp11JsseProtocol { size.incrementAndGet(); } } - if (!result) deregister(processor); + if (!result) unregister(processor); return result; } @@ -199,7 +191,7 @@ public class Http11NioProtocol extends AbstractHttp11JsseProtocol { public void clear() { Http11NioProcessor next = poll(); while ( next != null ) { - deregister(next); + unregister(next); next = poll(); } super.clear(); @@ -212,11 +204,17 @@ public class Http11NioProtocol extends AbstractHttp11JsseProtocol { } @Override - public Object getGlobal() { - return global; + protected AbstractProtocol getProtocol() { + return proto; } @Override + protected Log getLog() { + return log; + } + + + @Override public SSLImplementation getSslImplementation() { return proto.sslImplementation; } @@ -238,7 +236,7 @@ public class Http11NioProtocol extends AbstractHttp11JsseProtocol { it.remove(); Http11NioProcessor result = entry.getValue(); result.recycle(); - deregister(result); + unregister(result); released = true; break; } @@ -436,60 +434,5 @@ public class Http11NioProtocol extends AbstractHttp11JsseProtocol { register(processor); return processor; } - - protected void register(Http11NioProcessor processor) { - if (proto.getDomain() != null) { - synchronized (this) { - try { - long count = registerCount.incrementAndGet(); - final RequestInfo rp = processor.getRequest().getRequestProcessor(); - rp.setGlobalProcessor(global); - final ObjectName rpName = new ObjectName - (proto.getDomain() + ":type=RequestProcessor,worker=" - + proto.getName() + ",name=HttpRequest" + count); - if (log.isDebugEnabled()) { - log.debug("Register " + rpName); - } - if (Constants.IS_SECURITY_ENABLED) { - AccessController.doPrivileged(new PrivilegedAction() { - @Override - public Void run() { - try { - Registry.getRegistry(null, null).registerComponent(rp, rpName, null); - } catch (Exception e) { - log.warn("Error registering request"); - } - return null; - } - }); - } else { - Registry.getRegistry(null, null).registerComponent(rp, rpName, null); - } - rp.setRpName(rpName); - } catch (Exception e) { - log.warn("Error registering request"); - } - } - } - } - - protected void deregister(Http11NioProcessor processor) { - if (proto.getDomain() != null) { - synchronized (this) { - try { - RequestInfo rp = processor.getRequest().getRequestProcessor(); - rp.setGlobalProcessor(null); - ObjectName rpName = rp.getRpName(); - if (log.isDebugEnabled()) { - log.debug("Unregister " + rpName); - } - Registry.getRegistry(null, null).unregisterComponent(rpName); - rp.setRpName(null); - } catch (Exception e) { - log.warn("Error unregistering request", e); - } - } - } - } } } diff --git a/java/org/apache/coyote/http11/Http11Protocol.java b/java/org/apache/coyote/http11/Http11Protocol.java index bb3fd6567..c0afe0c6e 100644 --- a/java/org/apache/coyote/http11/Http11Protocol.java +++ b/java/org/apache/coyote/http11/Http11Protocol.java @@ -18,20 +18,13 @@ package org.apache.coyote.http11; import java.net.Socket; -import java.security.AccessController; -import java.security.PrivilegedAction; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.atomic.AtomicInteger; -import java.util.concurrent.atomic.AtomicLong; -import javax.management.ObjectName; - -import org.apache.coyote.RequestGroupInfo; -import org.apache.coyote.RequestInfo; +import org.apache.coyote.AbstractProtocol; import org.apache.juli.logging.Log; import org.apache.tomcat.util.ExceptionUtils; -import org.apache.tomcat.util.modeler.Registry; import org.apache.tomcat.util.net.AbstractEndpoint; import org.apache.tomcat.util.net.JIoEndpoint; import org.apache.tomcat.util.net.JIoEndpoint.Handler; @@ -109,11 +102,10 @@ public class Http11Protocol extends AbstractHttp11JsseProtocol { // ----------------------------------- Http11ConnectionHandler Inner Class - protected static class Http11ConnectionHandler implements Handler { + protected static class Http11ConnectionHandler + extends AbstractConnectionHandler implements Handler { protected Http11Protocol proto; - protected AtomicLong registerCount = new AtomicLong(0); - protected RequestGroupInfo global = new RequestGroupInfo(); protected ConcurrentHashMap, Http11Processor> connections = new ConcurrentHashMap, Http11Processor>(); @@ -163,11 +155,16 @@ public class Http11Protocol extends AbstractHttp11JsseProtocol { } @Override - public Object getGlobal() { - return global; + protected AbstractProtocol getProtocol() { + return proto; } @Override + protected Log getLog() { + return log; + } + + @Override public SSLImplementation getSslImplementation() { return proto.sslImplementation; } @@ -261,60 +258,5 @@ public class Http11Protocol extends AbstractHttp11JsseProtocol { register(processor); return processor; } - - protected void register(Http11Processor processor) { - if (proto.getDomain() != null) { - synchronized (this) { - try { - long count = registerCount.incrementAndGet(); - final RequestInfo rp = processor.getRequest().getRequestProcessor(); - rp.setGlobalProcessor(global); - final ObjectName rpName = new ObjectName - (proto.getDomain() + ":type=RequestProcessor,worker=" - + proto.getName() + ",name=HttpRequest" + count); - if (log.isDebugEnabled()) { - log.debug("Register " + rpName); - } - if (Constants.IS_SECURITY_ENABLED) { - AccessController.doPrivileged(new PrivilegedAction() { - @Override - public Void run() { - try { - Registry.getRegistry(null, null).registerComponent(rp, rpName, null); - } catch (Exception e) { - log.warn("Error registering request"); - } - return null; - } - }); - } else { - Registry.getRegistry(null, null).registerComponent(rp, rpName, null); - } - rp.setRpName(rpName); - } catch (Exception e) { - log.warn("Error registering request"); - } - } - } - } - - protected void unregister(Http11Processor processor) { - if (proto.getDomain() != null) { - synchronized (this) { - try { - RequestInfo rp = processor.getRequest().getRequestProcessor(); - rp.setGlobalProcessor(null); - ObjectName rpName = rp.getRpName(); - if (log.isDebugEnabled()) { - log.debug("Unregister " + rpName); - } - Registry.getRegistry(null, null).unregisterComponent(rpName); - rp.setRpName(null); - } catch (Exception e) { - log.warn("Error unregistering request", e); - } - } - } - } } } -- 2.11.0