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 2017/03/21 14:13:11 UTC

svn commit: r1787973 - in /tomcat/trunk: java/org/apache/coyote/AbstractProtocol.java java/org/apache/tomcat/util/net/SSLHostConfig.java webapps/docs/changelog.xml

Author: markt
Date: Tue Mar 21 14:13:11 2017
New Revision: 1787973

URL: http://svn.apache.org/viewvc?rev=1787973&view=rev
Log:
Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=60853
Expose the SSLHostConfig and SSLHostConfigCertificate objects via JMX.

Modified:
    tomcat/trunk/java/org/apache/coyote/AbstractProtocol.java
    tomcat/trunk/java/org/apache/tomcat/util/net/SSLHostConfig.java
    tomcat/trunk/webapps/docs/changelog.xml

Modified: tomcat/trunk/java/org/apache/coyote/AbstractProtocol.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/AbstractProtocol.java?rev=1787973&r1=1787972&r2=1787973&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/AbstractProtocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/AbstractProtocol.java Tue Mar 21 14:13:11 2017
@@ -19,6 +19,7 @@ package org.apache.coyote;
 import java.net.InetAddress;
 import java.nio.ByteBuffer;
 import java.util.Collections;
+import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
@@ -42,6 +43,8 @@ import org.apache.tomcat.util.collection
 import org.apache.tomcat.util.modeler.Registry;
 import org.apache.tomcat.util.net.AbstractEndpoint;
 import org.apache.tomcat.util.net.AbstractEndpoint.Handler;
+import org.apache.tomcat.util.net.SSLHostConfig;
+import org.apache.tomcat.util.net.SSLHostConfigCertificate;
 import org.apache.tomcat.util.net.SocketEvent;
 import org.apache.tomcat.util.net.SocketWrapperBase;
 import org.apache.tomcat.util.res.StringManager;
@@ -74,6 +77,10 @@ public abstract class AbstractProtocol<S
     protected ObjectName tpOname = null;
 
 
+    private Set<ObjectName> sslOnames = new HashSet<>();
+    private Set<ObjectName> sslCertOnames = new HashSet<>();
+
+
     /**
      * Unique ID for this connector. Only used if the connector is configured
      * to use a random port as the port will change if stop(), start() is
@@ -533,7 +540,7 @@ public abstract class AbstractProtocol<S
 
         if (this.domain != null) {
             try {
-                tpOname = new ObjectName(domain + ":" + "type=ThreadPool,name=" + getName());
+                tpOname = new ObjectName(domain + ":type=ThreadPool,name=" + getName());
                 Registry.getRegistry(null, null).registerComponent(endpoint, tpOname, null);
             } catch (Exception e) {
                 getLog().error(sm.getString( "abstractProtocolHandler.mbeanRegistrationFailed",
@@ -542,6 +549,22 @@ public abstract class AbstractProtocol<S
             rgOname = new ObjectName(domain + ":type=GlobalRequestProcessor,name=" + getName());
             Registry.getRegistry(null, null).registerComponent(
                     getHandler().getGlobal(), rgOname, null);
+
+            for (SSLHostConfig sslHostConfig : getEndpoint().findSslHostConfigs()) {
+                ObjectName sslOname = new ObjectName(domain + ":type=SSLHostConfig,ThreadPool=" +
+                        getName() + ",name=" + sslHostConfig.getHostName());
+                Registry.getRegistry(null, null).registerComponent(sslHostConfig, sslOname, null);
+                sslOnames.add(sslOname);
+                for (SSLHostConfigCertificate sslHostConfigCert : sslHostConfig.getCertificates()) {
+                    ObjectName sslCertOname = new ObjectName(domain +
+                            ":type=SSLHostConfigCertificate,ThreadPool=" + getName() +
+                            ",Host=" + sslHostConfig.getHostName() +
+                            ",name=" + sslHostConfigCert.getType());
+                    Registry.getRegistry(null, null).registerComponent(
+                            sslHostConfigCert, sslCertOname, null);
+                    sslCertOnames.add(sslCertOname);
+                }
+            }
         }
 
         String endpointName = getName();
@@ -640,6 +663,12 @@ public abstract class AbstractProtocol<S
             if (rgOname != null) {
                 Registry.getRegistry(null, null).unregisterComponent(rgOname);
             }
+            for (ObjectName oname : sslOnames) {
+                Registry.getRegistry(null, null).unregisterComponent(oname);
+            }
+            for (ObjectName oname : sslCertOnames) {
+                Registry.getRegistry(null, null).unregisterComponent(oname);
+            }
         }
     }
 

Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SSLHostConfig.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/SSLHostConfig.java?rev=1787973&r1=1787972&r2=1787973&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/SSLHostConfig.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/SSLHostConfig.java Tue Mar 21 14:13:11 2017
@@ -128,6 +128,10 @@ public class SSLHostConfig implements Se
     }
 
 
+    // Expose in String form for JMX
+    public String getConfigType() {
+        return configType.name();
+    }
     public void setConfigType(Type configType) {
         this.configType = configType;
         if (configType == Type.EITHER) {

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1787973&r1=1787972&r2=1787973&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Tue Mar 21 14:13:11 2017
@@ -65,6 +65,10 @@
         (markt)
       </fix>
       <fix>
+        <bug>60853</bug>: Expose the <code>SSLHostConfig</code> and
+        <code>SSLHostConfigCertificate</code> objects via JMX. (markt)
+      </fix>
+      <fix>
         <bug>60876</bug>: Ensure that <code>Set-Cookie</code> headers generated
         by the <code>Rfc6265CookieProcessor</code> are aligned with the
         specification. Patch provided by Jim Griswold. (markt)



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