如何在不对IP进行硬编码的情况下,从外部localhost访问Java RMI?
答案 0 :(得分:0)
由于无法使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} "
显然,这是配置它的不安全方式,但您可以随意调整它以满足您的需求。