4

我正在尝试在最近升级的 Tomcat 9.0.13 和 Open JDK 11.0.1 上远程调试 Tomcat webapp。服务器是 Redhat Enterprise Linux 7.6,我在 Windows 7 开发人员机器上使用 Eclipse 进行连接。

Tomcat 启动,应用程序可在端口 8080 上访问,但在某些请求上失败。因此,在我的 Eclipse 上,我使用我的配置详细信息配置了一个远程 Java 应用程序。当我尝试连接到它时,连接失败

Failed to connect to remote VM. Connection refused.

我使用的是默认端口 8000,在 Linux 服务器上, netstat -an 显示当 Tomcat 启动而不是 Tomcat 停止时,有一个进程正在侦听该端口。

我已经尝试从 Windows 机器 telnet 到端口 8000 并得到

$ telnet c516vefpubrec 8000
Trying XX.XXX.XX.XX...
telnet: Unable to connect to remote host: Connection refused

当我运行我们的旧 Tomcat 7 + Java 1.8 时,一切都成功了。我尝试了其他端口,结果相同。

这可能是一个错误吗?Tomcat 9 上是否有启用 JPDA 的配置项?

4

3 回答 3

5

我有这个完全相同的问题。我正在从 centos vm 运行应用程序并尝试从我的 windows 机器进行调试。

我必须进入 vm 上的 catalina.sh 文件并进行编辑。在处理 jpda 标志的部分中,需要将 JPA_OPTS 变量更改为JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=*:$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"

注意 *: 在 JPDA 变量之前。这允许任何 IP 地址都可以访问远程调试。我相信默认情况下它只允许本地主机。

希望这可以帮助。

于 2019-04-15T12:58:38.180 回答
2

我在 docker 中运行 Tomcat 9 时遇到了类似的问题。我在 docker build 中指定了 JPDA_ADDRESS 以允许从任何主机访问:

ENV JPDA_ADDRESS=8000 CMD ["catalina.sh", "jpda", "run"]

于 2020-03-23T15:52:37.137 回答
2

如果您在 Windows 上并使用 Tomcat 作为 64 位服务。然后需要在 Windows 注册表中进行更改。此注册表路径:

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Apache Software Foundation\Procrun 2.0\<Tomcat9ServiceName>\Parameters\Java

对于 32 位 Windows,此路径将没有 WOW6432Node。有一个字符串值选项,可以通过在此处添加这两行来启用远程调试

-Xdebug
-Xrunjdwp:transport=dt_socket,address=*:4446,server=y,suspend=n

如果您不将 *: 放在地址参数中,则只能从 localhost 进行远程调试。*:表示您可以从任何地方/任何主机连接到 tomcat 进行调试。

在此处输入图像描述

Tomcat9ServiceName - 是 Tomcat 服务的名称,显示在下面的屏幕截图中,通常在安装过程中输入

在此处输入图像描述

于 2020-07-20T08:28:28.110 回答