2011-12-22 101 views
3

试图将jconsole连接到远程服务器。无法将jconsole连接到远程服务器,tomcat无法启动

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

+0

您是否使用属性rmi.server.hostname作为其他一些pupose(除了启用JMX)? – Santosh 2011-12-22 06:12:27

+0

我正在使用它b/c我认为你需要它来连接到远程服务器。 – Blankman 2011-12-22 12:15:52

+0

Hi @Blankman, 如果您认为我的答案已解决您的问题,请您接受我的答案?否则我很乐意为您提供帮助,如果您需要任何进一步的帮助。 – 2013-11-28 17:28:19

回答

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

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

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}" 
14

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

+1

为我解决 – Andrejs 2012-12-19 11:50:01

0

您可以尝试将您在JAVA_OPTS中添加的参数添加到CATALINA_OPTS。它应该这样工作。
另外,请确保您正在使用与运行tomcat的位置相同的配置文件登录进行设置。

3

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

JAVA_OPTS =“$ JAVA_OPTS -Dcom.sun.management.jmxremote =真-Dcom.sun.management.jmxremote.ssl =假-Dcom.sun.management.jmxremote .authenticate =假-Dcom.sun.management.jmxremote.port = 7010 -Djava.rmi.server.hostname = $ {} IP”

还要添加下面的行放在/etc/init.d/hosts文件:

127.0.0.1 localhost <your_hostname> 

这解决了这个问题。我现在可以在此端口上运行jconsole以及jvisualvm
我希望这有助于!