2012-04-02 17 views
6

Estoy ejecutando Jconsole en mi macbook y tratando de conectarme a un terminal de linux en ec2 que no tiene gráficos (solo acceso a la línea de comandos).¿Cómo uso Jconsole para conectarme a EC2?

dirigir mi código como este:

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 

leí here que había un problema con el acceso a través de EC2 (después de que tuviera problemas de conexión) y la solución parecía ser 'java.rmi.server.hostname to the public hostname of the instance'

Estoy un poco confundido sobre cómo hacer esto. He intentado dos cosas, una para poner directamente en mi código (en la sección principal static void):

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

El sistema lo aceptó (no hay errores cuando creé/subidos frasco ejecutable). También abrí el firewall en mi instancia para permitir todo el tráfico TCP. Sin suerte. Probé la declaración anterior también como una bandera para lanzar al programa, pero todavía no tuve suerte.

¿Alguna idea de cómo hacer esto?

ACTUALIZACIÓN: Esto mostrará lo verde que soy en Java, di un paso más (todavía no funciona) pero me di cuenta de que poner el java -jar nombredearchivo.jar y luego las opciones no me daban el mismo resultados como poner mi -jar al final del comando. Intenté eso y el programa intenta conectarse y luego dice que la conexión falló (antes de que simplemente lo dijera en la pantalla de inicio de sesión de inmediato).

Respuesta

2

Establezca la propiedad nombre de host antes de que la máquina virtual se inicia:

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 

Añadir las normas pertinentes a su grupo de seguridad.

Finalmente, asegurar que iptables se detenga, ya que esta podría ser la razón por la que no se obtiene una conexión del mundo exterior. Como root (o usando sudo ...):

# service iptables stop 
+0

Gracias por la respuesta. Seguí lo que escribiste y aún tengo el mismo error. –

1

Debe abrir el puerto remoto JMX (9005 según su ejemplo anterior) en el security group para su instancia.

+0

Ya he hecho esto. solo para estar seguro abrí 0 - 65535 también. –

+0

La única otra cosa que no puedo decir desde arriba es si establece java.rmi.server.hostname en el nombre de host público de su instancia (esto es generalmente en el formato algo parecido a ec2-xxx-yyy-zzz-aaa.compute -1.amazonaws.com, donde xxx-yyy-zzz-aaa es la dirección IP pública). Si ya lo hiciste, estoy perplejo, lo siento. –

+0

Su derecho Estaba usando el nombre de host público para conectar (que es lo que uso para ssh) ec2-xxx. Obtuve una dirección IP y le di una oportunidad y el mismo problema. –

Cuestiones relacionadas