通過mbean的定義可以在系統執行時,檢視系統內部的資料或執行系統內部的功能,真正的使用過程中靜態mbean的使用是最多的。
定義的mbean必須實現以類名+mbean的介面如下所示定義了乙個mbean結構shardinfo,所以為了使shardinfo能夠註冊進mbeanserver中,需要定義介面shardinfombean,並實現。
@getter
@setter
public
class
shardinfo
extends
abstractmxbean
implements
shardinfombean
}
而mbeanname/mbeantype/mbeancategory主要是對mbean進行分類,對應效果如圖:
實現的xxmbean介面中,以getxx方法確定可以查詢的字段
public
inte***ce
shardinfombean
如上面**所示,顯示的字段為shardname。
可以觸發方法,也是xxmbean介面中定義的方法,實現即為mbean中對應的實現新增printshardname方法與實現
手動觸發該方法:
方法執行完成:
從上文已經知道對於靜態mbean如何定義,通過jdk自帶的managementfactory可以完成mbean的註冊。核心邏輯如下所示:
private
boolean
registermbean()
", mbeanname)
;// unregistered if already registered
if(server.
isregistered
(mbeanname)
) found to be already registered"
, mbeanname)
;try
catch
(exception e)
resulted in exception {} "
, mbeanname, e);}
} server.
registermbean
(this
, mbeanname)
; registered =
true
; log.
debug
("mbean {} registered successfully"
, mbeanname.
getcanonicalname()
);}catch
(exception e)
return registered;
}
其中server是固定的:
private final mbeanserver server = managementfactory.getplatformmbeanserver();
mbeanname全路徑名稱格式為base_jmx_prefix:type=xx,catagory=xx,name=xx具體拼接**為:
private objectname getmbeanobjectname()
throws malformedobjectnameexception
builder.
(",name=").
(getmbeanname()
);return
newobjectname
(builder.
tostring());}
mbeanserver server = managementfactory.
getplatformmbeanserver()
;@test
public
void
testgetshardinfombean()
throws malformedobjectnameexception, introspectionexception, instancenotfoundexception, reflectionexception, attributenotfoundexception, mbeanexception
目前考慮有下列兩個方法:
開發mbean上的相關註解,觸發在編譯期其注入方法至介面類中
使用動態mbean實現
CASpringAnimation使用和屬性解析
caspringanimation ios9 才引入的動畫類,它繼承於 cabaseanimation 用於製作彈簧動畫效果。首先來看乙個簡單的例子,鐘擺 如果沒有阻力,將一直搖擺下去,如下圖 如果是無摩擦力情況下,那麼就會類似於下圖的運動軌跡 在真實的世界中,系統將由於摩擦力的存在而缺少動力並最終...
mac使用和linux命令使用
command n快速開啟當前 1.cd 你的資料夾路徑的上一級目錄。2.sudo chmod r 777 你的資料夾名。3.輸入密碼。4.成功which git ren png jpg 重新命名檔案 touch nash 建立檔案 cp test test2 複製檔案 cp rv textcopt...
何時使用和不使用BBR
tcp bbr bottleneck bandwidth and round trip propagation time 是由google設計,並於2016年發布的擁塞演算法,以往大部分擁塞演算法是基於丟包來作為降低傳輸速率的訊號,而bbr基於模型主動探測。不過,在具體談論應該bbr合適的應用場景之...