无法连接jconsole到远程服务器,tomcat启动失败

4

尝试将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应用程序中,我是将用户名/密码留空还是用于登录服务器?


你是否在使用属性rmi.server.hostname来实现其他目的(除了启用JMX)? - Santosh
我正在使用它,因为我认为你需要它来连接到远程服务器。 - Blankman
嗨@Blankman, 如果您认为我的答案解决了您的问题,能否请您接受我的答案?否则,如果您需要进一步的帮助,我很乐意为您提供协助。 - Aamir Yaseen
5个回答

14

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


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

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=7010 -Djava.rmi.server.hostname=${IP}"

同时,在您的/etc/init.d/hosts文件中添加以下行:
127.0.0.1 localhost <your_hostname>

问题已经解决。我现在可以在该端口上运行 jconsolejvisualvm 了。
希望这可以帮到你!


2
如果您想动态获取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}"

1
  1. 如果在您的“export”语句中使用了“\”,请将其删除。

  2. 要连接到远程Java进程,请使用运行Java进程(Tomcat实例)的服务器的IP地址。当无法确定IP地址时,会抛出UnknownHostException异常,因此另一种选择是将名称-IP地址定义添加到您的主机文件中。


0
您可以尝试将您在 JAVA_OPTS 中添加的参数添加到 CATALINA_OPTS 中。这样应该可以正常工作。
同时确保您使用与运行 Tomcat 的配置文件登录相同的配置文件进行设置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接