From: markt Date: Wed, 8 Dec 2010 17:15:50 +0000 (+0000) Subject: Re-factoring in support of https://issues.apache.org/bugzilla/show_bug.cgi?id=50360 X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=5a4786b7f7170902cdf5a9505a2300b5f5e50c5f;p=tomcat7.0 Re-factoring in support of https://issues.apache.org/bugzilla/show_bug.cgi?id=50360 ProtocolHandler should register itself with MBean server rather than have the connector do it. git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1043531 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/checkstyle.xml b/checkstyle.xml index 325d24f07..024bf91e6 100644 --- a/checkstyle.xml +++ b/checkstyle.xml @@ -27,6 +27,11 @@ + + + @@ -54,12 +59,12 @@ https://sourceforge.net/tracker/?func=detail&aid=3039718&group_id=29721&atid=397078 --> + + - - \ No newline at end of file diff --git a/java/org/apache/catalina/connector/Connector.java b/java/org/apache/catalina/connector/Connector.java index b65250ec5..609bbc8ad 100644 --- a/java/org/apache/catalina/connector/Connector.java +++ b/java/org/apache/catalina/connector/Connector.java @@ -907,9 +907,6 @@ public class Connector extends LifecycleMBeanBase { ("coyoteConnector.protocolHandlerInitializationFailed"), e); } - onameProtocolHandler = register(protocolHandler, - createObjectNameKeyProperties("ProtocolHandler")); - // Initialize mapper listener mapperListener.init(); } @@ -967,7 +964,6 @@ public class Connector extends LifecycleMBeanBase { @Override protected void destroyInternal() throws LifecycleException { mapperListener.destroy(); - unregister(onameProtocolHandler); try { protocolHandler.destroy(); diff --git a/java/org/apache/catalina/connector/CoyoteAdapter.java b/java/org/apache/catalina/connector/CoyoteAdapter.java index 082b9c4d0..0cb736eee 100644 --- a/java/org/apache/catalina/connector/CoyoteAdapter.java +++ b/java/org/apache/catalina/connector/CoyoteAdapter.java @@ -464,6 +464,12 @@ public class CoyoteAdapter implements Adapter { } + @Override + public String getDomain() { + return connector.getDomain(); + } + + // ------------------------------------------------------ Protected Methods diff --git a/java/org/apache/coyote/AbstractProtocolHandler.java b/java/org/apache/coyote/AbstractProtocolHandler.java index 43eaf9042..a8040eb96 100644 --- a/java/org/apache/coyote/AbstractProtocolHandler.java +++ b/java/org/apache/coyote/AbstractProtocolHandler.java @@ -23,6 +23,7 @@ import java.util.concurrent.Executor; import javax.management.MBeanRegistration; import javax.management.MBeanServer; +import javax.management.MalformedObjectNameException; import javax.management.ObjectName; import org.apache.juli.logging.Log; @@ -334,6 +335,24 @@ public abstract class AbstractProtocolHandler implements ProtocolHandler, // NOOP } + private ObjectName createObjectName() throws MalformedObjectNameException { + // Use the same domain as the connector + domain = adapter.getDomain(); + + if (domain == null) { + return null; + } + + StringBuilder name = new StringBuilder(getDomain()); + name.append(":type=ProtocolHandler,port="); + name.append(getPort()); + InetAddress address = getAddress(); + if (address != null) { + name.append(",address="); + name.append(ObjectName.quote(address.toString())); + } + return new ObjectName(name.toString()); + } // ------------------------------------------------------- Lifecycle methods @@ -349,6 +368,15 @@ public abstract class AbstractProtocolHandler implements ProtocolHandler, getLog().info(sm.getString("abstractProtocolHandler.init", getName())); + if (oname == null) { + // Component not pre-registered so register it + oname = createObjectName(); + if (oname != null) { + Registry.getRegistry(null, null).registerComponent(this, oname, + null); + } + } + if (this.domain != null) { try { tpOname = new ObjectName(domain + ":" + @@ -450,6 +478,12 @@ public abstract class AbstractProtocolHandler implements ProtocolHandler, getName()), e); } + // If object was pre-registered (mserver != null) what ever registered + // the ProtocolHandler should de-register it + if (oname != null && mserver == null) { + Registry.getRegistry(null, null).unregisterComponent(oname); + } + if (tpOname != null) Registry.getRegistry(null, null).unregisterComponent(tpOname); if (rgOname != null) diff --git a/java/org/apache/coyote/Adapter.java b/java/org/apache/coyote/Adapter.java index ffa5d3506..e9496e7f7 100644 --- a/java/org/apache/coyote/Adapter.java +++ b/java/org/apache/coyote/Adapter.java @@ -54,4 +54,12 @@ public interface Adapter { throws Exception; public void log(Request req, Response res, long time); + + /** + * Provide the name of the domain to use to register MBeans for conponents + * associated with the connector. + * + * @return The MBean domain name + */ + public String getDomain(); }