2012-04-02 1 views
6

Я запускаю Jconsole на своем macbook и пытаюсь подключиться к терминалу linux на ec2, у которого нет графики (только доступ к командной строке).Как использовать Jconsole для подключения к EC2?

я запускаю мой код, как это:

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 

Я прочитал here, что возникла проблема с доступом через EC2 (после того, как у меня были проблемы с подключением) и решение, казалось бы «java.rmi.server.hostname to the public hostname of the instance»

Я немного смущен, как это сделать. Я попробовал две вещей, одна, чтобы поставить его прямо в моем коде (в пустоте статической основной секции):

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

система приняла его (без ошибок, когда я создал/не загружены работоспособную банка). Я также открыл брандмауэр в своем экземпляре, чтобы разрешить весь трафик TCP. Не повезло. Я попробовал вышеуказанное утверждение также как флаг для запуска в программу, но до сих пор не повезло.

Любые идеи, как это сделать?

ОБНОВЛЕНИЕ: Это покажет, насколько зеленый я нахожусь на Java, я сделал еще один шаг (все еще не работает), но я понял, что вставил java -jar filename.jar, а затем параметры не дали мне то же самое результаты поместите мой -jar в конец команды. Я попробовал это, и программа пытается подключиться, а затем говорит, что соединение не выполнено (прежде чем он просто скажет это на экране входа в систему сразу).

ответ

2

Установить свойство перед именем хоста VM начинается:

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 

Добавьте соответствующие правила в группу безопасности.

И наконец, гарантирует, что iptables остановлен, так как это может быть причиной того, что вы не получаете соединение от внешнего мира. Как корень (или использование sudo ...):

# service iptables stop 
+0

Благодарим вас за ответ. Я следовал тому, что вы написали, и все еще получил ту же ошибку. –

1

Для вашего экземпляра вам необходимо открыть удаленный порт JMX (9005 согласно вашему примеру выше) в security group.

+0

Я уже сделал это. просто чтобы быть в безопасности, я открыл 0 - 65535. –

+0

Единственное, что я не могу сказать выше, это установить java.rmi.server.hostname на общедоступное имя вашего экземпляра (обычно это в формате что-то вроде ec2-xxx-yyy-zzz-aaa.compute -1.amazonaws.com, где xxx-yyy-zzz-aaa является общедоступным IP-адресом). Если вы сделали это, я уже в тупике, извините. –

+0

Ваше право Я использовал общедоступное имя хоста для подключения (это то, что я использую для ssh) ec2-xxx. Я получил IP-адрес и дал ему шанс и еще одну проблему. –