|
@@ -0,0 +1,61 @@
|
|
|
+package com.iamberry.rst.filters;
|
|
|
+
|
|
|
+import com.iamberry.redis.RedisUtils;
|
|
|
+import com.iamberry.rst.controllers.order.AdminSalesOrderController;
|
|
|
+
|
|
|
+import javax.servlet.ServletContextEvent;
|
|
|
+import javax.servlet.ServletContextListener;
|
|
|
+import javax.servlet.annotation.WebListener;
|
|
|
+import java.sql.Driver;
|
|
|
+import java.sql.DriverManager;
|
|
|
+import java.sql.SQLException;
|
|
|
+import java.util.Enumeration;
|
|
|
+import java.util.Set;
|
|
|
+
|
|
|
+@WebListener
|
|
|
+public class CloseApplicationContextListener implements ServletContextListener {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void contextInitialized(ServletContextEvent servletContextEvent) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void contextDestroyed(ServletContextEvent sce) {
|
|
|
+ AdminSalesOrderController.THREAD_POOL.shutdown();
|
|
|
+ RedisUtils.colsePool();
|
|
|
+ destroyJDBCDrivers();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 销毁线程
|
|
|
+ */
|
|
|
+ private void destroySpecifyThreads() {
|
|
|
+ final Set<Thread> threads = Thread.getAllStackTraces().keySet();
|
|
|
+ for (Thread thread : threads) {
|
|
|
+ synchronized (this) {
|
|
|
+ try {
|
|
|
+ thread.interrupt();
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 这里是反注册驱动
|
|
|
+ */
|
|
|
+ private void destroyJDBCDrivers() {
|
|
|
+ final Enumeration<Driver> drivers = DriverManager.getDrivers();
|
|
|
+ Driver driver;
|
|
|
+ while (drivers.hasMoreElements()) {
|
|
|
+ driver = drivers.nextElement();
|
|
|
+ try {
|
|
|
+ DriverManager.deregisterDriver(driver);
|
|
|
+ } catch (SQLException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|