如何在Mule 4/Dataweave 2中正确获取服务器主机名与IP地址
Mule 4 / DataWeave 2 获取服务器主机名与IP地址解决方案
你调用prop("server.host")、prop("server.ip")返回null的原因是这两个属性不属于Mule Runtime或JVM默认提供的系统属性,没有预先配置的情况下无法直接通过prop()方法读取。原有代码中的prop("user.timezone")是JVM自带的系统属性,可正常返回取值。
可以直接在DataWeave 2中调用JDK内置的java.net.InetAddress类的方法获取本地主机信息,示例代码如下:
output application/json import getLocalHost from java!java::net::InetAddress --- { "payload" : payload, "host": getLocalHost().getHostName(), "ip": getLocalHost().getHostAddress(), "timezone": prop("user.timezone") }
- 若应用部署在CloudHub环境,该方法获取的是Worker内部容器的主机名和内网IP,如需公网IP需要额外调用公网IP查询接口实现。
- 若服务器存在多网卡配置,
getHostAddress()默认返回主机名绑定的IP地址,如需获取所有网卡的IP列表,可调用getLocalHost().getAllAddresses()方法遍历取值。 - 如果你希望继续使用
prop()方法读取这两个属性,可以在Mule应用的JVM启动参数中添加对应配置:-Dserver.host=自定义主机名 -Dserver.ip=自定义IP地址,原有代码即可正常返回数值。
内容的提问来源于stack exchange,提问作者hpandalai
相关产品推荐
相关产品推荐

