java - 如何在不对 IP 进行硬编码的情况下从本地主机外部访问 Java RMI/JMX?

标签 java rmi jmx

如何在不对 IP 进行硬编码的情况下欺骗 Java RMI 以从本地主机外部访问?

最佳答案

因为不可能让 RMI 绑定(bind)到 0.0.0.0,所以解决方案是检测 IP 并使用它。

我在 Linux 和 OS X 上都使用了下面的解决方案:

IP=$(ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p')
# if we have several IPs found, we pick the first one
for IP in $IP:
do
  break
done

CATALINA_OPTS="-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=8081 \
-Dcom.sun.management.jmxremote.local.only=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.rmi.server.hostname=${IP} "

显然这是不安全的配置方式,但您可以自由调整它以满足您的需要。

关于java - 如何在不对 IP 进行硬编码的情况下从本地主机外部访问 Java RMI/JMX?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18486823/

相关文章:

java - 正则表达式将匹配注释的 SQL 代码

Java拒绝访问属性权限

Java RMI 应用程序不退出

java - CollectionUsage、PeakUsage、Usage 之间有什么区别?

jboss - 如何通过java代码连接JBoss 7.1.1 remoting -jmx?

java - 无法在 MacOS 上启动 JavaFX 应用程序(使用 Java 8)

java - 使用 .set Location() 似乎不适用于 JLabel

java - 重播井字游戏

java - JVM如何处理RMI远程方法中的运行时异常?

java - 使用 spring 部署到 Tomcat 的简单应用程序