【问题标题】:I am unable to setup remote debugging for my Tomcat 6 web app on Ubuntu 12.04, can anyone help me?我无法在 Ubuntu 12.04 上为我的 Tomcat 6 Web 应用程序设置远程调试,有人可以帮我吗?
【发布时间】:2013-04-08 04:38:01
【问题描述】:

我无法在 Ubuntu 12.04 上为我的 Tomcat 6 Web 应用设置远程调试。

我已尝试以下相关问题中提供的解决方案: Remote debugging Tomcat with Eclipse

排名最高的解决方案说我应该打开 catalina.sh 并将 JPDA_OPTS 变量更改为: JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"

然后使用jpda启动tomcat: catalina.sh jpda 开始

我在 localhost 的 8000 端口检查了我的应用程序并收到“无法连接错误”。

下一个最佳解决方案是:

在 catalina.bat 文件中请修改以下内容。

Step 1: CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"

Step 2: JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"

Step 3: Run Tomcat from command prompt like below: catalina.sh jpda start

当我检查 localhost、8000 端口时,我得到了相同的“无法连接错误”。 在这两个之后尝试通过 Eclipse 连接到 tomcat 调试器 尝试给了我一个错误:

Failed to connect to remote VM. Connection refused.
Connection refused

这让我觉得 8000 端口可能已关闭,所以我运行了一个 nmap 命令来显示 我的“本地主机”上的哪些端口是打开的。它返回以下内容:

ryan@ryan-K53E:~$ nmap -v localhost

Starting Nmap 5.21 ( http://nmap.org ) at 2013-04-15 22:12 BST
Initiating Ping Scan at 22:12
Scanning localhost (127.0.0.1) [2 ports]
Completed Ping Scan at 22:12, 0.00s elapsed (1 total hosts)
Initiating Connect Scan at 22:12
Scanning localhost (127.0.0.1) [1000 ports]
Discovered open port 80/tcp on 127.0.0.1
Discovered open port 3306/tcp on 127.0.0.1
Discovered open port 53/tcp on 127.0.0.1
Discovered open port 22/tcp on 127.0.0.1
Discovered open port 8080/tcp on 127.0.0.1
Discovered open port 631/tcp on 127.0.0.1
Completed Connect Scan at 22:12, 0.02s elapsed (1000 total ports)
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00028s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
53/tcp   open  domain
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql
8080/tcp open  http-proxy

Read data files from: /usr/share/nmap
Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds

这看起来确认端口 8000 已关闭,因此我将“tomcat-debug”定义为 '/etc/services' 文件如下:

tomcat-debug        8000/tcp        # Remote tomcat debugging

然后尝试使用以下命令使用 iptables 打开端口 8000:

sudo iptables -A INPUT -p tcp --dport tomcat-debug -j ACCEPT

这似乎没有什么不同,因为 nmap 仍然显示相同的开放端口列表 前。在这里的任何帮助将不胜感激。

【问题讨论】:

  • 只是想指出 JDWP 暴露是一件危险的事情。 nmap.org/nsedoc/scripts/jdwp-exec.htmlstackoverflow.com/a/9200263/1183387
  • 感谢您指出这一点。根据我的 nmap 输出,我认为端口没有打开,你认为是吗?
  • 不,它看起来没有打开,但您打算打开它。只需确保有其他控制措施(例如 iptables 规则中的源 IP 限制)以防止其他人访问它。我认为调试器也可以在客户端模式下打开(这意味着您有一个调试器正在侦听传入连接)。为了避免每次都进行完整的 Nmap 扫描,请使用 -p 8000
  • 会做的,谢谢。

标签: eclipse tomcat6 remote-debugging iptables nmap


【解决方案1】:

在检查端口 8000 是否可以从外部访问(您使用 nmap 进行的测试)之前,您是否尝试过检查 tomcat 是否正在侦听端口 8000?

我会使用sudo netstat -pnl | grep 8000 来获取侦听端口的所有进程的列表,并在此列表中过滤包含 8000 的行。 你应该收到这样的东西:

tcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN 14236/java

这一行表明进程 java (pid 14236) 正在侦听 localhost(127.0.0.1) 端口 8000 上的 tcp。

如果你想从外部连接,你应该检查你的 tomcat 进程是否正在监听外部地址。

【讨论】:

  • 我遇到了和 OP 一样的问题。就我而言,8000 端口上没有任何监听,我不知道为什么。
猜你喜欢
  • 2011-06-08
  • 2020-04-21
  • 1970-01-01
  • 2021-11-18
  • 2022-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多