首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在docker容器中的Java 9 Tomcat 9上进行远程调试

无法在docker容器中的Java 9 Tomcat 9上进行远程调试
EN

Stack Overflow用户
提问于 2017-11-07 22:07:15
回答 2查看 5.3K关注 0票数 6

我有一个基于opendjdk:8-slim的Docker容器,安装了Tomcat 9,我正在调试部署在那里的应用程序-- IDE (IntelliJ) -- IDE运行在Docker主机上。我使用以下配置运行Tomcat

代码语言:javascript
复制
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"

一切都很好--我可以将IDE附加到容器上。另外,以下命令工作(从docker主机执行)-它可以连接到容器中的进程(容器中的端口49540映射到主机上的端口49540 ):

代码语言:javascript
复制
docker-host$ telnet localhost 49540

现在我想升级到Java 9,我将基本映像从openjdk:8-slim更改为openjdk:9-slim,并且无法从docker主机连接到调试器端口。同样从IDE,我得到了SocketTimeoutException: Connection reset。但是,从容器内部,我可以通过telnet连接到调试器。

我尝试了来自openjdk存储库和其他repos (例如adenix/java )的Java9的几个映像,但不幸的是,结果是相同的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-09 18:04:11

最后,我找到了一种使用Alan提供的评论中的信息使其工作的方法。

我没有在CATALINA_OPTS中设置调试设置( JDK 8没有出现问题),而是设置JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=*:4954‌​0,server=y,suspend=n‌​"并使用catalina.sh jpda run运行Tomcat。具体的IP地址(例如address=192.168.16.1:49540)仍然不适用于我,尽管IP地址可以从容器中访问。

票数 9
EN

Stack Overflow用户

发布于 2021-04-28 19:09:10

我在我的docker-compose.yaml环境变量中使用Java 9Tomcat 9来运行

代码语言:javascript
复制
...
    environment:
      - "JPDA_ADDRESS=*:8000"
...

以前,在Java 8中,我使用了:

代码语言:javascript
复制
...
    environment:
      - "JPDA_ADDRESS=8000"
...
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47168235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档