2012-05-11 29 views
8

Używam Tomcat 6 na serwerze Linux w chmurze Amazon. Próbuję połączyć się z nim za pomocą VisualVM z mojego komputera Mac w moim biurze. Pozwoliłem otworzyć wszystkie porty TCP między moim pulpitem a serwerem, ale nie jestem w stanie przekonać VisualVM do zrobienia czegokolwiek.Debugowanie zdalnego połączenia VisualVM

Na polu linux, zacząłem Tomcat z:

-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=9191 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 

Na moim Mac, ja uruchomić VisualVM i wybierz File -> New Connection JMX ...

wejdę amazonhostname.com: 9191 w pudełku. Jest napisane "Dodawanie amazonhostname.com:9191 ..." i siedzi tam przez kilka minut, zanim upłynie limit czasu.

Z mojego komputera Mac, mogę "telnet amazonhostname.com 9191" w porządku, a ja spróbowałem innych losowych portów i wszystkie zadziałały. Jestem przekonany, że to nie jest problem z firewallem, chyba że muszę otworzyć UDP lub ICMP lub coś w tym stylu. (Naprawdę ??)

Nie ma nic w catalina.log na serwerze lub konsoli systemowej na moim Macu, związane z jmx. netstat na serwerze pokazuje 9191 i kilka innych portów otwartych na wszystkich interfejsach.

Na serwerze zdalnym nie ma pliku jstatd. Czy jest to warunek wstępny dla JMX? (Jestem zupełnie nowy w Javie i nie jestem nawet pewien, co to znaczy, ale widziałem to gdzieś na blogu.) Teraz łapię się za słomkę.)

+0

Czy upewniłeś się, że iptables nie blokuje połączenia w twoim Linux-ie? EDYCJA: Widzę, możesz telnetu - okej, zrób to. –

+1

Inną rzeczą, na którą musisz zwrócić uwagę, jest nazwa hosta RMI - spójrz na: http://stackoverflow.com/questions/9985293/how-do-i-use-jconsole-to-connect-to-ec2 –

+1

Jstatd nie jest potrzebne. Greg zasugerował, aby spróbować dodać do argumentów JVM Tomcat -Djava.rmi.server.hostname = the.public.ip. –

Odpowiedz

18

Ustaw właściwość hostname przed uruchomieniem maszyny wirtualnej :

java -Dcom.sun.management.jmxremote \ 
    -Dcom.sun.management.jmxremote.port=9191 \ 
    -Dcom.sun.management.jmxremote.authenticate=false \ 
    -Dcom.sun.management.jmxremote.ssl=false \ 
    -Djava.rmi.server.hostname=the.public.ip \ 
    -jar program.jar 

Dodaj odpowiednie reguły do ​​swojej grupy bezpieczeństwa.

+0

Nie działa, niestety, do automatycznego skalowania, jak Elastic Beanstalk. – mwoodman

+0

@mwoodman: Nie używałem EB, ale czy wiesz, dlaczego to nie ma zastosowania (aby powiadomić kolejnych użytkowników SO)? –

+1

Myślę, że -Dcom.sun.management.remote.ssl = false powinno być -Dcom.sun.management.jmxremote.ssl = false –

Powiązane problemy