tomcat服务器宕机解决方案

Violet ·
更新时间:2024-11-13
· 600 次阅读

报错信息:

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>

解决方案可以参考如下网址

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

您可能感兴趣的文章:关于Tomcat服务器无法打开tomcat7w.exe的解决办法eclipse部署tomcat服务器无法启动问题的解决方法tomcat服务器如何配置字符集为utf-8彻底解决中文乱码的问题详解Tomcat 服务器 在45秒内未启动成功的解决方法腾讯云ubuntu服务器tomcat访问慢的原因分析及解决方法Tomcat服务器图片地址中文路径问题解决办法



Tomcat 解决方案

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章
Tricia 2020-10-13
661