当前位置: 首页 > news >正文

tomcat服务器宕机解决方案

报错信息:

 java.lang.Object.wait(Native Method)

 java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)

 com.mysql.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:43)

每次出现这个报错都会导致tomcat应用服务器停机,加了下面的java代码后就再也没有停过了。

解决办法:

编写Java代码

package cn.listener;

import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Enumeration;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

import com.mysql.jdbc.AbandonedConnectionCleanupThread;


@WebListener
public class ContextFinalizer implements ServletContextListener {

    public void contextInitialized(ServletContextEvent sce) {
    }

    public void contextDestroyed(ServletContextEvent sce) {
        Enumeration<Driver> drivers = DriverManager.getDrivers();
        Driver d = null;
        while (drivers.hasMoreElements()) {
            try {
                d = drivers.nextElement();
                DriverManager.deregisterDriver(d);
                System.out.println(String.format("ContextFinalizer:Driver %s deregistered", d));
            } catch (SQLException ex) {
                System.out.println(String.format("ContextFinalizer:Error deregistering driver %s", d) + ":" + ex);
            }
        }
        try {
            AbandonedConnectionCleanupThread.shutdown();
        } catch (InterruptedException e) {
            System.out.println("ContextFinalizer:SEVERE problem cleaning up: " + e.getMessage());
            e.printStackTrace();
        }
    }
}

 

@WebListener,这个注解相当于在web.xml配置如下内容
  <listener>
    <listener-class>cn.listener.ContextFinalizer</listener-class>
  </listener>

 

 

解决方案可以参考如下网址:https://stackoverflow.com/questions/25699985/the-web-application-appears-to-have-started-a-thread-named-abandoned-connect

 

当然还有就是我再参考这个解决方案的时候,发现mysql-connection如果版本过低会导致上述列出的Java代码报错,通过提高mysql-connection.java的版本即可解决该问题

 

相关文章:

  • JS页面跳转
  • 在Firefox 58中,WebAssembly组件性能提升了10倍
  • Java之jdbc_采用Statement查询全部数据
  • Node学习4-Buffer模块
  • nginx 和apache 性能测试对比
  • 初识 Vue(07)---(Vue 实例的生命周期钩子)
  • 征服 TIME_WAIT !
  • 如何给操作文档添加目录
  • 保存Hive查询结果的方法
  • Session
  • greenplum安装文档
  • 第42件事 移动App设计的11大法则
  • 解决网站访问流量过大问题
  • Java高级编程——MySql采用的算法原理
  • Nginx设置多条件判断访问控制
  • ES6指北【2】—— 箭头函数
  • ES6简单总结(搭配简单的讲解和小案例)
  • Hexo+码云+git快速搭建免费的静态Blog
  • JavaScript HTML DOM
  • Java多线程(4):使用线程池执行定时任务
  • sessionStorage和localStorage
  • v-if和v-for连用出现的问题
  • 复杂数据处理
  • 关于字符编码你应该知道的事情
  • 人脸识别最新开发经验demo
  • 入门级的git使用指北
  • 使用Gradle第一次构建Java程序
  • 微信小程序开发问题汇总
  • 小程序测试方案初探
  • 《码出高效》学习笔记与书中错误记录
  • Java总结 - String - 这篇请使劲喷我
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • #### go map 底层结构 ####
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (30)数组元素和与数字和的绝对差
  • (黑马C++)L06 重载与继承
  • (三)mysql_MYSQL(三)
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (十六)Flask之蓝图
  • (算法二)滑动窗口
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • **PHP二维数组遍历时同时赋值
  • *Django中的Ajax 纯js的书写样式1
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .gitignore
  • .NET 中创建支持集合初始化器的类型
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .project文件
  • ;号自动换行
  • @hook扩展分析
  • @JoinTable会自动删除关联表的数据
  • @RequestParam详解
  • [ C++ ] template 模板进阶 (特化,分离编译)