JMX学习笔记(四):Notifications

Java JMX 四:MBeanServerInvocationHandler 参考文献: https://docs.oracle.com/javase/8/docs/api/javax/management/MBeanServerInvocationHandler.html 相关文章: Java JMX 一:初步认识:https://blog.youkuaiyun.com/youyou1543724847/article/details/82933076 Java JMX 二:MBea... 阅读详情

Notification

JMX API定义了一种机制,使MBean能生成通知,如当信号状态改变,检测到事件或者一个问题时。

要生成通知,MBean必须实现NotificationEmitter接口或继承NotificationBroadcasterSupport类。要发送一个通知必须构造Notification类的实例或者子类(如NotificationChangedAttribute),通知实例产生后,由NotificationBroadcasterSupport的sendNotification方法发送通知。

例:

Step 1 :定义HelloMBean接口

package com.jmx.demo5;

public interface HelloMBean {
	public void sayHello();

	public int add(int x, int y);

	public String getName();

	public int getCacheSize();

	public void setCacheSize(int size);

}

Step 2 :编写HelloMBean的实现类Hello

package com.jmx.demo5;

import javax.management.AttributeChangeNotification;
import javax.management.MBeanNotificationInfo;
import javax.management.Notification;
import javax.management.NotificationBroadcasterSupport;

//MBean must extends NotificationBroadcasterSupport or implements NotificationEmitter
public class Hello extends NotificationBroadcasterSupport implements HelloMBean {
	private final String name = "Reginald";
	private int cacheSize = DEFAULT_CACHE_SIZE;
	private static final int DEFAULT_CACHE_SIZE = 200;
	private long sequenceNumber = 1;

	public void sayHello() {
		System.out.println("hello, world");
	}

	public int add(int x, int y) {
		return x + y;
	}

	public String getName() {
		return this.name;
	}

	public int getCacheSize() {
		return this.cacheSize;
	}

	public synchronized void setCacheSize(int size) {
		int oldSize = this.cacheSize;
		this.cacheSize = size;
		System.out.println("Cache size now " + this.cacheSize);

		/**
		 * To send a notification,you need to construct an instance of class
		 * Notification or a Subclass(such as AttributeChangedNotification),and
		 * pass the instance to NotificationBroadcastSupport.sendNotification.
		 * 
		 */
		Notification n = new AttributeChangeNotification(this,
				sequenceNumber++, System.currentTimeMillis(),
				"CacheSize changed", "CacheSize", "int", oldSize,
				this.cacheSize);

		sendNotification(n);
	}

	@Override
	public MBeanNotificationInfo[] getNotificationInfo() {
		String[] types = new String[] { AttributeChangeNotification.ATTRIBUTE_CHANGE };
		String name = AttributeChangeNotification.class.getName();
		String description = "An attribute of this MBean has changed";
		MBeanNotificationInfo info = new MBeanNotificationInfo(types, name,
				description);
		return new MBeanNotificationInfo[] { info };
	}

}

Step 3:创建MBeanServer,标识MBean,注册MBean,并运行Main方法:

package com.jmx.demo5;

import java.lang.management.ManagementFactory;

import javax.management.MBeanServer;
import javax.management.ObjectName;

public class Main {
	public static void main(String[] args) throws Exception{
		MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
		ObjectName name = new ObjectName("com.jmx.demo:type=Hello");
		Hello mbean = new Hello();
		mbs.registerMBean(mbean, name);
		System.out.println("Waiting forever...");
		Thread.sleep(Long.MAX_VALUE);
		
	}
}

微笑在Jconsole中查看运行结果:通知选项初始状态没有值,点击订阅后,通知项为0


微笑更改CacheSize的值后,在观察通知选项,变为1



总结:MBean实现通知机制,必须继承NotificationBroadcasterSupport类或实现NotificationEmitter接口,用Notification类构造通知实例,发送通知实例由NotificationBroadcaterSupport.sendNotification方法;

【JMX学习】1、jmx入门 项目的web端和后端分开部署,用到JMX,使web端跟后端通信,当后端启动时加载一些文件,当web端修改时就会通知后端去更新,下面大概的学习下JMX,首先了解下JMX,然后做了一些小例子 一、jmx简介        JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台 阅读详情

相关推荐

JMX与Spring集成开发实战教程

Java管理扩展(Java Management Extensions,JMX)是Java平台上用于监控和管理应用程序的一个框架。它提供了一种机制,允许开发者将应用程序中的管理组件以编程方式暴露给管理系统。JMX的核心目标是提供一个可扩展的方式去监视、管理、配置应用程序。MBeans(管理beans)是Java管理扩展(JMX)的核心构件,用于在Java应用程序中以标准方式暴露管理信息。MBeans可以将应用程序的内部状态以及可以执行的操作提供给外部的管理应用。

weixin_28793831的博客 936

JMX : Notification

JMX API 定义了一种机制,使得MBean可以产生notification,以在状态变化时、特定事件发生时或者出问题时,发出一个提醒。 state change, a detected event, a problem generate notification : MBean必须implement NotificationEmitter或extend NotificationBr

XF的专栏 1354

跨境TRS投资实战:从开户到交易的完整系统解析

本文系统解析了跨境TRS(总收益互换)投资的完整实战流程。详细阐述了TRS作为境外资金投资A股的灵活工具,如何通过其独特的合约结构绕开港股通限制,并提供杠杆效应。内容涵盖从选择机构、开通账户、资金管理到核心交易操作的全过程,并强调了构建包含策略、风控与心态的完整投资系统的重要性。

weixin_29233333的博客 314

[JMX一步步来] 3、Notification的使用

一、简介   Mbean之间的通信是必不可少的,Notification就起到了在Mbean之间沟通桥梁的作用。JMX notification 由四部分组成:    * Notification 这个相当于一个信息包,封装了需要传递的信息    * Notification broadcaster 这相当于一个广播器,把消息广播出去    * Notification listerner 这是一

在水一方 863

门信号表达式_毫米波FMCW体制雷达的信号处理中的FFT等效为相干积累的解释

民用的77G或24G毫米波雷达目前普遍采用发射波形为一连串线性调频连续波(即所谓chirp信号,啁啾信号,线性调频波如果能够下变频到人耳可接收的频段,听起来很类似“啁啾”“啁啾”的鸟叫声)。一串前后相继的chirp信号与一段长时间的“空闲”组成一帧信号(比如汽车雷达整机厂普遍采用一帧为50ms)。用频谱仪观察chirp信号串,横坐标为时间,纵坐标为频率,如下图所示(此处引用TI产品手册...

weixin_39725756的博客 1949

JESD204B系统设计实战:如何用SYSREF信号搞定多设备时钟同步(附时序图详解)

本文深入探讨了JESD204B系统中SYSREF信号在多设备时钟同步中的关键作用与实现技巧。通过详细分析SYSREF信号的生成、PCB布局和时序调整,提供了一套完整的解决方案,帮助工程师解决高速数据转换器与FPGA协同工作中的时钟同步问题。文章还包含时序图详解和实测调试技巧,助力提升系统性能。

weixin_29313239的博客 457

JMX之Notification

Notification起到了Mbean之间沟通桥梁的作用。JMX notification model 和 java event model 类似,将一些重要的信息,状态的转变,数据的变更传递给 notification listener。以使资源更容易管理。 JMX notification 由四部分组成: 1、  Notification 2、  Notification br

DryKillLogic的专栏 1579

雷达信号处理DDC数字下变频

由于接收到的雷达信号频率较高,不能对其进行直接采样并数据处理,所以需要对雷达信号进行预处理,在降低其采样率的同时,将其由中频降低到低频,然后对输出的基带信号进行后续的解析,以便于获取雷达信号的特征参数。 本文采用数字正交下变频,将单通道信号转化为正交双通道信号,数字下变频(DDC)的原型为模拟下变频,通过对窄带雷达信号或单频信号进行数字混频,然后对信号进行正交采样,提取 I、Q 两路正交分量,最后通过滤波去除信号中的高频分量,将信号由中高频搬移至低频。 模拟下变频的系统框图如下: 其数学推导.

qq_44033461的博客 5234

【JMX】2. JMX通知模型:Notification

复习 JMX构架中的各层及相关的组件 工具层(Instrumentation Level)     (a) MBeans(标准的,动态的,开放的和模型MBeans)     (b) 通知模型:Notification、NotificationListener等类     (c) MBean元数据类:Attribute、Opreator等类 代理层(Agent Level)

Alpha's 学习笔记 3225

QT+QGIS跨平台编译(基于Qt,采用一套代码、一套框架,完成QGIS第三方库、核心库、应用程序的跨平台编译)

QT+QGIS跨平台编译。 基于Qt,采用一套代码、一套框架,完成QGIS第三方库、核心库、应用程序的跨平台编译。

LuckyHanMo的博客 4381

国科大学习资料--人工智能原理与算法-2020年期末考试题解析(学长整理)

国科大学习资料–人工智能原理与算法-2020年期末考试题解析 张文生老师主讲 试卷共有6道题,题目不难,希望大家能取得好的成绩。 3.9 传教士和野人问题。三个传教士和三个野人在河的一岸,有一条能载一个人或者两个人的船。请设法使所有人都渡到河的另一岸,要求在任何地方野人数都不能多于传教士的人数。这个问题在AI领域中很有名,是因为它是第一个从分析的观点探讨问题形式化的论文的主题(Amarel,1968)。 a. 请对该问题进行详细形式化,只描述确保该问题求解所必需的特性。画出完整的状态空间图。 b. 应用合适

无名何许人的博客 4789

【Java】JMX Notification

一、发送通知 熟系观察者模式、活着写过Android或用过消息队列的应该都比较熟悉一个场景,就是当数据变化时,变化方通知所有的订阅方。 JMX里就提供了这样的消息订阅、通知机制。 二、示例 创建OperationMBean接口: public interface OperationMBean { void setVal(int v); int getVal(); } 创建Operation实现OperationMBean接口: public class Operation extends

HaYa 452

运行后选择GDB/LLDB出现这样的窗口:launch: program ‘输入程序名称,例如 D:\Desktop\新建文件夹\a.exe‘ does not exist...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1132

JMX学习笔记(四) JMX RMI

package com.jmx.demo9; import java.io.Serializable; public class Hello implements HelloMBean, Serializable { private String name; public synchronized void setName(String name) { this.name = na

java_huashan的专栏 2万+

神州路由器DHCPv6配置

神州路由器DHCPv6配置.。

weixin_41687096的博客 462

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

JMX:Java程序监控的基石

JMX:Java程序监控的基石 一、什么是JMX? 二、JMX架构 三、JMX应用场景 四、自定义MBean 1.MBean接口方式 2.MXBean接口方式 3.Spring Bean方式

搬山境KL攻城狮的修炼手册 3966

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

JMX的学习笔记

JMX的学习笔记 1. JMX简介 ​ JMX(Java Management Extemsions) 是一个为应用程序、设备、系统等植入管理功能的框架。 ​ JMX 是一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和服务实现管理。主要用于对JAVA应用程序和JVM进行监控和管理。JConsole和JVisualVM中能够监控到JAVA应用程序和JVM的相关信息都是通过JMX实现的。 ​ JMX 规范可以分为三层:设备层,代理层,分布式服务层。设备层规范定义了编写可由JMX管

weixin_45866849的博客 1522

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

JMX Notification

 Mbean之间的通信是必不可少,Notification就起到了Mbean 之间沟通桥梁的作用。JMX notification model 和 java event model 类似,将一些重要的信息,状态的转变,数据的变更传递给 notification listener。以使资源更容易管理。 JMX notification 由四部分组成:1、  Notification

rosonsandy的专栏 5554

JMX的使用

JMX是Java Management Extention的缩写,出发点是让外部通过属性/方法来读取或设置程序状态。对于提供对外服务的程序来说,天生就有这样的能力,Web程序通过HTTP接口对外暴露,RPC应用通过RPC接口暴露。不过带来的问题,一是依赖环境,不同的环境能力不同;二是需要单独处理安全性问题,尤其是对公网暴露的情况下。JMX从某种程度上来说,解决了上述两个问题,无论什么应用都能通过JMX对外暴露管理功能,单独的非业务含义的协议和通道,可以避免非必要的公网暴露。

你若盛开,清风自来 1909

JMX学习

1. 絮絮叨叨 1.1 Java程序包含哪些线程? 使用Java进行多线程编程的人,多少可能都知道执行main()方法的是一个名为main的线程 通过new Thread新建线程,若不指定线程名,默认线程名为Thread-xx。其中xx是从0开始的编号 public static void main(String[] args) { for (int i = 0; i < 10; i++) { new Thread(() -> System.out.println

lucyLee的博客 3700

Kafka开启JMX

通过JMX自定义监控 通过JMX监控可以看到的数据有: broker数据指标 topic数据指标 每个partition的数据指标 consumer消费滞后情况等。 1、jconsole 在使用jmx之前需要确保kafka开启了jmx监控,kafka启动时要添加JMX_PORT=9999这一项 通过JMX_PORT 指定连接jmx的端口号 JMX_PORT=9999 bin/kafka-ser...

紫蝶侠的博客 1万+

JMX(Java Management Extension)学习

基本概念 MBean的种类 StandardMBean和MXBean的区别 JMX的实现方式 StandardMBean的使用方法 JMX服务的访问方式 JMXNotifications 基本概念JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架。JMX让程序有被管理的功能,例如你开发一个WEB网站,它是在24小时不间断运行,那么你肯定会对网站进行监控,

MapleStory的博客 1096

JMX简介

JMX让程序有被管理的功能,它的应用场景非常多。总的来说只要是运行在java虚拟机上的应用,例如tomcat、 jboss 、web app等都可以通过jmx方式来进行数据监控或者在程序运行的状态下对程序进行“操作”,在不需要太多的工作和努力情况下让开发或者运维人员对程序的运行及其所处理的数据的性质获得深入了解。 文章目录 JMX介绍: JMX的体系层次结构: Kafka: 监控设...

I want to know a little more. 3365

jmx客户端_Java JMX客户端示例– JMX身份验证

jmx客户端In last tutorial we learned about JMX Basics and how can we use JConsole to manage MBeans. Today we will look into java jmx client example and role based authentication through config files. 在上一...

从零开始的教程世界 1870

JMX service URL使用说明

在项目中经常用到JMX的service url,一直都没有完全理解它的用法,下面本文以RMI方式为例,分别从JMX server和JMX client两方面入手,简单的说明一下: service:jmx:rmi://hostname1:port1/jndi/rmi://hostname2:port2/jmxrmi 比如有以上url,JMX server和JMX client都会用到这...

顺其自然~专栏 6393
上一篇: JMX学习笔记(三):MXBean
下一篇: JMX学习笔记(四) JMX RMI
java_huashan
博客等级 码龄14年 37粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值