为Server和远程JMX bean使用相同的端口

时间:2013-08-20 12:05:13

标签: java spring jetty jmx jconsole

我们使用Embedded Jetty作为在端口8080上运行的Web服务器,并希望监视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在两个不同的端口上运行,但客户端是否有办法通过端口8080通过Jconsole / JvisualVM访问JMX? JMX代理是否会帮助我?有可能吗?

提前致谢。

的Ajay

2 个答案:

答案 0 :(得分:1)

不是没有一点努力。简而言之,在一个端口上总是只能有一个服务器(或者反过来说:服务器不能共享一个端口)。

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

但JMX不直接支持HTTP请求。您可以尝试Jolokiasee this question),也可以编写servlet,允许客户端查询某些mbeans(但不使用JMX协议)。

答案 1 :(得分:0)

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