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-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org