一尘不染

Tomcat未在Eclipse中关闭

tomcat

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

但是,当我从Eclipse中启动和停止Tomcat服务器时,一切都以正确的顺序进行了调用(我正在使用System.out.println进行测试),但是在停止服务器大约10秒钟后,我会看到Eclipse弹出窗口,提示以下:

服务器本地主机上的Tomcat v6.0服务器未响应。您要终止此服务器吗?单击确定终止服务器,或单击取消继续等待。

这是我停止服务器时在Eclipse控制台中显示的内容:

2010年4月1日7:39:13 org.apache.catalina.core.StandardService stop
信息:停止服务Catalina
contextDestroyed
04/01/2010 7:39:13 PM org.apache.coyote.http11.Http11Protocol销毁
信息:在http-8080上停止土狼HTTP / 1.1

在最后INFO一条消息之后,它会一直挂在那里,直到出现弹出窗口。如果我选择等待,请按“取消”,则Eclipse将变得不可用,并且必须从终端中终止Eclipse进程。

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

更新:

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


阅读 216

收藏
2020-06-16

共1个答案

一尘不染

该线程中所述,这应该与清理问题有关。

如果Web应用程序没有完全清除,特别是在停止非守护程序线程启动方面,则Tomcat将无法关闭。
单击“停止”具有提供超时的优势。
如果Tomcat无法在超时时间内停止,则会出现一个对话框,为您提供终止服务器或继续等待的选项。

2020-06-16