From 56c7fcc114af38a3ee22af5d3769e2049f2a8fc0 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Tue, 25 Jun 2019 08:31:49 +0200 Subject: [PATCH] move Resteasy cleanup into the ResteasyAllInOneServletDispatcher --- .../java/sonia/scm/ResteasyAllInOneServletDispatcher.java | 6 ++++++ .../src/main/java/sonia/scm/boot/ServletContextCleaner.java | 4 +--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/scm-webapp/src/main/java/sonia/scm/ResteasyAllInOneServletDispatcher.java b/scm-webapp/src/main/java/sonia/scm/ResteasyAllInOneServletDispatcher.java index 6ea514bcb2..25345da04c 100644 --- a/scm-webapp/src/main/java/sonia/scm/ResteasyAllInOneServletDispatcher.java +++ b/scm-webapp/src/main/java/sonia/scm/ResteasyAllInOneServletDispatcher.java @@ -15,6 +15,7 @@ import javax.inject.Singleton; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; +import javax.ws.rs.ext.RuntimeDelegate; /** * Resteasy initialization and dispatching. This servlet combines the initialization of @@ -66,5 +67,10 @@ public class ResteasyAllInOneServletDispatcher extends HttpServletDispatcher { LOG.info("destroy resteasy"); super.destroy(); deployment.stop(); + + // ensure everything gets cleared, to avoid classloader leaks + ResteasyProviderFactory.clearInstanceIfEqual(ResteasyProviderFactory.getInstance()); + ResteasyProviderFactory.clearContextData(); + RuntimeDelegate.setInstance(null); } } diff --git a/scm-webapp/src/main/java/sonia/scm/boot/ServletContextCleaner.java b/scm-webapp/src/main/java/sonia/scm/boot/ServletContextCleaner.java index 085b752096..baf5199304 100644 --- a/scm-webapp/src/main/java/sonia/scm/boot/ServletContextCleaner.java +++ b/scm-webapp/src/main/java/sonia/scm/boot/ServletContextCleaner.java @@ -49,9 +49,7 @@ final class ServletContextCleaner { } } - ResteasyProviderFactory.clearInstanceIfEqual(ResteasyProviderFactory.getInstance()); - ResteasyProviderFactory.clearContextData(); - RuntimeDelegate.setInstance(null); + } private static boolean shouldRemove(String name) {