Ich versuche, IntelliJ für eine Verbindung zu einer Tomcat-Instanz in einem Docker-Container einzurichten. Ich möchte in der Lage sein, Remote-Debugging zu verwenden und auch remote mit JMX zu implementieren.JMX und Debugging auf Tomcat in Docker
kann ich mit catalina.sh jpda run
Remote-Debugging unter Verwendung der Umgebungsvariablen
JPDA_ADDRESS=8000
JPDA_TRANSPORT=dt_socket
und durch das Starten von Tomcat aktivieren, so Remote-Debugging funktioniert ohne Probleme.
Ich kann dies auch alternativ tun mit
CATALINA_OPTS='-agentlib:jdwp=transport=dt_socket,address=8000,suspend=n,server=y'
und dann brauche ich nicht catalina.sh jpda run
Egal zu verwenden, was ich tue, kann ich JMX nicht arbeiten lernen. Ich habe überprüft, dass ich catalina-jmx-remote.jar
in/usr/local/tomcat/lib `habe.
Ich habe versucht, CATALINA_OPTS
und JAVA_OPTS
zu
-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
ich vergewissert haben, dass 192.168.99.100
die IP meines Docker Maschine ist. Ich habe versucht, Verbindung zu JMX mit VisualJM und IntelliJ herzustellen, es funktioniert nicht. Ich habe überprüft, dass der Port 1099
offen und verfügbar vom Host ist.
Tomcat empfängt die JMX args
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
Warum kann ich nicht JMX zu arbeiten? Es gibt keine Informationen in irgendwelchen Protokollen und das wird nicht funktionieren, egal was ich versuche.
Edit: lsof -i :1099
zeigt nichts läuft an diesem Port
ich unter Mac OS X leite Es ist eine Docker-Maschine, aber ich glaube, Docker virualbox auf dem Mac verwendet, weil es keine Container laufen nativ kann. Ich habe den Port zugeordnet. docker ps
zeigt 0.0.0.0:1099->1099/tcp, 0.0.0.0:8000->8000/tcp, 0.0.0.0:8080->8080/tcp
. Ports 8080
und 8000
arbeiten so 1099 sollte auch korrekt zugeordnet werden.
Wenn Sie die Docker-Container und läuft 'hostname -i' ssh auf (in Ihrem Container das ist möglich unter der Annahme,), was ist das Ergebnis? –
@EngineerDollery Das Ergebnis ist 172.17.0.3, aber ich nahm an, dass ich die IP der Maschine und nicht den Container verwenden sollte. Wenn ich '192.168.99.100' ping (die IP des Docker-Rechners), bekomme ich eine Antwort. Wenn ich ping '172.17.0.3', 100% Paketverlust – DontTurnAround
Haben Sie das gelesen ?: http://stackoverflow.com/questions/31257968/how-to-access-jmx-interface-in-docker-from-outside oder das ?: http://stackoverflow.com/questions/29958421/access-tomcat-running-in-docker-container-by-jmx –