【问题标题】:Remote Debugging with Eclipse and tomcat使用 Eclipse 和 tomcat 进行远程调试
【发布时间】:2011-08-14 14:49:22
【问题描述】:

我在 linux 服务器上部署了一个应用程序,其 ip 为 11.22.33.44

服务器详情

Java 版本 - “1.6.0_14”

IP - 11.22.33.44

当我启动服务器时,我在服务器控制台上得到以下 o/p '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8004'

这意味着我已经设置了在调试模式下启动服务器所需的所有信息

客户端设置(其他windows 7机器)

关于eclipse上的连接属性详细信息如下 主机:11.22.33.44(如上) 端口:8004(同上)

我猜每件事都正确完成了,但仍然得到了

无法连接到远程虚拟机。连接被拒绝。连接超时:连接

错误

从运行 Eclipse 的客户端机器上,我可以 ping 服务器机器,即 11.22.33.44

【问题讨论】:

    标签: remote-debugging


    【解决方案1】:

    检查以下内容后,还有另一个错误来源:连接类型。所以对于其他有同样问题的人,应该遵循这个问题解决路径:

    1. Ping 托管您的应用程序(服务器)的主机。如果不成功,请检查您的 NIC 的一个分支是否与目标主机在同一网络中 - 如果使用 IP 而不是主机。
    2. telnet 您的主机。例如远程登录 192.168.0.2 8889 。如果您可以很快连接,那很好。看到连接被拒绝消息是不成功的。 “连接被外国主机关闭”很好。
    3. 现在打开 Eclipse 并创建一个远程调试配置。输入您之前远程登录的相同主机和端口。选择连接类型“标准(套接字连接)”。 注意,如果您在选择框中看到两个相同的实例,请同时尝试。有时其中之一不起作用。

    应该这样做。如果没有,请留言,我会帮忙。

    【讨论】:

      【解决方案2】:

      听起来像是防火墙问题。 您可以从给定机器/端口上的命令行远程登录吗? 试试这个:

      telnet 11.22.33.44 8004
      

      如果失败,则表示您的端口未打开——您的 JVM 忽略了参数并且没有在该端口上侦听,或者有防火墙阻止您的访问。 为了识别是哪一个,你可以登录运行tomcat的机器,然后

      telnet localhost 8004
      

      如果成功,则表示您的 jvm 正在接受该端口上的远程调试连接,因此问题出在网络中的防火墙,如果失败,则表示您尚未使用正确的远程调试参数启动 JVM。

      【讨论】:

      • 当我在我的 linux 机器上执行 lsof -i 时,java 16295 cdc-ops 5u IPv4 13057055 TCP *:8004 (LISTEN) 出现,这意味着服务器正在运行在调试端口 8004 上运行
      • 对不起? :O 你在上一条评论中遗漏了什么吗?
      • 上述语句是否意味着服务器正在接受端口 8004 的连接
      • 我猜你在你的服务器上运行了那个命令(你试图从你的 Windows 机器上连接到的那个正在运行的 tomcat)对吧? “Connected to 11.22.33.44”这一行意味着您实际上已连接到该端口——因此您的 Tomcat IS 正在侦听该端口! (连接在不久之后关闭的事实仅仅意味着您没有遵循预期的协议和/或没有及时发送任何内容,所以不要担心。)总而言之,这意味着您的服务器已正确配置并准备好进行远程调试。
      • 不,ping 工作在 ICMP 级别而不是 TCP 级别,因此 ping 只是确保您有通往您的机器的路由。测试端口连接性的唯一方法是远程登录到该端口。在 windows 上,您需要进入控制面板/程序和功能(或类似)/windows 组件并添加 telnet 客户端才能在命令行中使用它。
      猜你喜欢
      • 2014-01-09
      • 2012-10-17
      • 2011-12-23
      • 2011-04-19
      • 2013-02-13
      • 2012-09-04
      • 2023-03-04
      • 2011-11-01
      • 2011-04-22
      相关资源
      最近更新 更多