【问题标题】:JMX agent throws java.net.MalformedURLException when host name is set to all numeric value当主机名设置为所有数值时,JMX 代理抛出 java.net.MalformedURLException
【发布时间】:2013-12-04 07:44:23
【问题描述】:

我们在应用程序中使用的是 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 上运行。如果主机名设置为非数字值,它可以正常工作。

我尝试在 /etc/hosts 和 /etc/sysconfig/network 中设置主机名,它仍然不起作用。 我还尝试将以下属性设置为服务器 ip 地址,但它仍然不起作用。 -Djava.rmi.server.hostname=${IP}

如果您遇到任何此类问题,请告诉我。 谢谢。

【问题讨论】:

    标签: tomcat centos jmx hostname malformedurlexception


    【解决方案1】:

    在通过 CLI 更新主机名后遇到了同样的问题,但未反映在 /etc/hosts 中。通过将 /etc/hosts 中的旧主机名替换为 sed 解决:

    sed -i 's/<old_name>/<new_name>/' /etc/host
    

    【讨论】:

      【解决方案2】:

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

      127.0.0.1    SUSEDesktop
      ::1          SUSEDesktop
      

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

      【讨论】:

      • 这个答案对我有用!就我而言,我只在家庭网络上遇到过这个问题。在工作中,DNS 服务器可以解析我的主机名,因此 Tomcat 运行良好。在家里,DNS 服务器无法解析我的主机名,因此需要 HOSTS 文件条目。
      • 因为我使用的是办公系统,所以uname不知何故被改变了。在hosts 文件中添加相同的条目为我解决了这个问题。谢谢
      【解决方案3】:

      我在 Mac 上从 Spring Tools Suite 启动 Spring-Boot 应用程序时遇到了类似的问题。它是从 Github 上 SOLR 的 Spring MVC / Spring Boot 示例下载的。

      错误类似于: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 boot 应用程序就会毫无问题地启动(来自 Spring Tools Suite UI)。

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

       mvn spring-boot:run 
      

      -- 我不知道有什么区别。

      【讨论】:

      • 我在升级到 macOS Sierra 10.12 后无法启动 Tomcat。这解决了我的问题。谢谢。
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        我遇到了同样的问题,最后通过在/etc/hosts 中添加“Local”或“local”解决了 类似127.0.0.1 localhost Local local

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-09-25
          • 1970-01-01
          • 2012-05-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多