使用端口转发调试Tomcat在Vagrant中运行

时间:2015-04-27 02:24:01

标签: java eclipse debugging tomcat vagrant

我试图将运行在我的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

所以我尝试使用行address="0.0.0.0"在Tomcat的server.xml中配置连接器,但结果是相同的。

关于让它发挥作用的任何其他想法?另外,假设答案与将地址更改为0.0.0.0有关,为什么我需要这样做才能使调试器工作,如果通过浏览器访问应用程序已经localhost:8443已经很好了? / p>

P.S。这不是防火墙问题。

1 个答案:

答案 0 :(得分:2)

我在正确的轨道上将地址更改为0.0.0.0,但我在server.xml中的Connector上进行了更改,这与调试器无关。解决方案是更改导致JPDA_ADDRESS获取的bin/setenv.sh

JPDA_ADDRESS="0.0.0.0:8000"

这是由于change in Tomcat 8

  

使用jpda选项启动Tomcat以启用远程调试时,   Tomcat 8默认侦听localhost:8000。早期版本   听了*:8000。如果需要,可以覆盖此默认值   例如,设置JPDA_ADDRESS环境变量   。SETENV。[蝙蝠| SH]