2013-08-20 63 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爲你做到了這一點。 –

相關問題