2013-10-02 23 views
5

Mam zdalny serwer JBoss 7.1 i chcę się połączyć z tym serwerem za pomocą VisualVM lub JConsole.Połącz się z JBoss 7 przy użyciu VisualVM

google trochę i znalazłem kilka nitek/tutoriale, w jaki sposób połączyć się z JBoss 7.1 za pomocą VisualVM lub JCoonsole, np

Niestety nie miałem szczęścia w połączenie z moim JBoss 7.1 przez JMX.

Czy masz jakieś pomysły na połączenie z JBoss 7.1 z VisualVM?

Edycja: I dodaje -Dcom.sun.management.jmxremote.port = 1090 -Dcom.sun.management.jmxremote.authenticate = fałszywe standalone.conf.bat, ale mam wyjątek: spowodowane przez: wyjątek java.lang.IllegalStateException: LogManager nie został prawidłowo zainstalowany (należy ustawić właściwość systemową "java.util.logging.manager" na "org.jboss.logmanager.LogManager").

Dodałem więc inną opcję do JAVA_OPTS: -Dcom.sun.management.jmxremote.port = 1090 -Dcom.sun.management.jmxremote.authenticate = false -Djava.util.logging.manager = org.jboss. logmanager.LogManager ale wyjątek otrzymuję to:

Could not load Logmanager "org.jboss.logmanager.LogManager" 
java.lang.ClassNotFoundException: org.jboss.logmanager.LogManager 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
+0

Co wyjątek czy masz? – zerologiko

+0

Próbowałem dodawać -Dcom.sun.management.jmxremote.port = 1090 -Dcom.sun.management.jmxremote.authenticate = false do standalone.conf.bat (używam JBoss 7 w systemie Windows) i otrzymałem: Powodowany przez: java .lang.IllegalStateException: LogManager nie został poprawnie zainstalowany (musisz ustawić właściwość systemową "java.util.logging.manager" na "org.jboss.logmanager.LogManager") –

Odpowiedz

5

Znaleziono rozwiązanie. Musiałem dodać następujące params do JAVA_OPTS w standalone.conf.bat:

-Dcom.sun.management.jmxremote.port=1090^
-Dcom.sun.management.jmxremote.authenticate=false^
-Dcom.sun.management.jmxremote^
-Dcom.sun.management.jmxremote.ssl=false^
-Djava.util.logging.manager=org.jboss.logmanager.LogManager^
-Xbootclasspath/p:<JBOSS_PATH>/modules/org/jboss/logmanager/main/jboss-logmanager-1.2.2.GA.jar^
-Xbootclasspath/p:<JBOSS_PATH>/modules/org/jboss/logmanager/log4j/main/jboss-logmanager-log4j-1.0.0.GA.jar^
-Xbootclasspath/p:<JBOSS_PATH>/modules/org/apache/log4j/main/log4j-1.2.16.jar -Djboss.modules.system.pkgs=org.jboss.logmanager 

Uwaga 1: Wykorzystanie \ zamiast ^ na Uniksie.

Uwaga 2: Zamień <JBOSS_PATH> ze ścieżką instalacji JBoss 7.x. Mój był c:/java/jboss-as-7.1.1.Final.

2

Jeśli otworzyć powłokę poleceń i wpisać „netstat -a”, czy widzisz coś nasłuchuje na porcie 1090 JMX? Jeśli nie, być może musisz sprawdzić konfigurację JBOSS.

https://community.jboss.org/thread/171346?start=0&tstart=0

+0

Dzięki, masz rację. Nie mam aplikacji nasłuchujących w 1090. Więc to musi być problem ... –

0
  1. Dodaj JVM zdecyduje się run.conf (run.conf.bat) JAVA_OPTS = "$ JAVA_OPTS -Dcom.sun.management.jmxremote.port = 9999 -Dcom.sun.management.jmxremote.authenticate = false -Dcom.sun.management.jmxremote.ssl = false -Dcom.sun.management.jmxremote "

  2. W konsoli Visual VM otwórz zdalny host. I Dodaj JMX Connection i podać numer portu jako < 9999>

1

można podłączyć bezpośrednio do JBoss JMX zamiast jednego VM (bez potrzeby modyfikowania JAVA_OPTS)

Wystarczy upewnić się, że następujące config w samodzielnym.xml (JMX podsystem aktywne)

w trybie autonomicznym (słuchałem portu 9999):

<subsystem xmlns="urn:jboss:domain:jmx:1.1"> 
    <show-model value="true"/> 
    <remoting-connector /> 
</subsystem> 

w trybie domeny (słuchałem portu 4447)

<subsystem xmlns="urn:jboss:domain:jmx:1.1"> 
    <show-model value="true"/> 
    <remoting-connector use-management-endpoint="false"/> 
</subsystem> 

to musimy trochę Hack: Jak JBoss Implementacja JMX jest nieco specyficzna, musimy dołączyć jboss lib do ścieżki klasy JVisualVM

  • Pobierz plik $JBOSS_HOME/bin/jconsole.sh/jconsole.bat i skopiuj/zmień jego nazwę na jvisualvm.sh/jvisualvm.bat w tym samym katalogu.

  • Następnie wymień połączenia wykonywalny do JConsole za jvisualvm użyciu -cp:a "$CLASSPATH" zamiast -J-Djava.class.path="$CLASSPATH"

Teraz wystarczy uruchomić VisualVM użyciu skryptu i dodać nowe połączenie JMX (menu Plik) używając folowing url service:jmx:remoting-jmx://hostname:port (the poświadczenia są jednym z dziedziny zarządzania)

NB: aby myśleć ssh tunel, jeśli nie mają bezpośredniego dostępu do portu JMX

+0

Po wielu godzinach walki i wypróbowaniu każdej sugestii, był to jedyny, który zadziałał dla mnie. Dzięki! Ludzie: JBoss zawiera JVisualVM w folderze bin, a ta odpowiedź wyjaśnia, jak z niego korzystać! – Marquez

Powiązane problemy