diff --git a/ems-core/pom.xml b/ems-core/pom.xml index 666cf207f9..8b92156c62 100644 --- a/ems-core/pom.xml +++ b/ems-core/pom.xml @@ -68,7 +68,7 @@ org.apache.logging.log4j log4j-bom - 2.24.3 + 2.25.0 import pom diff --git a/ems-core/src/main/java/it/integry/ems/_context/EmsCoreContext.java b/ems-core/src/main/java/it/integry/ems/_context/EmsCoreContext.java index 1d421eeb7d..51ca53149a 100644 --- a/ems-core/src/main/java/it/integry/ems/_context/EmsCoreContext.java +++ b/ems-core/src/main/java/it/integry/ems/_context/EmsCoreContext.java @@ -23,6 +23,7 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.sql.DriverManager; import java.util.Arrays; +import java.util.Enumeration; import java.util.List; import java.util.Set; import java.util.concurrent.ExecutorService; @@ -72,6 +73,22 @@ public class EmsCoreContext { @PreDestroy public void preDestroy() { contextInitialized = false; + + + ClassLoader cl = Thread.currentThread().getContextClassLoader(); + Enumeration drivers = DriverManager.getDrivers(); + logger.info("Deregister DB Drivers"); + + while (drivers.hasMoreElements()) { + java.sql.Driver driver = drivers.nextElement(); + if (driver.getClass().getClassLoader() == cl) { + try { + DriverManager.deregisterDriver(driver); + } catch (Exception ex) { + // log error + } + } + } } //@EventListener(ContextRefreshedEvent.class) diff --git a/ems-core/src/main/java/it/integry/ems/listener/Log4jShutdownListener.java b/ems-core/src/main/java/it/integry/ems/listener/Log4jShutdownListener.java new file mode 100644 index 0000000000..029b068170 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/listener/Log4jShutdownListener.java @@ -0,0 +1,18 @@ +package it.integry.ems.listener; + +import org.apache.logging.log4j.LogManager; + +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; + +public class Log4jShutdownListener implements ServletContextListener { + @Override + public void contextInitialized(ServletContextEvent servletContextEvent) { + + } + + @Override + public void contextDestroyed(ServletContextEvent sce) { + LogManager.shutdown(); + } +} diff --git a/ems-engine/src/main/webapp/WEB-INF/web.xml b/ems-engine/src/main/webapp/WEB-INF/web.xml index 5da3fb596b..b293e1192a 100644 --- a/ems-engine/src/main/webapp/WEB-INF/web.xml +++ b/ems-engine/src/main/webapp/WEB-INF/web.xml @@ -19,16 +19,18 @@ log4jConfiguration classpath:log4j2.xml - - - org.apache.logging.log4j.web.Log4jServletContextListener - org.springframework.web.context.ContextLoaderListener org.springframework.web.context.request.RequestContextListener + + org.apache.logging.log4j.web.Log4jServletContextListener + + + + SpringDispatcherServlet