2012-05-11 22 views
8

Sto eseguendo Tomcat 6 su un server Linux nel cloud di Amazon. Sto cercando di connettermi ad esso con VisualVM dal mio Mac nel mio ufficio. Ho permesso di aprire tutte le porte TCP tra il mio desktop e il server, ma non riesco a far funzionare VisualVM.Debug di connessione remota VisualVM

sulla macchina Linux, ho iniziato con Tomcat:

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

Sul mio Mac, mi lancio VisualVM e scegliere File -> Nuovo JMX connessione ...

inserisco amazonhostname.com: 9191 nella scatola. Dice "Aggiungi amazonhostname.com:9191 ..." e resta seduto per diversi minuti prima di scadere.

Dal mio Mac, posso "telnet amazonhostname.com 9191" bene, e ho provato altre porte casuali, e hanno funzionato tutte. Sono abbastanza convinto che non si tratti di un problema con il firewall, a meno che non abbia bisogno di aprire UDP o ICMP o qualcosa del genere. (Davvero ??)

Non c'è niente in catalina.log sul server, o nella console di sistema sul mio Mac, relativo a jmx. netstat sul server mostra 9191 e alcune altre porte aperte su tutte le interfacce.

Non c'è jstatd sul server remoto. È un pre-requisito per JMX? (Sono totalmente nuovo a Java e non sono nemmeno sicuro di cosa significano queste cose, ma l'ho visto su un post di un blog.)

+0

Avete fatto in modo che iptables non stia bloccando la connessione sulla vostra macchina Linux? EDIT: Vedo che puoi telnet - okay, grattalo. –

+1

L'altra cosa che devi controllare è il nome host RMI: dai un'occhiata a: http://stackoverflow.com/questions/9985293/how-do-i-use-jconsole-to-connect-to-ec2 –

+1

Jstatd non è necessario Come suggerito da Greg, provare ad aggiungere -Djava.rmi.server.hostname = the.public.ip agli argomenti JVM di Tomcat. –

risposta

18

Impostare la proprietà nome host prima dell'avvio della VM :

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 

Aggiungere le regole pertinenti al gruppo di sicurezza.

+0

Purtroppo non funzionerà per il ridimensionamento automatico come Elastic Beanstalk. – mwoodman

+0

@mwoodman: non ho usato EB, ma sai perché questo non è applicabile (per consentire ai successivi utenti SO di sapere)? –

+1

Penso che -Dcom.sun.management.remote.ssl = false dovrebbe essere -Dcom.sun.management.jmxremote.ssl = false –

Problemi correlati