Java Can';无法将jconsole连接到远程服务器,tomcat无法启动

Java Can';无法将jconsole连接到远程服务器,tomcat无法启动,java,tomcat,jvm,jconsole,Java,Tomcat,Jvm,Jconsole,正在尝试将jconsole连接到远程服务器 我在catalina.sh中添加了以下内容: export JAVA_OPTS="-Dcom.sun.management.jmxremote \ -Dcom.sun.management.jmxremote.port=9005 \ -Dcom.sun.management.jmxremote.ssl=false \ -Dcom.sun.management.jmxremote.authenticate=false \

正在尝试将jconsole连接到远程服务器

我在catalina.sh中添加了以下内容:

export JAVA_OPTS="-Dcom.sun.management.jmxremote \
    -Dcom.sun.management.jmxremote.port=9005 \
    -Dcom.sun.management.jmxremote.ssl=false \
    -Dcom.sun.management.jmxremote.authenticate=false \
    -Djava.rmi.server.hostname=xx.xx.xx.xx"
catalina.out显示:

Error: Exception thrown by the agent : java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException: myhostname: myhostname
不确定为什么会在错误消息中重复我的主机名?

顺便说一句,由于我将身份验证设置为false,在jconsole应用程序中,我是将用户名/密码留空还是将其用于登录服务器

  • 如果在“export”语句中使用“\”,请将其删除

  • 要连接到远程java进程,请使用运行java进程(tomcat实例)的服务器的IP地址。当无法确定IP地址时,将引发UnknownHostException,因此另一个选项是将名称-IP地址定义添加到主机文件中


  • 如果要动态获取IP地址,可以尝试:

    IP=`ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'`
    JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.ssl=false  -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=${IP}"
    

    您必须在
    /etc/hosts
    文件中添加与在
    /etc/sysconfig/network
    文件中定义的主机名相同的主机名。
    这就是我解决问题的方法。

    您可以尝试将JAVA\u OPTS中添加的参数添加到CATALINA\u OPTS中。应该是这样的。

    另外,请确保您使用运行tomcat的相同配置文件登录进行设置。

    我找到了解决此问题的方法。 在您的
    catalina.sh
    文件中添加以下内容:

    127.0.0.1 localhost <your_hostname>
    
    JAVA_OPTS=“$JAVA_OPTS-Dcom.sun.management.jmxremote=true-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote=false-Dcom.sun.management.jmxremote.port=7010-Djava.rmi.server.hostname=${IP}”

    同时在
    /etc/init.d/hosts
    文件中添加以下行:

    127.0.0.1 localhost <your_hostname>
    
    127.0.0.1本地主机
    
    这解决了问题。我现在可以在此端口上运行
    jconsole
    以及
    jvisualvm


    我希望这有帮助

    您是否将属性rmi.server.hostname用于其他用途(启用JMX除外)?我正在使用它b/c我认为您需要它来连接到远程服务器。您好@Blankman,如果您认为我的答案解决了您的问题,您能接受我的答案吗?否则,如果你需要进一步的帮助,我很乐意帮助你。