From db889d3376d0f5092731aa4390b9868207328c11 Mon Sep 17 00:00:00 2001 From: Felix Sidokhine <felix.sidokhine@randstad.ca> Date: Sat, 30 May 2020 19:06:16 +0300 Subject: [PATCH] fixed javassist issue --- jams-launcher/src/main/java/launcher/AppStarter.java | 2 +- jams-server/src/main/java/net/jami/jams/server/Server.java | 7 +++++-- .../java/net/jami/jams/server/core/TomcatLauncher.java | 7 +++++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/jams-launcher/src/main/java/launcher/AppStarter.java b/jams-launcher/src/main/java/launcher/AppStarter.java index ec9f3da2..51c89bfc 100644 --- a/jams-launcher/src/main/java/launcher/AppStarter.java +++ b/jams-launcher/src/main/java/launcher/AppStarter.java @@ -86,7 +86,7 @@ public class AppStarter extends Thread { doUpdate.wait(); } if(doUpdate.get()){ - server.tomcatLauncher.stopTomcat(); + Server.tomcatLauncher.stopTomcat(); server = null; //This will trigger a force reload of the lib. LibraryLoader.loadlibs(System.getProperty("user.dir"), AppStarter.class); diff --git a/jams-server/src/main/java/net/jami/jams/server/Server.java b/jams-server/src/main/java/net/jami/jams/server/Server.java index 015e99a8..34e3f1a8 100644 --- a/jams-server/src/main/java/net/jami/jams/server/Server.java +++ b/jams-server/src/main/java/net/jami/jams/server/Server.java @@ -28,6 +28,8 @@ import com.jsoniter.output.EncodingMode; import com.jsoniter.output.JsonStream; import com.jsoniter.spi.DecodingMode; import com.jsoniter.spi.JsoniterSpi; +import javassist.ClassPool; +import javassist.compiler.Javac; import lombok.extern.slf4j.Slf4j; import net.jami.datastore.main.DataStore; import net.jami.jams.common.authentication.AuthenticationSourceType; @@ -69,15 +71,16 @@ public class Server { public static AppUpdater appUpdater; public Server(AppUpdater appUpdater, String port, String serverCertificate, String serverPrivateKey) { - Server.appUpdater = appUpdater; JsoniterRegistry.initCodecs(); + Server.appUpdater = appUpdater; String[] args = {port, serverCertificate, serverPrivateKey}; main(args); } public static void main(String[] args) { - //Start tomcat. + //This is a fix to drop old cached stuff from the tomcat classloader. + ClassPool.getDefault().clearImportedPackages(); switch (args.length) { case 0: tomcatLauncher = new TomcatLauncher(8080); 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 6b71db3c..9ece9ab4 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 @@ -27,6 +27,7 @@ import lombok.extern.slf4j.Slf4j; import net.jami.jams.ca.JamsCA; import net.jami.jams.common.utils.LibraryLoader; import net.jami.jams.server.Server; +import org.apache.catalina.Context; import org.apache.catalina.WebResourceRoot; import org.apache.catalina.connector.Connector; import org.apache.catalina.core.StandardContext; @@ -51,7 +52,8 @@ import static net.jami.jams.server.Server.certificateAuthority; @Slf4j public class TomcatLauncher { - private final Tomcat tomcat = new Tomcat(); + private static final Tomcat tomcat = new Tomcat(); + private static StandardContext context; public TomcatLauncher(int port) { tomcat.getService().addConnector(TomcatConnectorFactory.getNoSSLConnector(port)); @@ -79,7 +81,7 @@ public class TomcatLauncher { public void startServer() { String jarName = System.getProperty("user.dir") + File.separator + "jams-server.jar"; log.info("JAR Resource File = " + jarName); - StandardContext context = (StandardContext) tomcat.addWebapp("", new File(System.getProperty("user.dir")).getAbsolutePath()); + context = (StandardContext) tomcat.addWebapp("", new File(System.getProperty("user.dir")).getAbsolutePath()); context.getJarScanner().setJarScanFilter((jarScanType, s) -> false); log.info("Serving application from: " + new File(System.getProperty("user.dir")).getAbsolutePath()); @@ -123,6 +125,7 @@ public class TomcatLauncher { synchronized (tomcat) { certificateAuthority.shutdownThreads(); tomcat.stop(); + context.destroy(); tomcat.destroy(); } } catch (Exception e) { -- GitLab