java - 关闭从eclipse启动的远程调试的tomcat

标签 java eclipse debugging tomcat remote-debugging

当我从 Eclipse 启动我的 Tomcat 7 时,我通常会添加类似的内容

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8101

到它的启动配置,因为我有时想稍后远程附加 Eclipse 调试器。但是当我这样做并尝试从 Cclipses“服务器” View 关闭 Tomcat 时,我收到错误

FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)
ERROR: transport error 202: bind failed: Address already in use
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized 

我假设这是因为 Eclipse 启动了一个新进程,该进程通常会告诉正在运行的 Tomcat 关闭,并且还使用了我在启动配置中引入的调试参数。此过程失败,因为指定的端口 8101 已被使用。有没有人知道允许在该设置中干净地关闭 Tomcat?

(我不想首先以 Debug模式启动 Tomcat,因为这会降低 eclipse 和 Tomcat 的速度。我也不想在调试时以 Debug模式重新启动它,因为这需要相当多的时间时间。)

最佳答案

在 Tomcat 的 server.xml 中

<Server port="8005" shutdown="SHUTDOWN">

该设置可用于关闭 Tomcat。您可以编写一个简单的程序并运行它。

import java.net.*;
public class t {
    public static void main(String[] args) throws Exception {
        Socket s = new Socket("127.0.0.1",8005);
        s.getOutputStream().write("SHUTDOWN".getBytes());
        s.close();
    }
}

关于java - 关闭从eclipse启动的远程调试的tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37343879/

相关文章:

Java 负整数转十六进制并返回失败

java - SXSSFWorkbook(.xlsx文件)在mac上无法正确查看

java - 如何为用 Java 编写的程序创建可执行文件?

java - 如何知道我是否在使用 Java EE?

Android ADT 调试挂起尝试连接到端口 8601 上的调试器?

c - 我正在使用 gdb 调试 C 程序,当我检查变量的值时得到以下输出。它意味着什么?

java - 如何在java中快速将大的csv文件转换为json数组

java - Eclipse 从构建路径中删除测试文件夹

java - 从一个 jlist 添加到另一个 jlist

linux - 如何在 Linux 中调试 Windows 可执行文件