根据这个文档http://tomcat.apache.org/tomcat-5.5-doc/monitoring.html#Enabling_JMX_Remote应该可以远程监控在 JDK 1.4 上运行的 Tomcat 5.5 服务器,但在搜索了整个网络并尝试了多个操作系统之后,我仍然没有比第一天更进一步。
到目前为止我的结果是。使用标准设置 Tomcat
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=%my.jmx.port%
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=localhost
在 JDK 1.5 及更高版本上可以正常工作。
调试 Tomcat 使我可以访问 MBeanServer,但无法从外部连接到它。根据维基百科的信息http://en.wikipedia.org/wiki/Java_Management_Extensions我只需要一个工作连接器,但我不知道如何让它工作。
尝试根据以下内容设置 HTTP 适配器
<Connector port="${AJP.PORT}"
handler.list="mx"
mx.enabled="true"
mx.httpHost="${JMX.HOST}"
mx.httpPort="${JMX.PORT}"
protocol="AJP/1.3" />
完全没有效果。当我调试时,看起来属性 handler.list 和 mx.* 几乎被忽略了。我知道我应该只使用 JDK 1.5,这样我的担忧就会消失,但我们有大量 JDK 1.4 的遗留安装基础,如果我们可以使用 JMX 监控,那就太好了。
最终我想使用 JConsole 或 JVisualVM 连接到 Tomcat,据我所知,连接 URL 看起来像
service:jmx:rmi:///jndi/rmi://localhost:8888/jmxrmi
8888 是我的 JMX 端口。
如果有人对如何深入问题的根源有一些建议或想法,那将非常有帮助。
从 1.5 (JDK5) 开始,Java 中就添加了 JMX 支持。要与 JDK 1.4 一起使用,必须下载并安装扩展http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement/download.jsp。我没有使用它,但这将是一个起点(从http://java.sun.com/developer/technicalArticles/J2SE/jmx.html )
JMX技术实现
Java 2 Platform, Standard Edition 5.0 (J2SE 5.0) 支持 JMX 1.2 和 JMX Remote API 1.0,后者现在是官方 JMX 参考实现 (RI)。对于运行 J2SE 1.4 的开发人员,Sun Microsystems 还提供 JMX RI,并且可以免费下载。
要从外部连接,请尝试移除线路
-Djava.rmi.server.hostname=localhost
如果您使用的是 Linux,请像 @vinothkr 所说的那样,解决 localhost 上的 JMX 远程连接问题(文件 /etc/hosts,将 127.0.0.1 替换为服务器主机名出现的行上的服务器 IP)。对于 Windows,我认为同样的事情也适用。
关于连接器,它是您阅读的文档上的jmx远程端口上的连接器。您在协议 AJP/1.3 上的 server.xml 上设置的连接器不相关。它涉及 Apache HTTPd(或其他 Web 服务器/负载均衡器)和 Tomcat 之间的通信。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)