【问题标题】:Debugging Tomcat Running in Vagrant using Port Forwarding使用端口转发调试在 Vagrant 中运行的 Tomcat
【发布时间】: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


    【解决方案1】:

    我在上面将地址更改为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.[bat|sh].

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-13
      • 2011-11-25
      • 2019-03-24
      • 1970-01-01
      • 1970-01-01
      • 2014-06-17
      • 2023-04-03
      相关资源
      最近更新 更多