JMX:一些入門說明

JMX(Java管理擴展)是一種J2SE技術,可以管理和監視Java應用程序。 基本思想是實現一組管理對象,并將實現注冊到平臺服務器,在平臺服務器上,可以使用一組連接器或適配器從本地或遠程調用這些實現到JVM。
一個管理/儀器對象稱為MBean(代表托管Bean)。 一旦實例化,一個MBean將在平臺MBeanServer上注冊一個唯一的ObjectName。 MBeanServer充當MBean的存儲庫,支持創建,注冊,訪問和刪除MBean。 但是,MBeanServer不會保留MBean信息。 因此,隨著JVM的重新啟動,您將失去其中的所有MBean。 通常可以通過MBeanServerConnection API訪問MBeanServer,該API在本地和遠程均可使用。

MBean的管理接口通常由[1]組成

  • 可以讀取/寫入的命名和類型化屬性
  • 可以調用的命名和類型操作
  • MBean可以發出的類型化通知
例如,說需要在運行時管理一個應用程序的線程池參數。 使用JMX,只需編寫一個具有與設置和獲取這些參數有關的邏輯的MBean,然后將其注冊到MBeanServer。
現在的下一步是將這些mbean暴露給外界,以便遠程客戶端可以調用這些Mbean來管理您的應用程序。 可以通過通過協議連接器和協議適配器實現的各種協議來完成。 協議連接器基本上按原樣公開MBean,以便遠程客戶端看到相同的接口(JMX RMI連接器就是一個很好的例子)。 因此,基本上應該為JMX技術啟用客戶端或遠程管理應用程序。
協議適配器(例如:HTML,SNMP)根據客戶端期望的協議調整結果(例如:對于基于瀏覽器的客戶端,通過HTTP以HTML格式發送結果)。
現在,MBean已正確暴露在外部,我們需要一些客戶端來訪問這些MBean以管理我們的應用程序。 根據客戶使用連接器還是適配器,基本上有兩類可用。
JMX客戶端使用JMX API連接到MBeanServer并調用MBean。 通常,JMX客戶端使用MBeanServerConnection連接到MBeanServer,并通過提供MBean ID(對象名稱)和必需的參數來通過MBean Server調用MBean。 基本上有三種類型的JMX客戶端。
本地JMX客戶端 :與MBeanServer在同一JVM中運行的客戶端。 這些客戶端也可以在內部運行,因此也可以使用MBeanServer API本身
相同的JVM。
代理 :代理是本地JMX客戶端,它管理MBeanServer本身。 請記住,MBeanServer不會保留MBean信息。 因此,我們可以使用代理提供此邏輯,該邏輯將使用其他功能封裝MBeanServer。 因此,代理負責初始化和管理MBeanServer本身。
遠程JMX客戶端 :遠程客戶端與本地客戶端的不同之處僅在于,它需要實例化連接器以連接到連接器服務器,以獲得MBeanServerConnection。 顧名思義,它們當然會在遠程JVM中運行。
客戶端的另一種類型是管理客戶端,它使用協議適配器連接到MBeanServer。 為了使它們起作用,應存在相應的適配器并在要管理的JVM中運行它們。 例如,HTML適配器應存在于JVM中,以使基于瀏覽器的客戶端連接到它以調用MBean。

下圖總結了到目前為止描述的概念。

我在JMX上的快速筆記到此結束。 可以在[2]中找到關于JMX主要概念的非常好的閱讀。 同樣,Oracle上的JMX學習資源也是獲得JMX的良好起點。
[1] http://docs.oracle.com/javase/6/docs/technotes/guides/jmx/overview/instrumentation.html#wp998816
[2] http://pub.admc.com/howtos/jmx/architecture-chapt.html

參考: JMX:來自Source Open博客的JCG合作伙伴 Buddhika Chamith的一些入門說明 。


翻譯自: https://www.javacodegeeks.com/2012/06/jmx-some-introductory-notes.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372307.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372307.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372307.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

解釋java程序中的異常機制_Java編程中的異常機制

本文旨在以初學者的角度來學習Java異常的知識,盡量簡單,一些細枝末節的知識不會講述,但不影響對知識的掌握。(比如try-catch可以嵌套,不太會這么用)1.什么是異常我們先舉個例子int x 10/0;在IDE里輸入這樣…

keras做多層神經網絡

一、 背景與目的 背景:配置好了theano,弄了gpu, 要學dnn方法。 目的:本篇學習keras基本用法, 學習怎么用keras寫mlp,學keras搞文本的基本要點。 二、 準備 工具包: theano、numpy、keras等工具包…

配置環境變量

由于寫了一個關于生成簽名需要配置環境變量,所以在這里順便把配置環境變量的步驟說一下 1.右鍵點擊計算機,然后點擊高級系統設置 2.點擊環境變量,下方出現的即為系統變量,雙擊path就能直接修改, 轉載于:https://www.cn…

使用JavaFX AnimationTimer

回想一下,給AnimationTimer起個名字可能不是一個好主意,因為它不僅可以用于動畫,還可以用于測量:fps速率,碰撞檢測,模擬步驟,游戲主循環等實際上,大部分時間我都看到了AnimationTime…

python列表姓氏_python數據分析實例(六) 中國姓氏數據

bokeh聯動柱狀圖,Excel空間柱狀圖、空間熱力圖,Echarts空間柱狀圖,常用函數:df[工作地_省] df[工作地].str.split(省).str[0]df[工作地_市] df[工作地_市] df[工作地].str.split(省).str[1].str.split(市).str[0]df[工作地_市][…

JavaFX 2 GameTutorial第3部分

介紹 ?他是與一個六個部分組成的系列的第3部分的JavaFX 2游戲教程。 如果您錯過了第1部分和第2部分 ,建議您在開始本教程之前先進行閱讀。 回顧第二部分,我討論了游戲循環的內部工作原理,其中我們使用動畫(JavaFX Timeline &…

Selenium WebDriver + python 自動化測試框架

目標 組內任何人都可以進行自動化測試用例的編寫 完全分離測試用例和自動化測試代碼,就像寫手工測試用例一下,編寫excel格式的測試用例,包括步驟、檢查點,然后執行自動化工程,即可執行功能自動化測試用例,包…

mysql游戲減少積分活動圖_plantuml-繪制狀態圖和活動圖和部署圖?

背景狀態圖:對象的所有狀態,以及基于事件發生的狀態改變的過程;活動圖:用例的工作流程;部署圖:系統的軟硬件物理體系結構;狀態圖基本語法元素語法說明開始和結束狀態[*]標識開始和結束狀態箭頭-…

windows中當你的鍵盤無法使用時我們可以用另一種方法哦

1.使用WinR打開cmd窗口 2.輸入osk回車就出現了一個虛擬的小鍵盤啦,當你的鍵盤壞掉后非常實用哦 轉載于:https://www.cnblogs.com/qianzf/p/6780496.html

python web.py 404_找不到web.py開發服務器-favicon.ico-404

py API文檔引用了一個“web.SEE OTHER()”函數,該函數生成一個303 SEE OTHER響應,將瀏覽器重定向到另一個位置。(請參見http://webpy.org/docs/0.3/api#web.application)這是一個服務器端的解決方案,它不需要在html文件中更改頭;如…

NetBeans 7.2引入了TestNG

代碼生成的優點之一是能夠查看如何使用特定的語言功能或框架。 正如我在《 NetBeans 7.2 beta:更快,更有用》一文中所討論的那樣, NetBeans 7.2 beta提供了TestNG集成 。 除了對該功能的單一引用之外,我在該帖子中沒有進一步闡述&…

Javascript模塊化編程(三):require.js的用法

一、為什么要用require.js? 最早的時候,所有Javascript代碼都寫在一個文件里面,只要加載這一個文件就夠了。后來,代碼越來越多,一個文件不夠了,必須分成多個文件,依次加載。下面的網頁代碼&…

[KISSY5系列]淘寶全終端框架 KISSY 5--從零開始使用

KISSY 是淘寶一個開源的 JavaScript 庫,包含的組件有:日歷、圖片放大鏡、卡片切換、彈出窗口、輸入建議等 一、簡介 KISSY 是一款跨終端、模塊化、高性能、使用簡單的 JavaScript 框架。 除了完備的工具集合如 DOM、Event、Ajax、Anim 等它還提供了經典的…

幾萬條數據的excel導入到mysql_【記錄】2萬多條數據的Excel表格數據導入mysql數據庫...

主題剛開始的時候做了兩個小方案!第一個是直接Excel處理完導入,但是這個導入的話雖然簡單出錯率很大!第二個是想直接用php做個小程序直接導入數據,但是想了想2萬條數據處理,百分之百瀏覽器會一直轉,最后不知…

JDeveloper中的Java反編譯器

Java Decompiler是一個獨立的圖形實用程序,顯示“ .class”文件的Java源代碼。 下面是Java Decompiler程序的快照 您可以從這里下載該程序 我將說明如何將此程序用作Jdeveloper中的外部工具 Java Decompiler和Jdeveloper之間的集成 您可以將此程序添加到Jdevelo…

NGUI學習隨筆

一、NGUI的直接用法 1. Attach a Collider:表示為NGUI的某些物體添加碰撞器,如果界面是用NGUI做的,只能這樣添加。(注:用Component添加無效)。2. Attach an Anchor:表示為該物體添加了…

Git 修改源地址

git remote set-url origin http://git.xxx.com/xxx/repo.git 轉載于:https://www.cnblogs.com/savokiss/p/5892543.html

mysql主從進行擴展_MySQL 主從擴展

MySQL 主從擴展常見問題排查1. 數據不一致:SHOW SLAVE STATUS \G;Last_Errno:1062Last_Error:ErrorDuplicate entryxxxn-66-77for key1on query.Defaultdatabase:guild.Query:insert into pynpcrecord setMapCode xxxn, UpdateTime 2015-08-0700:00:32解決方法: 在從庫上將重復…

JRockit – JRCMD有用的命令

自2007年以來,我一直在使用JRockit。我發現它比Hotspot速度慢,但在診斷和分析問題上總是更好。 從去年夏天開始,我一直在為一家國際電信系統供應商工作。 我們在HP OpenCall Convergent Communication Platform之上為電信運營商設計和實施各種…

Spark Streaming整合logstash + Kafka wordCount

1、安裝logstash,直接解壓即可 測試logstash是否可以正常運行 bin/logstash -e input { stdin { } } output { stdout {codec > rubydebug } } 只獲取消息 bin/logstash -e input { stdin { } } output { stdout {codec > plain { format > "%{messag…