我们刚刚在 Amazon Linux 上升级到 Java 8。我们正在使用 Spring 4.3.8.RELEASE。过去,我们可以通过在应用程序上下文文件中设置 bean 来获取机器主机名,如下所示......
<bean id="localhostInetAddress" class="java.net.InetAddress" factory-method="getLocalHost" />
<bean id="hostname" factory-bean="localhostInetAddress" factory-method="getHostName" />
但在 Java 8 中,bean“主机名”现在包含字符串
localhost
在 Java 8 之前,它曾经包含在命令行上运行的“主机名”值,即
[myuser@machine1 ~]$ hostname
machine1.mydomain.org
如何重新配置我们的 bean,以便它获取命令行列出的主机名?我不想在任何地方硬编码任何东西。
From InetAddress java 8 未获取主机名 https://stackoverflow.com/questions/38622631/inetaddress-java-8-is-not-getting-the-hostname :
JDK 中也存在类似的错误。
据我了解,他们更改了默认解析过程。
它们遵循 /etc/nsswitch.conf 中的配置,其中为 /etc/hosts 配置主机,这为其提供了名称解析的主要优先级。
通常 /etc/hosts 有 127.0.0.1 localhost 的记录,为主机 localhost 提供名称
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)