2011-02-24 77 views
13

JMX用於什麼目的?我一直在瀏覽關於JMX的一些教程,他們所做的只是註冊一些Mbeans並從jconsole調用這些Mbeans。如果這是它的用途,那麼JMX和RMI(遠程過程調用)有什麼區別。 在此先感謝..JMX和RMI之間的區別

回答

8

「遠程過程調用」是一種分佈式計算概念,其中在一臺主機上運行的進程可以調用另一臺遠程主機上的過程。 Java中的RMI是這個概念的一個實現。

MBeans是可以在JMX總線上註冊的bean類,用於監聽到達總線上的事件或在總線上發送事件或從其他參與的Mbeans等收集各種數據。它是最常用的用於應用服務器的健康監控等。它可以檢查活動連接的數量,可用內存的數量以及許多其他統計信息到分析引擎。是的,他們可以使用RPC機制遠程調用。這對於其作爲數據收集器的功能至關重要,因爲在應用服務器集羣中必須從所有收集器中提取數據並整理在一個地方進行分析。

+0

感謝您的回覆。更多相關問題,我們不能使用RMI來達到同樣的目的嗎? – hnm 2011-02-24 05:55:33

+2

@hnm:RMI處理遠程調用方法,僅此而已。即,它給你一個存根類序列化的輸入參數,編碼該呼叫爲數據,通過線路,其中一個服務器端的實體,稱爲骨架獲取數據發送該數據,對其進行解碼以瞭解在其上調用該方法在服務器端進程並進行調用。一旦調用完成,輸出參數或異常將被骨架序列化併發送回存根,再次將其反序列化以將其返回給調用程序。它只是一個遠程調用的機制。 – rahulmohan 2011-02-24 06:26:23

+0

@hnm :(繼續)MBean是與正在監視的應用程序進行交互的特殊類,並提供了檢索數據的方法。這些方法可以在理論上被稱爲使用RMI。但是JMX機制提供了更好的方式來做同樣的事情。 – rahulmohan 2011-02-24 06:35:29

5

JMX是一個通用API,用於發佈監視Java應用程序(SNMP版本)的內部接口。

RMI用於遠程方法調用遠程過程調用接口的Java特定實現,它們根本不相關。

14

JMX architecture.

是在JMX我們註冊使用ObjectNameobjectReference我們在MBean服務器對象。然後,我們可以遠程更改屬性或調用方法。

連接器使基於遠程Java技術的客戶端可以訪問Java管理擴展(JMX)技術MBean服務器。許多不同的連接器實現都是可能的。具體地,存在用於用來在由JMX遠程API規範中定義的客戶機和連接器server.Some之間的連接通信的協議的許多可能性是

  • RMI連接」:這個標準遠程方法調用( RMI)協議必須得到每個符合JMX Remote API標準的實現的支持。
  • 通用連接器」:JMX Remote API標準還定義了一個基於TCP套接字的可選協議,稱爲JMX消息傳遞協議(JMXMP)。該標準的實現可以省略JMXMP連接器,但不能省略RMI連接器。 Java SE平臺不包含可選的JMXMP連接器。
  • 用戶定義協議」:連接器還可以實現未在JMX技術中定義的協議。

如果看一下上述結構的連接器提供了使用各種通信框架(RMI, IIOP, JMS, WS-* …)在MBeanServer API完全的遠程訪問,而適配器適應API到另一協議(SNMP, …),或基於網絡的GUI (HTML/HTTP, WML/HTTP, …).

通常我們使用JMX連接器連接到MBean服務器,但我們也可以選擇其他連接器。

綜上所述JMX是一個Java技術和RMI爲遠程方法調用一個Java具體實現可在JMX用於遠程通信的遠程過程調用接口。

+0

這比接受的答案好多了...... – 2018-03-05 21:12:40