Browse Source

修复War部署无法正常shutdown,ehcache内存泄漏

Signed-off-by: zhanliquan <zhanliquanit@foxmail.com>
zhanliquan 5 years ago
parent
commit
87b8d032ca

+ 22 - 1
ruoyi-framework/src/main/java/com/ruoyi/framework/manager/ShutdownManager.java

@@ -2,6 +2,7 @@ package com.ruoyi.framework.manager;
 
 import com.ruoyi.framework.shiro.web.session.SpringSessionValidationScheduler;
 import net.sf.ehcache.CacheManager;
+import org.apache.shiro.cache.ehcache.EhCacheManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -21,12 +22,15 @@ public class ShutdownManager
     @Autowired(required = false)
     private SpringSessionValidationScheduler springSessionValidationScheduler;
 
+    @Autowired(required = false)
+    private EhCacheManager ehCacheManager;
+
     @PreDestroy
     public void destroy()
     {
         shutdownSpringSessionValidationScheduler();
         shutdownAsyncManager();
-        CacheManager.getCacheManager("ruoyi").shutdown();
+        shutdownEhCacheManager();
     }
 
     /**
@@ -63,4 +67,21 @@ public class ShutdownManager
             logger.error(e.getMessage(), e);
         }
     }
+
+    private void shutdownEhCacheManager()
+    {
+        try
+        {
+            logger.info("====关闭缓存====");
+            if (ehCacheManager != null)
+            {
+                CacheManager cacheManager = ehCacheManager.getCacheManager();
+                cacheManager.shutdown();
+            }
+        }
+        catch (Exception e)
+        {
+            logger.error(e.getMessage(), e);
+        }
+    }
 }