1

我们使用 Embedded Jetty 作为在端口 8080 上运行的网络服务器,并希望监控 Jconsole 上的应用程序。在启动特定于 JMX 的 Jetty 服务器时,我们使用以下系统属性:

-Dcom.sun.management.jmxremote.access.file=jmxremote.access  
-Dcom.sun.management.jmxremote.password.file=jmxremote.password   
-Dcom.sun.management.jmxremote   
-Dcom.sun.management.jmxremote.authenticate=true   
-Dcom.sun.management.jmxremote.ssl=false   
-Dcom.sun.management.jmxremote.port=8081  

虽然 JMX 和 Webserver 运行在两个不同的端口上,但客户端是否可以通过 Jconsole/JvisualVM 使用端口 8080 访问 JMX?无论如何,JMX 代理会帮助我吗?有没有可能?

提前致谢。

阿杰

4

2 回答 2

1

不是没有一些努力。简而言之,一个端口上只能有一个服务器(或相反:服务器不能共享一个端口)。

如果 JMX 支持 HTTP 请求,那么您可以在同一 HTTP 服务器上将其作为 servlet 运行。将有一个端口(由 HTTP 服务器使用),然后 HTTP URL 将允许服务器确定客户端是想与 JMX 还是 Web 应用程序通信。

但是 JMX 不直接支持 HTTP 请求。您可以尝试Jolokia请参阅此问题),或者您可以编写允许客户端查询某些 mbean(但没有 JMX 协议)的 servlet。

于 2013-08-20T12:29:55.903 回答
0

JMX规范有Connector可以使用任何协议作为传输,请参阅http://en.wikipedia.org/wiki/File:Jmxarchitecture.png

于 2013-08-20T12:52:46.923 回答