当主机名设置为所有数值时,JMX代理会抛出java.net.MalformedURLException

时间:2013-11-20 10:50:13

标签: tomcat centos jmx hostname malformedurlexception

我们在我们的应用程序中使用tomcat 7.0.27。我们在tomcat启动时设置jmx属性。

-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port = 8666 -Dcom.sun.management.jmxremote.ssl = false -Dcom.sun.management.jmxremote.authenticate = false

如果运行此tomcat的centOS服务器主机名设置为所有数值,如005056940096,则tomcat无法启动。它给出了以下例外。

错误:代理抛出异常:java.net.MalformedURLException:本地主机名未知:java.net.UnknownHostException:005056940096:005056940096 服务器在centOS6上运行。如果hostname设置为非数字值,则它可以正常工作。

我尝试在/ etc / hosts和/ etc / sysconfig / network中设置主机名,但它仍然无效。 我也尝试将下面的属性设置为服务器IP地址,但它仍然无法正常工作。  -Djava.rmi.server.hostname = $ {IP}

如果您遇到任何此类问题,请与我们联系。 感谢。

5 个答案:

答案 0 :(得分:24)

我也有同样的问题,但我发现:
原因是tomcat尝试绑定到IP,因​​此它不使用localhost,而是使用主机名 在我的情况下:SUSEDesktop。 所以我不得不在/ etc / hosts中添加一个主机条目:

127.0.0.1    SUSEDesktop
::1          SUSEDesktop

将SUSEDesktop替换为您计算机的主机名,您可以通过以下方式找到它: uname -n

答案 1 :(得分:14)

echo“127.0.0.1 $ HOSTNAME”| sudo tee -a / etc / hosts

答案 2 :(得分:5)

我遇到了同样的问题,最后通过添加" Local"或者"本地"到/etc/hosts127.0.0.1 localhost Local local

这样的东西

答案 3 :(得分:5)

我遇到类似的问题,从Mac上的Spring Tools Suite启动Spring-Boot应用程序。它是从一个Spring MVC / Spring Boot示例下载的,用于关闭Github的SOLR。

错误类似于:java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException:XXXXXXX-221227.this.that.foo.other

通过将这两行添加到我的Mac上的/private/etc/hosts文件中,问题就消失了。不需要“重新”网络接口。

127.0.0.1       XXXXXXX-221227.this.that.foo.other

::1             XXXXXXX-221227.this.that.foo.other

我认为这与tomcat的上述问题和数字名称有关...因为我的计算机名称(由公司提供)中有数字。

在任何情况下,只要我可以ping XXXXXXX-221227.this.that.foo.other(显然现在与ping localhost127.0.0.1相同)启动Spring启动应用程序(来自Spring Tools Suite UI)没问题。

奇怪的是,Spring启动应用程序从命令行启动FINE:

 mvn spring-boot:run 

- 我不知道差异是什么。

答案 4 :(得分:0)

通过CLI更新主机名后面临同样的问题,但未反映到x = y (True) y = z (False) x = z (True) 中。通过使用/etc/hosts替换/ etc / hosts中的旧主机名来解决:

sed