Tomcat不会停止我该如何调试?

如何解决Tomcat不会停止我该如何调试?

如果Web应用程序已停止,则所有与数据库的连接也应关闭。如果没有连接列表,请执行SQL语句“ shutdown”(仅适用于H2和HSQLDB数据库)。

如果您已注册Servlet,则可以在Servlet.destroy()方法中执行此操作。

如果已经注册了ServletContextListener,则可以在该ServletContextListener.contextDestroyed(ServletContextEvent servletContextEvent)方法中执行“关闭”语句。这就是org.h2.server.web.DbStarterServletContextListener功能(H2数据库中包含的功能)。

解决方法

我有一个Tomcat 7在Linux中运行的操作系统,可以$CATALINA_HOME/bin/startup.sh通过$CATALINA_HOME/bin/shutdown.sh
来启动和关闭/etc/init.d

除了1个问题,其他都还可以。有时tomcat不会停止。
尽管我停止了它,并且在catalina.out日志中看到了正在下降的日志,但是如果我这样做,ps -ef仍然可以看到该进程正在运行。

可能是什么问题呢?我该如何调试?我的感觉是,这与线程有关。

因此,以下是可疑部分:
1)我使用Log4j的LogManager来检测log4j配置是否已更改,但是我Log4jManager.shutdown
contextDestroyed ServletContextListener
2)上使用H2数据库,然后在关机时看到:

严重:Web应用程序[/ MyApplication]似乎已启动
名为[H2 Log Writer MYAPPLICATION] 的线程,但未能停止该线程。
这很可能造成内存泄漏

严重:Web应用程序[/ MyApplication]似乎已启动
名为[H2 File Lock Watchdog
/opt/myOrg/tomcat/webapps/MyApplication/db/myDatabase.lock.db] 的线程,但
未能停止。这很可能造成内存泄漏。
2012年4月2 日,上午9:08:08 org.apache.catalina.loader.WebappClassLoader
clearReferencesThreads严重:Web应用程序[/ MyApplication]
似乎已启动名为[FileWatchdog]的线程,但未能
将其停止。这很可能造成内存泄漏。

有什么帮助吗?我如何在这里发现问题?

更新:
kill -3按照@daveb的建议进行了操作,在catalina.out中,我看到了:

JVMDUMP006I正在处理转储事件“用户”,详细信息“”-请稍候。JVMDUMP032I
JVM使用’/etc/init.d/javacore.20120402.093922.2568.0001.txt’请求Java转储,以响应事件JVMDUMP010I
Java转储写入/etc/init.d/javacore.20120402.093922.2568.0001.txt
JVMDUMP013I处理的转储事件“用户”,详细信息“”。

有一个javacore,/etc/init.d但我不知道如何处理它。即我应该调查哪些部分

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?