You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2011/06/05 15:40:58 UTC

svn commit: r1132404 - in /tomcat/trunk/java/org/apache/coyote: ./ ajp/ http11/

Author: markt
Date: Sun Jun  5 13:40:57 2011
New Revision: 1132404

URL: http://svn.apache.org/viewvc?rev=1132404&view=rev
Log:
Create an AbstactConnectionHandler and pull up the common JMX code from the AJP and HTTP connectors

Modified:
    tomcat/trunk/java/org/apache/coyote/AbstractProtocol.java
    tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProtocol.java
    tomcat/trunk/java/org/apache/coyote/ajp/AjpAprProtocol.java
    tomcat/trunk/java/org/apache/coyote/ajp/AjpNioProtocol.java
    tomcat/trunk/java/org/apache/coyote/ajp/AjpProtocol.java
    tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java
    tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java
    tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java
    tomcat/trunk/java/org/apache/coyote/http11/Http11Protocol.java

Modified: tomcat/trunk/java/org/apache/coyote/AbstractProtocol.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/AbstractProtocol.java?rev=1132404&r1=1132403&r2=1132404&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/AbstractProtocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/AbstractProtocol.java Sun Jun  5 13:40:57 2011
@@ -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 i
 
 
     /**
+     * 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 i
         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);
+                    }
+                }
+            }
+        }
+    }
 }

Modified: tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProtocol.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProtocol.java?rev=1132404&r1=1132403&r2=1132404&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProtocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProtocol.java Sun Jun  5 13:40:57 2011
@@ -28,6 +28,13 @@ public abstract class AbstractAjpProtoco
         StringManager.getManager(Constants.Package);
 
 
+    @Override
+    protected String getProtocolName() {
+        return "Ajp";
+    }
+
+
+
     // ------------------------------------------------- AJP specific properties
     // ------------------------------------------ managed in the ProtocolHandler
     

Modified: tomcat/trunk/java/org/apache/coyote/ajp/AjpAprProtocol.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/AjpAprProtocol.java?rev=1132404&r1=1132403&r2=1132404&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/ajp/AjpAprProtocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/ajp/AjpAprProtocol.java Sun Jun  5 13:40:57 2011
@@ -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 Abst
     // --------------------------------------  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<SocketWrapper<Long>, AjpAprProcessor> connections =
             new ConcurrentHashMap<SocketWrapper<Long>, AjpAprProcessor>();
@@ -160,8 +154,13 @@ public class AjpAprProtocol extends Abst
         }
 
         @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 Abst
             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);
-                    }
-                }
-            }
-        }
-
     }
-
 }

Modified: tomcat/trunk/java/org/apache/coyote/ajp/AjpNioProtocol.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/AjpNioProtocol.java?rev=1132404&r1=1132403&r2=1132404&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/ajp/AjpNioProtocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/ajp/AjpNioProtocol.java Sun Jun  5 13:40:57 2011
@@ -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 Abst
     // --------------------------------------  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<NioChannel, AjpNioProcessor> connections =
             new ConcurrentHashMap<NioChannel, AjpNioProcessor>();
@@ -149,8 +143,13 @@ public class AjpNioProtocol extends Abst
         }
 
         @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 Abst
             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);
-                    }
-                }
-            }
-        }
-
     }
-
 }

Modified: tomcat/trunk/java/org/apache/coyote/ajp/AjpProtocol.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/AjpProtocol.java?rev=1132404&r1=1132403&r2=1132404&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/ajp/AjpProtocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/ajp/AjpProtocol.java Sun Jun  5 13:40:57 2011
@@ -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 Abstrac
     // --------------------------------------  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<SocketWrapper<Socket>, AjpProcessor> connections =
             new ConcurrentHashMap<SocketWrapper<Socket>, AjpProcessor>();
@@ -144,13 +138,19 @@ public class AjpProtocol extends Abstrac
             }
         };
 
+        
         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 Abstrac
             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);
-                    }
-                }
-            }
-        }
     }
-
 }

Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java?rev=1132404&r1=1132403&r2=1132404&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java Sun Jun  5 13:40:57 2011
@@ -28,6 +28,12 @@ public abstract class AbstractHttp11Prot
         StringManager.getManager(Constants.Package);
 
 
+    @Override
+    protected String getProtocolName() {
+        return "Http";
+    }
+
+
     // ------------------------------------------------ HTTP specific properties
     // ------------------------------------------ managed in the ProtocolHandler
 

Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java?rev=1132404&r1=1132403&r2=1132404&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java Sun Jun  5 13:40:57 2011
@@ -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 A
 
     // --------------------  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<Long, Http11AprProcessor> connections =
             new ConcurrentHashMap<Long, Http11AprProcessor>();
@@ -245,8 +237,13 @@ public class Http11AprProtocol extends A
         }
 
         @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 A
             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<Void>() {
-                                @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);
-                    }
-                }
-            }
-        }
-
     }
 }

Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java?rev=1132404&r1=1132403&r2=1132404&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java Sun Jun  5 13:40:57 2011
@@ -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 A
 
     // --------------------  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<NioChannel, Http11NioProcessor> connections =
             new ConcurrentHashMap<NioChannel, Http11NioProcessor>();
@@ -182,7 +174,7 @@ public class Http11NioProtocol extends A
                         size.incrementAndGet();
                     }
                 }
-                if (!result) deregister(processor);
+                if (!result) unregister(processor);
                 return result;
             }
             
@@ -199,7 +191,7 @@ public class Http11NioProtocol extends A
             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 A
         }
         
         @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 A
                     it.remove();
                     Http11NioProcessor result = entry.getValue();
                     result.recycle();
-                    deregister(result);
+                    unregister(result);
                     released = true;
                     break;
                 }
@@ -436,60 +434,5 @@ public class Http11NioProtocol extends A
             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<Void>() {
-                                @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);
-                    }
-                }
-            }
-        }
     }
 }

Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11Protocol.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11Protocol.java?rev=1132404&r1=1132403&r2=1132404&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11Protocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11Protocol.java Sun Jun  5 13:40:57 2011
@@ -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 Abst
 
     // -----------------------------------  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<SocketWrapper<Socket>, Http11Processor> connections =
             new ConcurrentHashMap<SocketWrapper<Socket>, Http11Processor>();
@@ -163,11 +155,16 @@ public class Http11Protocol extends Abst
         }
 
         @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 Abst
             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<Void>() {
-                                @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);
-                    }
-                }
-            }
-        }
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org