2

I am able to get the parent Connector with

        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
        QueryExp qe = Query.match(Query.attr("port"), Query.value("443"));
        ObjectName on = new ObjectName("*:type=Connector,*");
        Set<ObjectName> objectNames = mbs.queryNames(on, qe);

and I don't want to read server.xml in case it is out of sync. How is one to get the SSLHostConfig ?

user1133275
  • 2,642
  • 27
  • 31

1 Answers1

2

The Connector MBean does not contain information on the TLS configuration. You need to call the method findSslHostConfigs on a bean of type=ThreadPool. ThreadPool is actually a misnomer, since this MBean is exported by each ProtocolHandler.

final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
final QueryExp qe = Query.eq(Query.attr("port"), Query.value(443));
final ObjectName on = new ObjectName("*:type=ThreadPool,*");
final Set<ObjectName> protocols = mbs.queryNames(on, qe);
for (final ObjectName protocol : protocols) {
    SSLHostConfig[] configs = (SSLHostConfig[]) mbs.invoke(protocol, "findSslHostConfigs", null, null);
    // do something with the SSLHostConfig
}

Alternatively the SSLHostConfigs are available as MBeans too: they have the property type=SSLHostConfig.

Piotr P. Karwasz
  • 12,857
  • 3
  • 20
  • 43