我收集了通过网络传播的信息,并从其他成员那里找到了提示。
JMX引起的大多数痛苦是(imo)JMX打开第二个动态分配的网络端口的事实。防火墙(如iptables)将阻止此操作。
Linux上的tomcat解决方案:
使用tomcat 6.0.24或更新的下载catalina-jmx-remote.jar从apache tomcat extras(在tomcat下载页面上使用浏览)将其复制到$CTALINA_HOME\lib
这允许您设置 JMX 使用的两个端口
编辑服务器部分中的服务器部分.xml
<Server port="8005" ..>
...
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="9840" rmiServerPortPlatform="9841"/>
设置一些环境变量(例如,在 setenv.sh 中)
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 将看起来像
monitorRole readonly
controlRole readwrite
end jmxremote.password 將是
monitorRole tomcat
controlRole tomcat
(只是简单的空格)
重新启动雄猫。
现在在服务器上配置防火墙(例如 iptables)
/etc/sysconfig/iptables
-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
-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(在我们的示例中)的连接。
如果工作站和服务器之间不再有防火墙,它应该可以正常工作。