ServletContextListener 使用。web启动监听启动和结束时的调用
来源:互联网 发布:java 变量命名规则 编辑:程序博客网 时间:2024/05/29 14:27
web.xml监听配置<!--此监听是必须的。控制监听请求作用域spring2.5之后都这样配置--><listener> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener> <!-- 下面自定义配置监听,假如你只想在服务器启动和介绍时候调用请在这里配置监听器 --> <listener> <listener-class>XXXX.ContextDestroyListener</listener-class> </listener>import java.sql.Driver;import java.sql.DriverManager;import java.sql.SQLException;import java.util.Arrays;import java.util.Enumeration;import java.util.List;import java.util.Set;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class ContextDestroyListener implements ServletContextListener { private Logger logger = LoggerFactory.getLogger(getClass()); public static final List<String> destoreyzji = Arrays.asList("qa", "qb"); // 初始化时候执行此函数,可以读取配置什么可以在这里写 @Override public void contextInitialized(ServletContextEvent sce) { //Ignore } // 当销毁的时候执行此函数 @Override public void contextDestroyed(ServletContextEvent sce) { destroyJDBCDrivers(); destroySpecifyThreads(); } private void destroySpecifyThreads() { final Set<Thread> threads = Thread.getAllStackTraces().keySet(); for (Thread thread : threads) { if (needManualDestroy(thread)) { synchronized (this) { try { thread.stop(); logger.debug(String.format("Destroy %s successful", thread)); } catch (Exception e) { logger.warn(String.format("Destroy %s error", thread), e); } } } } } private boolean needManualDestroy(Thread thread) { final String threadName = thread.getName(); for (String aaaa : destoreyzji) { if (threadName.contains(aaaa)) { return true; } } return false; } private void destroyJDBCDrivers() { final Enumeration<Driver> drivers = DriverManager.getDrivers(); Driver driver; while (drivers.hasMoreElements()) { driver = drivers.nextElement(); try { DriverManager.deregisterDriver(driver); logger.debug(String.format("Deregister JDBC driver %s successful", driver)); } catch (SQLException e) { logger.warn(String.format("Deregister JDBC driver %s error", driver), e); } } } }
0 1
- ServletContextListener 使用。web启动监听启动和结束时的调用
- ServletContextListener使用详解(监听Tomcat启动、关闭)
- ServletContextListener使用详解(监听Tomcat启动、关闭)
- 加载.properties文件内容到内存----tomcat服务启动与停止的监听(使用ServletContextListener)
- 加载.properties文件内容到内存----tomcat服务启动与停止的监听(使用ServletContextListener)
- 使用ServletContextListener在服务器启动和关闭时创建和关闭缓存 [转]
- 使用ServletContextListener在服务器启动和关闭时创建和关闭缓存
- 使用ServletContextListener在服务器启动和关闭时创建和关闭缓存
- 使用ServletContextListener在服务器启动和关闭时创建和关闭缓存
- Listener的使用(监听Web应用的启动和关闭)
- java web应用启动和销毁监听
- 启动和结束进程
- ServletContextListener监听+Thread使用
- 启动oracle服务和监听的批处理
- 监听wifi的关闭和启动
- ServletContextListener在服务器启动和关闭时创建和关闭缓存
- 启动和等待进程结束
- C# 启动和结束进程
- javaWeb学习记录:文件上传与下载
- CAAnimation四种动画
- 逻辑运算
- dspace5.3中文化方法
- Caffe学习笔记二 Extracting Features
- ServletContextListener 使用。web启动监听启动和结束时的调用
- Android&Java经典面试题
- CoordinatorLayout AppBarLayout 结合下拉刷新 上拉加载更多 的滑动冲突解决
- 【OpenGL】使用Unity来学习OpenGL
- Retrofit使用教程(一)
- ipython notebook报错
- myeclipse打开时出现"Workspace in use or cannot be created, choose a different one."怎么解决
- [leetcode] 329. Longest Increasing Path in a Matrix
- dspace构建管理员