Don*_*und 5 java tomcat jmx remote-debugging docker
我正在尝试设置 IntelliJ 以连接到在 Docker 容器中运行的 Tomcat 实例。我希望能够使用远程调试并使用 JMX 进行远程部署。
我可以使用环境变量启用远程调试
JPDA_ADDRESS=8000
JPDA_TRANSPORT=dt_socket
Run Code Online (Sandbox Code Playgroud)
并且通过使用 启动 Tomcat catalina.sh jpda run,远程调试工作没有问题。
我也可以用
CATALINA_OPTS='-agentlib:jdwp=transport=dt_socket,address=8000,suspend=n,server=y'
Run Code Online (Sandbox Code Playgroud)
然后我不需要使用 catalina.sh jpda run
无论我做什么,我都无法让 JMX 工作。我确认我catalina-jmx-remote.jar在 /usr/local/tomcat/lib` 中。
我曾尝试设置CATALINA_OPTS与JAVA_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
Run Code Online (Sandbox Code Playgroud)
我已经验证这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
Run Code Online (Sandbox Code Playgroud)
为什么我不能让 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。端口8080和8000工作所以 1099 也应该正确映射。
当我对 jmxremote.host 和 server.hostname 使用 0.0.0.0 时,我能够连接
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3281 次 |
| 最近记录: |