电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java Management Extensions管理擴展原理解析

瀏覽:147日期:2022-09-03 10:47:55

所謂JMX,是Java Management Extensions(Java管理擴展)的縮寫,是一個為應用程序植入管理功能的框架。用戶可以在任何Java應用程序中使用這些代理和服務實現管理。

一、JMX架構圖

Java Management Extensions管理擴展原理解析

從圖中我們可以看到,JMX的結構一共分為三層:

1、 基礎層:主要是Mbean,被管理的java bean

Mbean分為如下四中

類型 描述 standard MBean 這種類型的MBean最簡單,它能管理的資源(包括屬性,方法,時間)必須定義在接口中,然后MBean必須實現這個接口。它的命名也必須遵循一定的規范,例如我們的MBean為Hello,則接口必須為HelloMBean。 dynamic MBean 必須實現javax.management.DynamicMBean接口,所有的屬性,方法都在運行時定義 model MBean 與標準和動態MBean相比,你可以不用寫MBean類,只需使用javax.management.modelmbean.RequiredModelMBean即可。RequiredModelMBean實現了ModelMBean接口,而ModelMBean擴展了DynamicMBean接口,因此與DynamicMBean相似,Model MBean的管理資源也是在運行時定義的。與DynamicMBean不同的是,DynamicMBean管理的資源一般定義在DynamicMBean中(運行時才決定管理那些資源),而model MBean管理的資源并不在MBean中,而是在外部(通常是一個類),只有在運行時,才通過set方法將其加入到model MBean中。

2、適配層:MbeanServer,提供對資源的注冊和管理

3、接入層: 提供遠程訪問的入口

二、standard MBean演示

1、根據standard MBean的要求,我們首先要定義一個MBean接口,接口的命名規范以具體的實現類為前綴,為了后續可以注冊到

MBean Server中

package jmx;public interface HelloMBean{ public String getName(); public void setName(String name); public String getAge(); public void setAge(String age); public void helloWorld(); public void helloWorld(String str); public void getTelephone();}

2、定義一個實現類

package jmx;/* * 該類名稱必須與實現的接口的前綴保持一致(即MBean前面的名稱 */public class Hello implements HelloMBean{ private String name; private String age; public void getTelephone() { System.out.println('get Telephone'); } public void helloWorld() { System.out.println('hello world'); } public void helloWorld(String str) { System.out.println('helloWorld:' + str); } public String getName() { System.out.println('get name 123'); return name; } public void setName(String name) { System.out.println('set name 123'); this.name = name; } public String getAge() { System.out.println('get age 123'); return age; } public void setAge(String age) { System.out.println('set age 123'); this.age = age; } }

3、定義agent層

package jmx;import java.lang.management.ManagementFactory;import javax.management.JMException;import javax.management.MBeanServer;import javax.management.ObjectName;public class HelloAgent{ public static void main(String[] args) throws JMException, Exception { MBeanServer server = ManagementFactory.getPlatformMBeanServer(); ObjectName helloName = new ObjectName('jmxBean:name=hello'); //create mbean and register mbean server.registerMBean(new Hello(), helloName); Thread.sleep(60*60*1000); }}

1、 通過工廠類獲取Mbean Server,用來做Mbean的容器

2、 ObjectName的取名規范:域名:name=Mbean名稱,其中域名和Mbean的名稱可以任取。這樣定義后,我們可以唯一標示我們定義的這個Mbean的實現類了

3、最后將Hello這個類注冊到MbeanServer中,注入需要創建一個ObjectName類,我們可以用jdk自帶的Jconsole用來觀察,可以設置屬性值和調用相關方法。

三、Notification

MBean之間的通信是必不可少的,Notification起到了在MBean之間溝通橋梁的作用。JMX 的通知由四部分組成:

1、Notification這個相當于一個信息包,封裝了需要傳遞的信息

2、Notification broadcaster這個相當于一個廣播器,把消息廣播出。

3、Notification listener 這是一個監聽器,用于監聽廣播出來的通知信息。

4、Notification filiter 這個一個過濾器,過濾掉不需要的通知。這個一般很少使用。保留Hello及HelloMBean,增加如下

package jmx;public interface JackMBean{ public void hi();}

package jmx;import javax.management.Notification;import javax.management.NotificationBroadcasterSupport;public class Jack extends NotificationBroadcasterSupport implements JackMBean{ private int seq = 0; public void hi() { //創建一個信息包 Notification notify = //通知名稱;誰發起的通知;序列號;發起通知時間;發送的消息 new Notification('jack.hi',this,++seq,System.currentTimeMillis(),'jack'); sendNotification(notify); }}

這里的類Jack不僅實現了MBean接口,還繼承了NotificationBroadcasterSupport。jack在這里創建并發送了一個消息包。

package jmx;import javax.management.Notification;import javax.management.NotificationListener;public class HelloListener implements NotificationListener{ public void handleNotification(Notification notification, Object handback) { if(handback instanceof Hello) { Hello hello = (Hello)handback; hello.printHello(notification.getMessage()); } }}

對HelloAgent做以下修改

package jmx;import java.lang.management.ManagementFactory;import javax.management.JMException;import javax.management.MBeanServer;import javax.management.ObjectName;public class HelloAgent{ public static void main(String[] args) throws JMException, Exception { MBeanServer server = ManagementFactory.getPlatformMBeanServer(); ObjectName helloName = new ObjectName('yunge:name=Hello'); Hello hello=new Hello(); server.registerMBean(hello, helloName); Jack jack = new Jack(); server.registerMBean(jack, new ObjectName('jack:name=Jack')); jack.addNotificationListener(new HelloListener(), null, hello); Thread.sleep(500000); }}

我們利用jconsole調用jack的hi方法,這里當jack發出消息后,Notification被廣播至所有的MBean,當有MBean屬于Hello類時則調用Hello的printHello()方法。

四、JMX的應用

在linux下利用jmx監控Tomcat,在catlina.sh中進行一些環境變零的配置

配置 功能 Dcom.sun.management.jmxremote=true 相關 JMX 代理偵聽開關 Djava.rmi.server.hostname 服務器端的IP Dcom.sun.management.jmxremote.port=29094 相關 JMX 代理偵聽請求的端口 Dcom.sun.management.jmxremote.ssl=false 指定是否使用 SSL 通訊 Dcom.sun.management.jmxremote.authenticate=false 指定是否需要密碼驗證

Java Management Extensions管理擴展原理解析

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 上海恒驭仪器有限公司-实验室平板硫化机-小型平板硫化机-全自动平板硫化机 | 耐火浇注料-喷涂料-浇注料生产厂家_郑州市元领耐火材料有限公司 耐力板-PC阳光板-PC板-PC耐力板 - 嘉兴赢创实业有限公司 | Trimos测长机_测高仪_TESA_mahr,WYLER水平仪,PWB对刀仪-德瑞华测量技术(苏州)有限公司 | 重庆监控_电子围栏设备安装公司_门禁停车场管理系统-劲浪科技公司 | 阻垢剂,反渗透阻垢剂,缓蚀阻垢剂-山东普尼奥水处理科技有限公司 真空粉体取样阀,电动楔式闸阀,电动针型阀-耐苛尔(上海)自动化仪表有限公司 | 电伴热系统施工_仪表电伴热保温箱厂家_沃安电伴热管缆工业技术(济南)有限公司 | 防爆电机生产厂家,YBK3电动机,YBX3系列防爆电机,YBX4节防爆电机--河南省南洋防爆电机有限公司 | 高精度电阻回路测试仪-回路直流电阻测试仪-武汉特高压电力科技有限公司 | 一体式钢筋扫描仪-楼板测厚仪-裂缝检测仪-泰仕特(北京) | 金现代信息产业股份有限公司--数字化解决方案供应商 | 北京森语科技有限公司-模型制作专家-展览展示-沙盘模型设计制作-多媒体模型软硬件开发-三维地理信息交互沙盘 | 深圳办公室装修,办公楼/写字楼装修设计,一级资质 - ADD写艺 | 安徽净化工程设计_无尘净化车间工程_合肥净化实验室_安徽创世环境科技有限公司 | 自清洗过滤器_全自动过滤器_全自动反冲洗过滤器_量子过滤器-滑漮滴 | 铝镁锰板厂家_进口钛锌板_铝镁锰波浪板_铝镁锰墙面板_铝镁锰屋面-杭州军晟金属建筑材料 | 防水套管厂家-柔性防水套管-不锈钢|刚性防水套管-天翔管道 | Duoguan 夺冠集团| 路斯特伺服驱动器维修,伦茨伺服驱动器维修|万骏自动化百科 | 双段式高压鼓风机-雕刻机用真空泵-绍兴天晨机械有限公司 | 首页 - 军军小站|张军博客| 高效节能电机_伺服主轴电机_铜转子电机_交流感应伺服电机_图片_型号_江苏智马科技有限公司 | 东莞注册公司-代办营业执照-东莞公司注册代理记账-极刻财税 | 岩石钻裂机-液压凿岩机-劈裂机-挖改钻_湖南烈岩科技有限公司 | 一体化预制泵站-一体化提升泵站-一体化泵站厂家-山东康威环保 | 小型高低温循环试验箱-可程式高低温湿热交变试验箱-东莞市拓德环境测试设备有限公司 | 洛阳防爆合格证办理-洛阳防爆认证机构-洛阳申请国家防爆合格证-洛阳本安防爆认证代办-洛阳沪南抚防爆电气技术服务有限公司 | 河南新乡德诚生产厂家主营震动筛,振动筛设备,筛机,塑料震动筛选机 | 代写标书-专业代做标书-商业计划书代写「深圳卓越创兴公司」 | 能量回馈_制动单元_电梯节能_能耗制动_深圳市合兴加能科技有限公司 | 月嫂_保姆_育婴_催乳_母婴护理_产后康复_养老护理-吉祥到家家政 硫酸亚铁-聚合硫酸铁-除氟除磷剂-复合碳源-污水处理药剂厂家—长隆科技 | 真空泵维修保养,普发,阿尔卡特,荏原,卡西亚玛,莱宝,爱德华干式螺杆真空泵维修-东莞比其尔真空机电设备有限公司 | 杭州画室_十大画室_白墙画室_杭州美术培训_国美附中培训_附中考前培训_升学率高的画室_美术中考集训美术高考集训基地 | 北京百度网站优化|北京网站建设公司-百谷网络科技 | 一点车讯-汽车网站,每天一点最新车讯! | 南京雕塑制作厂家-不锈钢雕塑制作-玻璃钢雕塑制作-先登雕塑厂 | 校园气象站_超声波气象站_农业气象站_雨量监测站_风途科技 | 橡胶接头_橡胶软接头_套管伸缩器_管道伸缩器厂家-巩义市远大供水材料有限公司 | 翰墨AI智能写作助手官网_人工智能问答在线AI写作免费一键生成 | 微波消解仪器_智能微波消解仪报价_高压微波消解仪厂家_那艾 | 水性漆|墙面漆|木器家具漆|水漆涂料_晨阳水漆官网 | 电机铸铝配件_汽车压铸铝合金件_发动机压铸件_青岛颖圣赫机械有限公司 |