在JConsole和VisualVM中查看DiagnosticCommandMBean
我已經(jīng)將JConsole用作合適的通用JMX客戶端已有很多年了。 該工具通常隨Oracle JDK一起提供,并且易于使用。 在JMX交互方面,JConsole優(yōu)于VisualVM的最大優(yōu)點是JConsole帶有內置的MBeans選項卡,而必須為VisualVM中的相同功能應用插件。 但是,正如我在從JConsole到VisualVM的博客文章中所解釋的那樣,該插件易于安裝。 在本文中,我將研究帶有MBeans插件的VisualVM優(yōu)于JConsole,它具有內置的MBeans支持: DiagnosticCommandMBean 。 我正在使用Oracle JDK(Java 8)隨附的JConsole和VisualVM版本。
接下來的三個屏幕快照演示了通過JConsole訪問DiagnosticCommandMBean操作。 第一個圖像顯示有關DiagnosticCommandMBean詳細信息,例如其ObjectName ( com.sun.management:type=DiagnosticCommand )。 第二幅圖像說明JConsole允許用戶通過單擊操作的“ vmSystemProperties”按鈕來查看VM的系統(tǒng)屬性。 第三個圖像演示了無法從JConsole調用DiagnosticCommandMBean某些操作(在本例中為“ help”)。
如最后顯示的圖像所示,某些MBean操作被禁用。 這樣做的原因是,如StackOverflow所述 ,“它們僅對采用簡單類型的操作啟用。” Andreas Veithen對此進行了詳細說明 :“ JConsole [only]允許調用僅具有簡單類型參數(shù)的方法。 這包括原始類型,原始類型的包裝器類和字符串。 帶有其他類型參數(shù)的方法無法調用,因為JConsole不知道如何構造這些類型的實例。”
幸運的是,VisualVM的MBeans插件確實支持針對DiagnosticCommandMBean的處理更復雜數(shù)據(jù)類型的操作。 通過VISUALVM-574 (“在MBeans插件中添加對DiagnosticCommandMBean的支持”)明確添加了此支持。 下一個屏幕快照描述了有關此插件的基本背景信息,可在VisualVM中通過單擊工具->插件->可用插件-> VisualVM-MBeans獲得。
下載并安裝VisualVM-MBeans插件后,VisualVM將對DiagnosticCommandMBean進行所有操作,如以下三個屏幕快照所示。 第一張圖片顯示所有操作均未“灰顯”。 第二張和第三張圖片顯示“系統(tǒng)屬性”和“幫助操作”均受支持。
在上面調用“ help”的示例中,我沒有向其傳遞任何參數(shù),因此在沒有任何其他參數(shù)的情況下調用“ help”并返回給定Java進程可用的jcmd命令選項列表時,它的行為與jcmd完全相同。 下一個屏幕快照描述了這是如何工作類似于jcmd當我提供這些命令的名字之一,“幫助”操作參數(shù)(獲取幫助的VM.uptime在這種情況下)。
“ JDK 8中的工具增強功能”頁面說明DiagnosticCommandMBean通過編程方式和遠程方式使jcmd功能可用:“ JDK 8提供了對以前只能通過jcmd工具在本地訪問的診斷命令的遠程訪問。 使用Java管理擴展(JMX)提供了遠程訪問,因此診斷命令將公開給注冊到平臺MBean服務器的平臺MBean。 MBean是com.sun.management.DiagnosticCommandMBean接口。” 用于JConsole / MBeans支持的VisualVM插件使用圖形VisualVM工具的行為類似于從命令行使用jcmd 。
這篇文章證明了DiagnosticCommandMBean提供對jcmd提供的相同數(shù)據(jù)的訪問,以進行遠程和編程訪問,并且VisualVM提供了有用的圖形界面,可通過VisualVM-MBeans插件利用DiagnosticCommandMBean 。
翻譯自: https://www.javacodegeeks.com/2016/03/looking-diagnosticcommandmbean-jconsole-visualvm.html
總結
以上是生活随笔為你收集整理的在JConsole和VisualVM中查看DiagnosticCommandMBean的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ddos监测(承载网ddos检测)
- 下一篇: junit rule_Tomcat上下文