Java远程调试(JPDA)在Tomcat 9中不适用于我

时间:2019-01-25 21:42:24

标签: java tomcat tomcat9 jpda

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

Tomcat启动,并且可以在端口8080上访问该应用程序,但在某些请求上失败。因此,在Eclipse上,我已经使用自己的配置详细信息配置了Remote 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?

3 个答案:

答案 0 :(得分:2)

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

ENV JPDA_ADDRESS = 8000 CMD [“ catalina.sh”,“ jpda”,“运行”]

答案 1 :(得分:1)

我遇到了同样的问题。我正在从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地址都可以访问远程调试。我相信默认情况下它仅允许本地主机。

希望这会有所帮助。

答案 2 :(得分:0)

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

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

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

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

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

enter image description here

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

enter image description here