java - Tomcat 没有在 Eclipse 中关闭

标签 java eclipse tomcat servlets

我正在构建一个相对简单的 Web 应用程序,其中主要 servlet 实现 ServletContextListener 接口(interface)以确定上下文是已启动还是已停止。我已经实现了我的 contextInitializedcontextDestroyedinitdestroy 方法(都是 initdestroy 在基类上调用 super)。我目前没有实现任何实际功能,只是在加载 log4j.properties 文件的 contextInitialized 方法中初始化了 log4j。

然而,当我从 Eclipse 中启动和停止 Tomcat 服务器时,一切都以正确的顺序调用(我正在使用一些 System.out.println 来测试它)但是大约停止服务器 10 秒后,我看到一个 Eclipse 弹出窗口,说明如下:

Server Tomcat v6.0 Server at localhost is not responding. Do you want to terminate this server? Click OK to terminate the server or click Cancel to continue waiting.

这是当我停止服务器时在我的 Eclipse 控制台中打印的内容:

04/01/2010 7:39:13 PM org.apache.catalina.core.StandardService stop
INFO: Stopping service Catalina
contextDestroyed
04/01/2010 7:39:13 PM org.apache.coyote.http11.Http11Protocol destroy
INFO: Stopping Coyote HTTP/1.1 on http-8080

在最后一个 INFO 消息之后,它就卡在那里,直到弹出窗口出现。如果我选择等待,按取消,Eclipse 将变得不可用,我必须从终端终止 Eclipse 进程。

任何有关如何解决此问题的意见将不胜感激。

更新:

问题是由我在 init 方法中启动的非守护线程引起的(忘记提及 :)。通过使用 stop 方法显式停止线程解决了该问题,尽管该方法似乎已被弃用。

最佳答案

this thread 中所述,这应该与清理问题有关。

If a webapp doesn't cleanup completely, especially with respect to stopping non-daemon threads it starts, Tomcat will fail to shutdown.
Clicking "Stop" has the advantage of providing a timeout.
If Tomcat fails to stop within the timeout, a dialog will appear giving you the option to terminate the server or continue waiting.

关于java - Tomcat 没有在 Eclipse 中关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1998281/

相关文章:

java - 以 HTML 形式查看 JTextPane 中的样式文本

java - for循环在JAVA中使用lambda表达式

Java Swing - 为什么 JComponent 不显示?

tomcat - Tomcat 7 应用程序必须位于 appBase 内吗?

apache - 我需要安装 Tomcat 吗?我已经安装了 JBoss 用于与 Apache 进行负载平衡

java - 寻找特定的正整数

eclipse - 减少 Tomcat 守护线程的数量

android - Eclipse/Android/Library - 找不到任何 R. 引用

eclipse - Eclipse RCP 应用程序中的 "global"数据存储在哪里?

tomcat - 如何调试未启动的tomcat应用程序