2010-10-08 15 views
11

Mam proces Java uruchomiony na komputerze zdalnym, a proces ustawia niektóre mbeans. Mam również jstatd działającego na tym komputerze jako ten sam użytkownik, co proces Java. (Programy mbeans można ustawić programowo lub używając -Dcom.sun.management.jmxremote... itd., Nie wydaje się, żeby to miało znaczenie).Czy wizualizacja może łączyć się automatycznie za pośrednictwem JMX ze zdalnym procesem?

VisualVM jest w stanie wykonać połączenie z procesem, który automatycznie wykrywa, ale oznacza to, że nie mam dostępu do mbeans lub, na przykład, historii historii procesora. Alternatywnie mogę utworzyć jawne połączenie JMX, które daje mi zwykły zakres przydatnych narzędzi, ale chcę, aby aplikacja miała przypisany losowy port JMX podczas uruchamiania, ta konfiguracja nie może być statyczna.

Czy istnieje sposób, aby VisualVM automatycznie łączył się z moim procesem za pośrednictwem JMX? Wymagałoby to automatycznego wykrywania portów JMX, ale pomyślałem, że może to zrobić jstatd. Czy ktoś wie o jakichkolwiek wtyczkach do visualvm, aby zautomatyzować to?

Odpowiedz

13

Niestety, nie ma możliwości przypisania losowego portu JMX do aplikacji zdalnej. Można uruchomić aplikację zdalną z

-Dcom.sun.management.jmxremote.port=<fixed port> 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 

i VisualVM będą mogli przeczytać ten konfigurację poprzez Jvmstat (dostarczenie przez jstatd) i otwarte połączenie ze zdalną JMX aplikacji automatycznie. Musisz więc przypisać stałe port (y) do zdalnych aplikacji. Gdy już to zrobisz, wszystko będzie działać poprawnie, a VisualVM automatycznie połączy się z twoją aplikacją za pośrednictwem JMX (w rzeczywistości połączy dane z obu Jvmstat i JMX).

+0

Podobnie jak w przypadku większości wywołań gniazdowych, można ustawić port na 0, a zostanie wybrany dynamicznie, a następnie jstatd połączy się z ... – time4tea

Powiązane problemy