6

我在我的 macbook 上运行 Jconsole 并尝试连接到 ec2 上没有图形的 linux 终端(仅命令行访问)。

我像这样运行我的代码:

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

我在这里读到通过 EC2 访问时出现问题(在我连接问题之后),解决方案似乎是“ java.rmi.server.hostname to the public hostname of the instance

我对如何做到这一点有点困惑。我尝试了两件事,一是直接将其放入我的代码中(在 void static main 部分中):

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

系统接受了它(当我创建/上传可运行 jar 时没有错误)。我还在我的实例上打开了防火墙以允许所有 TCP 流量。没运气。我也尝试将上述语句作为启动程序的标志,但仍然没有运气。

任何想法如何做到这一点?

更新:这将显示我在 Java 中的绿色程度,我更进一步(仍然不起作用)但我意识到放置 java -jar filename.jar 然后选项没有给我与放置我的相同的结果-jar 在命令末尾。我试过了,程序尝试连接,然后说连接失败(在它马上在登录屏幕上说之前)。

4

2 回答 2

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 已停止,因为这可能是您没有从外部世界获得连接的原因。以 root 身份(或使用 sudo ...):

# service iptables stop
于 2012-04-03T00:24:51.673 回答
1

您需要在您的实例的安全组中打开 JMX 远程端口(根据上面的示例为 9005)。

于 2012-04-02T23:46:37.437 回答