gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:20:09 25 4
gpt4 key购买 nike

我正在尝试将在 Windows 主机上运行的 Eclipse 调试器附加到在运行 CentOS 7 的 Vagrant box 中运行的 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?

附言这不是防火墙问题。

最佳答案

我在上面将地址更改为 0.0.0.0 的方向是正确的,但我在 server.xml 中的 Connector 上更改了它,这无关紧要与调试器。解决方案是更改 JPDA_ADDRESS 导致我的 bin/setenv.sh 获得:

JPDA_ADDRESS="0.0.0.0:8000"

这是由于 change in Tomcat 8 :

When starting Tomcat with the jpda option to enable remote debugging, Tomcat 8 listens on localhost:8000 by default. Earlier versions listened on *:8000. If required, this default can be overridden by setting the JPDA_ADDRESS environment variable in, for example, setenv.[bat|sh].

关于java - 使用端口转发调试在 Vagrant 中运行的 Tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29886182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com