【问题标题】:How to kill Tomcat when running it from Eclipse?从 Eclipse 运行时如何杀死 Tomcat?
【发布时间】:2011-05-19 11:18:46
【问题描述】:

我正在运行随 Eclipse 下载一起提供的 Tomcat(不,我不想下载和安装整个 Tomcat),有时它会在停止或重新启动时挂起,这是我能找到的唯一方法它的工作是重新启动我所有的 Eclipse。我在 Windows 下使用它。

有没有办法杀死Tomcat进程(任务管理器中没有出现)?

【问题讨论】:

    标签: eclipse tomcat windows-7


    【解决方案1】:

    它在任务管理器中显示为javaw.exe。另一种方法是执行Tomcat/bin/shutdown.bat

    关于挂起问题,您确定您的 web 应用程序没有产生可能会阻止 Tomcat 关闭的非托管线程吗?

    【讨论】:

    • 不,我没有检查我的 web 应用程序是否正在生成非托管线程。谢谢。
    • 如何检查我的 web 应用程序是否没有生成可能会阻止 Tomcat 关闭的非托管线程?
    【解决方案2】:

    在Windows上,如果你知道Tomcat监听的端口(下图为8080),你可以找到Tomcat进程的PID,然后从cmd杀掉它:

    > netstat -aon | find "8080"
      TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       2196
      TCP    [::]:8080              [::]:0                 LISTENING       2196
    > taskkill /pid 2196 /f
      SUCCESS: The process with PID 2196 has been terminated.
    

    【讨论】:

      【解决方案3】:

      当在任务管理器中找不到tomcat时,我会使用更好的方法来关闭它。

      1) 从以下链接下载 TCPView(仅 285kb)

      http://technet.microsoft.com/en-in/sysinternals/bb897437.aspx

      2) 解压文件夹并启动TCPView应用程序。

      3) 右击java.exe并选择结束进程选项。

      这很容易让你的tomcat停止。这个工具在监控端口使用方面非常有用。

      注意:运行 TOMCATPATH/bin/shutdown.bat 可能不会在 Tomcat 包含一些恶魔或非托管时关闭 线程。在这种情况下,TCPView 可以正常工作,没有任何问题。

      【讨论】:

      • 下载附加软件应该永远是最后的手段。但是,此答案包含 shutdown.bat 可能无法正确关闭 Tomcat 的重要信息。
      • @doABarrelRoll721 谢谢,在生产环境中我确实接受它,但在本地系统中安装它并没有太大影响。我也希望这种方法是简单而更好的解决方法。
      【解决方案4】:

      如果您使用 Linux,请尝试以下步骤。

      1. 列出 Tomcat 进程(例如,ps aux | grep catalina
      2. 找到如下所示的字符串:myname 2244 5.5 0.3 57020937 2110741 ? Sl Oct03 5160:01 /usr/lib/jvm/java-1.8.0-<...>/bin/java <...> org.apache.catalina.startup.Bootstrap start
      3. 复制粘贴/usr/lib/jvm/<...><...>.Bootstrap 之间的所有内容
      4. 在命令末尾添加stop 并运行它

      基本上,您将使用 Eclipse 用来启动 Tomcat 并修改最后一个参数以停止 Tomcat 的相同命令。

      【讨论】:

        【解决方案5】:

        您可以在 Eclipse 中为 Tomcat 服务器设置启动和关闭超时。如果超过了这些超时时间,Eclipse 将弹出一条消息,询问您是要杀死它,还是继续等待。

        要设置这些,请在“服务器”选项卡中双击服务器的名称。它会打开一个像这样的窗口:

        右侧有一个超时部分。我将启动时间设置为一天(这样我就可以调试启动而不会超时),关闭时间设置为 30 秒(通常这可能非常短,因为大多数应用程序都可以在强制关闭后毫无问题地存活)。

        【讨论】:

        • 当然,如果您的应用程序正在产生非托管线程,这似乎是 OP 的问题,那么无论如何都需要检测和清理。以上只是让 Eclipse 超时以防止您不得不等待永恒的一种巧妙方法。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-06-24
        • 1970-01-01
        • 2018-10-14
        • 2013-11-12
        • 2023-03-11
        • 2018-02-16
        • 2014-10-20
        相关资源
        最近更新 更多