Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何欺骗JavaRMI/JMX,使其能够从本地主机外部访问,而无需硬编码IP?_Java_Rmi_Jmx - Fatal编程技术网

如何欺骗JavaRMI/JMX,使其能够从本地主机外部访问,而无需硬编码IP?

如何欺骗JavaRMI/JMX,使其能够从本地主机外部访问,而无需硬编码IP?,java,rmi,jmx,Java,Rmi,Jmx,如何使Java RMI在不硬编码IP的情况下从本地主机外部访问?由于不可能使RMI绑定到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

如何使Java RMI在不硬编码IP的情况下从本地主机外部访问?

由于不可能使RMI绑定到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} "

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

让RMI绑定到0.0.0.0并非“不可能”。这正是默认情况下它所做的。这也无关紧要-1为什么您认为其他主机无法访问RMI?您确定没有将RMI绑定与防火墙规则混淆吗?