É possível reiniciar o conector Tomcat individual, ou seja, é possível reiniciar a porta como 8443 depois de alterar o arquivo jssecacert.
Aqui está o código / método completo que estou usando para reiniciar os conectores do tomcat depois de adicionar / excluir certificados.
// Stop and restart the SSL connection so that the tomcat server will
// re-read the certificates from the truststore file.
public void refreshTrustStore() throws Exception
{
try
{
//following line should be replaced based on where you get your port number. You may pass in as argument to this method
String httpsPort = configurationManager.getHttpsPort();
String objectString = "*:type=Connector,port=" + httpsPort + ",*";
final ObjectName objectNameQuery = new ObjectName(objectString);
for (final MBeanServer server: MBeanServerFactory.findMBeanServer(null))
{
if (!server.queryNames(objectNameQuery, null).isEmpty())
{
MBeanServer mbeanServer = server;
ObjectName objectName = (ObjectName) server.queryNames(objectNameQuery, null).toArray()[0];
mbeanServer.invoke(objectName, "stop", null, null);
// Polling sleep to reduce delay to safe minimum.
// Use currentTimeMillis() over nanoTime() to avoid issues
// with migrating threads across sleep() calls.
long start = System.currentTimeMillis();
// Maximum of 6 seconds, 3x time required on an idle system.
long max_duration = 6000L;
long duration = 0L;
do
{
try
{
Thread.sleep(100);
}
catch (InterruptedException e)
{
Thread.currentThread().interrupt();
}
duration = (System.currentTimeMillis() - start);
} while (duration < max_duration &&
server.queryNames(objectNameQuery, null).size() > 0);
// Use below to get more accurate metrics.
String message = "TrustStoreManager TrustStore Stop: took " + duration + "milliseconds";
logger.information(message);
mbeanServer.invoke(objectName, "start", null, null);
break;
}
}
}
catch (Exception exception)
{
// Log and throw exception
throw exception
}
}
bindOnInit="false"
opçãoAgora existe uma maneira de fazer isso começando com o tomcat v8.5.24.
Eles introduziram 2 métodos denominados:
Eles podem ser chamados de várias maneiras:
Detalhes da maneira 1 e 2 estão facilmente disponíveis nos documentos do tomcat.
Detalhes de como usar a maneira 3:
Encontre o código de exemplo abaixo:
Classe de protocolo principal:
O conector no server.xml deve mencionar isso como o protocolo:
Espero que isto ajude.
fonte