java - 如何使用 Jconsole 连接到 EC2?

标签 java amazon-ec2 rmi jconsole

我在我的 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

我读了here通过 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 然后选项没有给我相同的结果将 my -jar 放在命令的末尾。我试过了,程序尝试连接,然后说连接失败(之前它会立即在登录屏幕上说)。

最佳答案

在虚拟机启动前设置主机名属性:

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

关于java - 如何使用 Jconsole 连接到 EC2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9985293/

相关文章:

java - NatTable 单元格编辑应在键入任何 "regular"字符(例如字母或数字)时禁用

node.js - 为在 node.js 应用程序上运行的 mongodb 计算 n 个连接池所需的内存

java - 如何创建一个可以作为窗口服务运行的java应用程序?

java - 从 HttpServletRequest 获取 POST 请求正文

java - 使用 cardlayout 在面板之间切换时,JTextField 和按钮不会更新

python - 如何修复 ModuleNotFoundError : No module named 'rest_framework' in Ubuntu

amazon-ec2 - 在Docker中使用环境变量

java - 在 Java RMI 中,客户端如何知道其服务器已死亡?

java - 调用invokeMethod时出错

java - 通过 Java 解锁智能卡的 PIN (SunPKCS11)