首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用jConsole连接远程tomcat JMX实例

使用jConsole连接远程tomcat JMX实例
EN

Stack Overflow用户
提问于 2009-08-12 02:58:51
回答 10查看 85.7K关注 0票数 56

我正在尝试使用jConsole连接到远程tomcat JMX实例。但无法成功连接。有什么想法吗?

我在远程tomcat catalina.sh中包含了以下选项

代码语言:javascript
复制
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote \
    -Dcom.sun.management.jmxremote.port=9004 \
    -Dcom.sun.management.jmxremote.ssl=false \
    -Dcom.sun.management.jmxremote.authenticate=false"
EN

回答 10

Stack Overflow用户

发布于 2009-08-19 14:49:04

我遇到了类似的问题,如果不是相同的话。如果在机器上本地启动jconsole,我就可以连接到JMX服务器。

RMI服务器似乎没有在正确的ip上侦听。因此,按照this related question中的建议,我添加了以下内容:

代码语言:javascript
复制
-Djava.rmi.server.hostname=<host ip>

JAVA_OPTS也是如此,然后它就起作用了。

票数 63
EN

Stack Overflow用户

发布于 2011-07-22 04:26:23

我收集了网上散布的信息,这些信息是通过其他成员的提示找到的。

JMX造成的最大痛苦是(imo),JMX打开了第二个动态分配的网络端口。防火墙(如iptables)将阻止此操作。

linux上tomcat的解决方案:

使用tomcat6.0.24或更新版本从apache tomcat附加软件下载catalina-jmx-remote.jar (使用tomcat下载页面上的浏览),将其复制到$CTALINA_HOME\lib中

这允许您设置JMX使用的两个端口

编辑server.xml中的服务器部分

代码语言:javascript
复制
<Server port="8005" ..>
  ...
  <Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="9840" rmiServerPortPlatform="9841"/>

设置一些环境变量(例如在setenv.sh中)

代码语言:javascript
复制
CATALINA_OPTS="
  -Djava.rmi.server.hostname=IP-TO-LISTEN
  -Dcom.sun.management.jmxremote.password.file=$CATALINA_BASE/conf/jmxremote.password 
  -Dcom.sun.management.jmxremote.access.file=$CATALINA_BASE/conf/jmxremote.access 
  -Dcom.sun.management.jmxremote.ssl=false"

这将激活JMX的访问控制

jmxremote.access将如下所示

代码语言:javascript
复制
monitorRole readonly
controlRole readwrite

end jmxremote.password将为

代码语言:javascript
复制
monitorRole tomcat
controlRole tomcat

(只是简单的空格)

重新启动tomcat。

现在在服务器上配置防火墙(例如iptables)

/etc/sysconfig/iptables

代码语言:javascript
复制
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 9840 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 9841 -j ACCEPT

和/etc/sysconfig/ip6tables

代码语言:javascript
复制
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 9840 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 9841 -j ACCEPT

重新启动iptables

完成了!

现在在您的工作站上使用VisualVM或JConsole建立到我们示例中的rmiRegistryPortPlatform 9840的连接。

如果工作站和服务器之间没有更多的防火墙,它应该可以工作。

票数 36
EN

Stack Overflow用户

发布于 2010-05-20 04:49:21

您使用哪个字符串作为JMX连接url。我不想指出显而易见的事实,但JConsole的界面很糟糕,在我看来,它需要一个过于复杂的url才能连接到远程jmx应用程序。我的是这样的:

代码语言:javascript
复制
service:jmx:rmi:///jndi/rmi://(hostname):(jmxport)/jmxrmi
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1263991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档