2012-04-02 22 views
6

Sto eseguendo Jconsole sul mio macbook e provando a connettermi a un terminale Linux su ec2 che non ha grafica (solo accesso alla riga di comando).Come utilizzare Jconsole per connettersi a EC2?

eseguo il mio codice come questo:

java -jar program.jar -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9005 
-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.remote.ssl=false 

ho letto here che c'era un problema con accesso tramite EC2 (dopo che ho avuto problemi di connessione) e la soluzione sembrava essere 'java.rmi.server.hostname to the public hostname of the instance'

Sono un po 'confuso su come farlo. Ho provato due cose, uno per metterlo direttamente nel mio codice (nella sezione principale static void):

System.setProperty("java.rmi.server.hostname" , "external_EC2_address"); //in my real code I have the correct address here 

Il sistema accettato (nessun errore quando ho creato/caricato jar eseguibile). Ho anche aperto il firewall sulla mia istanza per consentire tutto il traffico TCP. Senza fortuna. Ho provato la dichiarazione di cui sopra anche come una bandiera da lanciare al programma, ma ancora senza fortuna.

Qualche idea come si fa?

AGGIORNAMENTO: Questo mostrerà quanto sono verde a Java, ho fatto un ulteriore passo avanti (ancora non funziona) ma mi sono reso conto di aver inserito java-jar filename.jar e poi le opzioni non mi hanno dato lo stesso risulta come mettere il mio -jar alla fine del comando. L'ho provato e il programma tenta di connettersi e quindi dice che la connessione non è andata a buon fine (prima lo avrebbe appena detto nella schermata di login subito).

risposta

2

Impostare la proprietà hostname prima della VM inizio:

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

aggiungere le regole rilevanti per il gruppo di protezione.

Infine, assicurarsi che l'iptables sia arrestato, poiché questo potrebbe essere il motivo per cui non si ottiene una connessione dal mondo esterno. Come root (o usando sudo ...):

# service iptables stop 
+0

Grazie per la risposta. Ho seguito ciò che hai scritto e ho ancora ottenuto lo stesso errore. –

1

È necessario aprire la porta remota JMX (9005 secondo l'esempio sopra riportato) nell'istanza security group per l'istanza.

+0

L'ho già fatto. solo per essere al sicuro ho aperto anche 0 - 65535. –

+0

L'unica altra cosa che non posso dire da sopra è se si imposta java.rmi.server.hostname sul nome host pubblico dell'istanza (di solito è nel formato qualcosa come ec2-xxx-yyy-zzz-aaa.compute -1.amazonaws.com, dove xxx-yyy-zzz-aaa è l'indirizzo IP pubblico). Se lo hai già fatto, sono sconcertato, mi dispiace. –

+0

A destra stavo usando l'hostname pubblico da connettere (che è quello che uso per ssh) ec2-xxx. Ho ottenuto un indirizzo IP e ho dato un colpo e ancora lo stesso problema. –

Problemi correlati