java - 在 Windows 上使用 JDK 1.4 监控 Tomcat 5.5

标签 java tomcat jmx jdk1.4

根据本文档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) 以来,JMX 支持已添加到 Java 中。要将它与 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 Technology Implementations

The Java 2 Platform, Standard Edition 5.0 (J2SE 5.0) supports JMX 1.2 and JMX Remote API 1.0, which is now the official JMX reference implementation (RI). For developers who are running J2SE 1.4, a JMX RI is also available from Sun Microsystems, and can be downloaded free of charge.

要从外面连接,尽量去掉线

-Djava.rmi.server.hostname=localhost

如果您使用的是 Linux,请按照@vinothkr 所说的本地主机解决 JMX 远程连接问题(文件/etc/hosts,将 127.0.0.1 替换为服务器主机名所在行的服务器 IP)。对于 Windows,我认为同样的事情也适用。

关于连接器,它是您阅读的文档中 jmx 远程端口上的连接器。您在协议(protocol) AJP/1.3 上的 server.xml 上设置的连接器不相关。它涉及 Apache HTTPd(或其他 Web 服务器/负载平衡器)和 Tomcat 之间的通信。

关于java - 在 Windows 上使用 JDK 1.4 监控 Tomcat 5.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3462354/

相关文章:

Tomcat 和 java.net.ServerSockets

java - 异常无法在 JMX 服务器中绑定(bind) URL

java - 为什么 jmx 中的 G1 Old gen 最大内存等于最大堆大小?

java - 使用条件表达式提升数值类型

java - 在 spring boot 中添加外部静态文件(css、js、png ...)

java - 数据库忽略列中具有相同值的行 - Android

java - JMX 监控 EhCache Server MBean

java - 如何阻止 Eclipse 格式化程序在 Javadoc 中添加尾随空格

linux - 为什么 Mule 应用程序在 Linux 服务器中表现异常?