为了账号安全,请及时绑定邮箱和手机立即绑定

tomcat 监听器启动线程导致tomcat只允许线程的run方法,不能访问项目

tomcat 监听器启动线程导致tomcat只允许线程的run方法,不能访问项目

未之未央丿 2017-01-05 15:19:22
项目简介:Jsp3.0+dbcp连接池1.4+tomcat8.0因连接池泄露,有些connection无法关闭,想可以手动kill掉那些连接时间超过2分钟的Connection连接。然后写了一个线程,将它挂在ServletContextListener监听器下,然后tomcat一启动,tomcat会被该线程卡住,出现一直执行线程,而不继续加载项目的情况,导致项目无法访问,想请问下,这种情况该怎么办。怎么改这种模式才是对的。tomcat启动错误:信息: Deploying web application directory F:\tomcat-8.0\webapps\host-manager 一月 05, 2017 3:17:32 下午 org.apache.catalina.startup.HostConfig deployDirectory 信息: Deployment of web application directory F:\tomcat-8.0\webapps\host-manager has finished in 41 ms 一月 05, 2017 3:17:32 下午 org.apache.catalina.startup.HostConfig deployDirectory 信息: Deploying web application directory F:\tomcat-8.0\webapps\manager 一月 05, 2017 3:17:32 下午 org.apache.catalina.startup.HostConfig deployDirectory 信息: Deployment of web application directory F:\tomcat-8.0\webapps\manager has finished in 24 ms 一月 05, 2017 3:17:32 下午 org.apache.catalina.startup.HostConfig deployDirectory 信息: Deploying web application directory F:\tomcat-8.0\webapps\ROOT 一月 05, 2017 3:17:33 下午 org.apache.jasper.servlet.TldScanner scanJars 信息: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. kill 5 ; kill 6 ; kill 7 ; kill 5 ; kill 6 ; kill 7 ;代码如下:ServletContextListener监听器类package com.hebeu.util; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class ApplicationListener implements ServletContextListener{     Thread thread = new Thread(new KillConn());     public void contextInitialized(ServletContextEvent sce) {         while (true) {             try {                 thread.run();                 Thread.sleep(10000);             } catch (InterruptedException e) {                 e.printStackTrace();             }         }     }              public void contextDestroyed(ServletContextEvent sce) {              }      }KillConn.java线程package com.hebeu.util; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; public class KillConn implements Runnable{          public void run() {         String fingSql = "SELECT CONCAT('kill ',id,' ;')'sql' FROM information_schema.`PROCESSLIST` WHERE TIME>10";         ArrayList<String> listSql = new ArrayList<String>();         Connection conn = null;         try {             conn = JDBCUtil.getConn();             conn.setAutoCommit(false);             ResultSet rs = JDBCUtil.findOne(fingSql, conn);             while(rs.next())             {                 listSql.add(rs.getString(1));             }             for (String string : listSql) {                 System.out.println(string); //                JDBCUtil.doSql(string, conn);             }             conn.commit();         } catch (SQLException e) {             try {                 conn.rollback();             } catch (SQLException e1) {                 e1.printStackTrace();             }             e.printStackTrace();         }finally{             JDBCUtil.closeAll(null, null, conn);         }              } }
查看完整描述

目前暂无任何回答

  • 0 回答
  • 0 关注
  • 2408 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信