From c78b32e33adab51c1f5a5e2ff87f2e4e0e102bd1 Mon Sep 17 00:00:00 2001 From: Felix Sidokhine <felix.sidokhine@randstad.ca> Date: Sat, 30 May 2020 12:11:45 +0300 Subject: [PATCH] investigating java-ass problem --- jams-ca/src/main/java/net/jami/jams/ca/JamsCA.java | 8 ++++++++ .../jams/common/cryptoengineapi/CertificateAuthority.java | 1 + .../java/net/jami/jams/server/core/TomcatLauncher.java | 6 ++++++ 3 files changed, 15 insertions(+) diff --git a/jams-ca/src/main/java/net/jami/jams/ca/JamsCA.java b/jams-ca/src/main/java/net/jami/jams/ca/JamsCA.java index 8bebfbc2..6755e212 100644 --- a/jams-ca/src/main/java/net/jami/jams/ca/JamsCA.java +++ b/jams-ca/src/main/java/net/jami/jams/ca/JamsCA.java @@ -136,4 +136,12 @@ public class JamsCA implements CertificateAuthority { public X509Certificate getCA() { return CA.getCertificate(); } + + @Override + public boolean shutdownThreads() { + //Unsafe but acceptable. + crlWorker.stop(); + ocspWorker.stop(); + return true; + } } diff --git a/jams-common/src/main/java/net/jami/jams/common/cryptoengineapi/CertificateAuthority.java b/jams-common/src/main/java/net/jami/jams/common/cryptoengineapi/CertificateAuthority.java index 8ea454b8..0d740e94 100644 --- a/jams-common/src/main/java/net/jami/jams/common/cryptoengineapi/CertificateAuthority.java +++ b/jams-common/src/main/java/net/jami/jams/common/cryptoengineapi/CertificateAuthority.java @@ -44,5 +44,6 @@ public interface CertificateAuthority { String getLatestCRLPEMEncoded(); OCSPResp getOCSPResponse(OCSPReq ocspRequest); X509Certificate getCA(); + boolean shutdownThreads(); } diff --git a/jams-server/src/main/java/net/jami/jams/server/core/TomcatLauncher.java b/jams-server/src/main/java/net/jami/jams/server/core/TomcatLauncher.java index a3378db4..c3c8b9f9 100644 --- a/jams-server/src/main/java/net/jami/jams/server/core/TomcatLauncher.java +++ b/jams-server/src/main/java/net/jami/jams/server/core/TomcatLauncher.java @@ -24,6 +24,8 @@ package net.jami.jams.server.core; import lombok.extern.slf4j.Slf4j; +import net.jami.jams.ca.JamsCA; +import net.jami.jams.server.Server; import org.apache.catalina.WebResourceRoot; import org.apache.catalina.connector.Connector; import org.apache.catalina.core.StandardContext; @@ -39,6 +41,8 @@ import java.net.URI; import java.nio.file.Files; import java.nio.file.Paths; +import static net.jami.jams.server.Server.certificateAuthority; + //This class boots the tomcat server which provides the subsystem //for the API calls. @Slf4j @@ -116,8 +120,10 @@ public class TomcatLauncher { public void stopTomcat() { try { synchronized (tomcat) { + certificateAuthority.shutdownThreads(); tomcat.stop(); tomcat.destroy(); + context.destroy(); } } catch (Exception e) { log.info("Failed to stop tomcat server with error {}", e.getMessage()); -- GitLab