fxm*_*asa 4 java tomcat remote-debugging docker java-9
我有一个基于opendjdk:8-slim已安装 Tomcat 9的 Docker 容器,我正在调试从我的 IDE (IntelliJ) 部署在那里的应用程序 - IDE 在 Docker 主机上运行。我使用以下配置运行Tomcat
CATALINA_OPTS="-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=49520 \
-Dcom.sun.management.jmxremote.rmi.port=49520 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.local.only=false \
-Djava.rmi.server.hostname=10.0.75.1 \
-agentlib:jdwp=transport=dt_socket,address=49540,suspend=n,server=y"
Run Code Online (Sandbox Code Playgroud)
一切正常 - 我可以将 IDE 附加到容器。以下命令也有效(从 docker 主机执行) - 它可以连接到容器中的进程(容器中的端口 49540 映射到主机上的端口 49540):
docker-host$ telnet localhost 49540
Run Code Online (Sandbox Code Playgroud)
现在我想升级到 Java 9。我将基本映像从 更改openjdk:8-slim为openjdk:9-slim,但无法从 docker 主机连接到调试器端口。同样来自 IDE,我得到了SocketTimeoutException: Connection reset. 但是,从容器内部,我可以通过telnet.
我从openjdk存储库和其他存储库中尝试了几个 Java 9 图像,例如adenix/java,但不幸的是结果相同。
最后,我找到了一种如何使用 Alan Bateman 提供的评论中的信息使其工作的方法。
CATALINA_OPTS我没有设置调试设置(在 JDK 8 中没有问题),而是JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=*:4954??0,server=y,suspend=n??"使用catalina.sh jpda run. address=192.168.16.1:49540尽管可以从容器内访问 IP 地址,但具体的 IP 地址(例如)仍然对我不起作用。
| 归档时间: |
|
| 查看次数: |
4173 次 |
| 最近记录: |