gpt4 book ai didi

java - 在 Docker 中的 Tomcat 上进行 JMX 和调试

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

我正在尝试设置 IntelliJ 以连接到在 Docker 容器中运行的 Tomcat 实例。我希望能够使用远程调试并使用 JMX 进行远程部署。

我可以使用环境变量启用远程调试

JPDA_ADDRESS=8000
JPDA_TRANSPORT=dt_socket

并通过使用 catalina.sh jpda run 启动 Tomcat,因此远程调试工作没有问题。

我也可以用

CATALINA_OPTS='-agentlib:jdwp=transport=dt_socket,address=8000,suspend=n,server=y'

然后我就不需要使用catalina.sh jpda run

无论我做什么,我都无法让 JMX 工作。我验证了/usr/local/tomcat/lib` 中有 catalina-jmx-remote.jar

我尝试将 CATALINA_OPTSJAVA_OPTS 设置为

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=1099
-Dcom.sun.management.jmxremote.rmi.port=1099
-Djava.rmi.server.hostname=192.168.99.100
-Dcom.sun.management.jmxremote.ssl=false

我已验证 192.168.99.100 是我的 docker 机器的 IP。我已尝试使用 VisualJM 和 IntelliJ 连接到 JMX,但它不起作用。我已验证端口 1099 已打开并且可从主机使用。

Tomcat 正在接收 JMX 参数

20-Apr-2016 23:50:14.019 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.rmi.port=1099 -Djava.rmi.server.hostname=192.168.99.100 -Dcom.sun.management.jmxremote.ssl=false

为什么我不能让 JMX 工作?任何日志中都没有可用的信息,无论我尝试什么都行不通。

编辑:lsof -i :1099 显示该端口上没有任何运行

我在 Mac OS X 上运行。它是一个 docker 机器,但我相信 docker 在 mac 上使用 virualbox,因为它不能在本地运行容器。 我已经映射了端口。 docker ps 显示 0.0.0.0:1099->1099/tcp,0.0.0.0:8000->8000/tcp,0.0.0.0:8080->8080/tcp。端口 80808000 工作,因此 1099 也应该正确映射。

最佳答案

当我将 0.0.0.0 用于 jmxremote.host 和 server.hostname 时,我能够连接

 HOST=0.0.0.0
java -Xmn100M -XX:+PrintGCDetails -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=40 -Xmx384M $JAVA_OPTS\
-Dcom.sun.management.config.file=/opt/app/management.properties \
-Djava.util.logging.config.file=/opt/app/logging.properties \
-Dcom.sun.management.jmxremote.port=$JMX_PORT \
-Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT \
-Dcom.sun.management.jmxremote.host=$HOST \
-Djava.rmi.server.hostname=$HOST \
-jar /opt/app/app.jar

关于java - 在 Docker 中的 Tomcat 上进行 JMX 和调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36757784/

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