2013-08-27 55 views
2

我目前正在構建一個基於JMX的監視工具。要被監控的系統已經以發佈/訂閱方式公開了一些KPI,即,自定義編碼的監控客戶端可以連接到系統,激活並訂閱這樣的KPI,並且系統在新的KPI值可用時立即通知客戶端。由於這些KPI的評估可能在計算上很昂貴,因此只評估至少具有訂閱客戶端的那些KPI。JMX連接和會話處理

我現在的任務是擴展提供基於JMX和JMX通知的監視服務器的系統,以便任何JMX客戶端都可以激活,訂閱和接收這些KPI。

我面臨的問題是:每個連接的客戶端都會在客戶端會話完成或因連接丟失而失敗時立即清除服務器上的某些狀態(即激活KPI並註冊一些偵聽器)。

關於會話的JMX specification國章13.1:

環節有客戶端上的狀態,尤其是它的聽衆(見13.4 208頁的「添加 遠程監聽器」)。會話不一定在 服務器上有狀態,對於本規範定義的兩個連接器,它不會。

有誰知道JMXConnectorServer實現允許保持某些會話狀態嗎?任何代碼示例,教程或指導實施這樣的服務器也將不勝感激。

+0

可能不是相關的,但你可以超時的訂閱?假設某種類型的最小刷新時間並分叉一個線程,它可以引導您的訂閱並刪除那些過時的訂閱。 – Gray

回答

0

也許你可以有一個像clientId的東西,當你註冊監聽器的時候,你把clientId作爲參數,所以服務器會有一些客戶端信息。

當客戶端輕輕關閉時,它可以調用JMX服務器清除偵聽器的方法,或者如果客戶端丟失連接並且無法平緩關閉,則可以在客戶端上擁有監視線程註冊誰正在監聽和關閉,並在必要時通知JMX服務器。