JMX和在Docker内的Tomcat上进行debugging
我正在尝试设置IntelliJ连接到运行在Docker容器中的Tomcat实例。 我希望能够使用远程debugging,并使用JMX进行远程部署。
我可以使用环境variables启用远程debugging
JPDA_ADDRESS=8000 JPDA_TRANSPORT=dt_socket
并通过启动Tomcat与catalina.sh jpda run
,所以远程debugging工作没有问题。
我也可以用这个替代
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_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
我已经validation了192.168.99.100
是我的docker机器的IP。 我试图用VisualJM和IntelliJ连接到JMX,它不起作用。 我已经validation端口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
。 端口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
- 在生产中debuggingdocker + gunicorn应用程序的替代scheme
- Docker和XDebug不读断点VSCode
- 在Docker中debuggingDjango代码
- 使用适用于Docker的Visual Studio工具部署和debugging远程Linux Docker容器
- 远程debuggingDocker中的节点9
- 在Ruby on Rails中使用Docker时控制台不会显示
- Docker运行在vagrant + pycharm远程pythondebugging中
- 通过EclipsedebuggingDocker上的Wildfly应用程序?
- 使用XDebug从Docker Container进行远程debugging不起作用