【发布时间】:2015-07-05 08:12:16
【问题描述】:
我正在尝试将在我的 Windows 主机上运行的 Eclipse 调试器附加到在运行 CentOS 7 的 Vagrant 盒子中运行的 Tomcat 8 服务器。
我相信这个问题与 Vagrant 的网络设置有关。
以下是 Eclipse 日志中的完整错误:
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:179)
at java.io.DataInputStream.readFully(DataInputStream.java:189)
at java.io.DataInputStream.readFully(DataInputStream.java:163)
at org.eclipse.jdi.internal.connect.SocketTransportService.readHandshake(SocketTransportService.java:216)
at org.eclipse.jdi.internal.connect.SocketTransportService.access$7(SocketTransportService.java:212)
at org.eclipse.jdi.internal.connect.SocketTransportService$3.run(SocketTransportService.java:183)
at java.lang.Thread.run(Thread.java:761)
vagrant up 的输出似乎正确(端口 8000 是调试端口):
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 8000 => 8000 (adapter 1)
default: 8443 => 8443 (adapter 1)
default: 22 => 2222 (adapter 1)
我可以毫无问题地通过主机上的浏览器访问我的应用程序(使用https://localhost:8443/app);连接调试器是问题所在。调试器配置为具有连接属性的远程 Java 应用程序:
Host: localhost
Port: 8000
启动Tomcat当然显示正确:
Listening for transport dt_socket at address: 8000
基于以下问题,答案可能与配置 Tomcat 在0.0.0.0 上运行而不是默认值有关:
Cannot reach Jekyll server on Vagrant from outside
Vagrant port forwarding not working. Cups not accesible from host
Empty reply from server - can't connect to vagrant vm w/port forwarding
Connection Reset when port forwarding with Vagrant
所以我尝试在 Tomcat 的 server.xml 中使用 address="0.0.0.0" 行配置连接器,但结果是一样的。
关于让它发挥作用的任何其他想法?另外,假设答案与将地址更改为0.0.0.0 有关,如果在localhost:8443 上通过浏览器访问应用程序已经很好,为什么我需要这样做才能让调试器工作?
附:这不是防火墙问题。
【问题讨论】:
标签: java eclipse debugging tomcat vagrant