2013-08-20 20 views
1

我们使用Embedded Jetty作为运行在端口8080上的Web服务器,并且希望监视Jconsole上的应用程序。开始具体到JMX Jetty服务器时,我们使用下面的系统属性:对服务器和远程JMX bean使用相同的端口

-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和Web服务器在两个不同端口上运行,是有客户端的方式使用端口通过的JConsole/JvisualVM访问JMX 8080?无论如何,JMX Proxy会帮助我吗?它有可能以任何方式?

在此先感谢。

Ajay

回答

1

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

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

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

+0

由于亚伦。我不能做类似服务器内的重定向,所以用户(使用url的服务Jconsole用户:jmx:rmi:/// jndi/rmi:// host:8080/jmxrmi)仍然可以看到他们使用的端口是8080,而内部应用程序计算出实际的端口,即客户8081,并做需要? –

+0

正如我在答复中所说的,Jolokia为你做到了这一点。 –

相关问题