jmx - first demo
1. pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>jmxbook</groupId> <artifactId>jmxInAction</artifactId> <version>0.0.1-SNAPSHOT</version> <build/> <repositories> <repository> <id>datanucleus.org/downloads/maven2</id> <name>datanucleus.org Maven Repository</name> <url>http://www.datanucleus.org/downloads/maven2/</url> </repository> </repositories> <dependencies> <!-- https://mvnrepository.com/artifact/com.sun.jdmk/jmxtools --> <dependency> <groupId>com.sun.jdmk</groupId> <artifactId>jmxtools</artifactId> <version>1.2.1</version> </dependency> </dependencies> </project>
2. The Agent level
HelloAgent.java
package jmxbook.ch2; import javax.management.*; import com.sun.jdmk.comm.HtmlAdaptorServer; /** * * @url http://localhost:9092 * @author Benjamin G. Sullins && Mark B. Whipple * */ public class HelloAgent implements NotificationListener { private MBeanServer mbs = null; public HelloAgent ( ) { mbs = MBeanServerFactory.createMBeanServer( "HelloAgent" ); HtmlAdaptorServer adapter = new HtmlAdaptorServer(); HelloWorld hw = new HelloWorld(); ObjectName adapterName = null; ObjectName helloWorldName = null; try { adapterName = new ObjectName( "HelloAgent:name=htmladapter,port=9092" ); mbs.registerMBean( adapter, adapterName ); adapter.setPort( 9092 ); adapter.start(); helloWorldName = new ObjectName( "HelloAgent:name=helloWorld1" ); mbs.registerMBean( hw, helloWorldName ); hw.addNotificationListener( this, null, null ); } catch( Exception e ) { e.printStackTrace(); } }//constructor public void handleNotification( Notification notif, Object handback ) { System.out.println( "Receiving notification..." ); System.out.println( notif.getType() ); System.out.println( notif.getMessage() ); } /** * @exec java -cp jmxInAction.jar;jmxtools.jar jmxbook.ch2.HelloAgent * @param args */ public static void main( String args[] ) { HelloAgent agent = new HelloAgent(); } }//class
4. The Probe level
1) Standard MBeans
(1) MBean
package jmxbook.ch2; /** * * @author Benjamin G. Sullins && Mark B. Whipple * */ public interface HelloWorldMBean { public void setGreeting( String greeting ); public String getGreeting(); public void printGreeting(); }
(2) impl
package jmxbook.ch2; import javax.management.*; /** * * @author Benjamin G. Sullins && Mark B. Whipple * */ public class HelloWorld extends NotificationBroadcasterSupport implements HelloWorldMBean { public HelloWorld() { this.greeting = "Hello World! I am a Standard MBean"; } public HelloWorld( String greeting ) { this.greeting = greeting; } public void setGreeting( String greeting ) { this.greeting = greeting; Notification notification = new Notification( "jmxbook.ch2.helloWorld.test", this, -1, System.currentTimeMillis(), greeting ); sendNotification( notification ); } public String getGreeting() { return greeting; } public void printGreeting() { System.out.println( greeting ); } private String greeting; }//class
diagram:Standard-MBeans
run:
(1) exec java
#java -cp jmxInAction.jar;jmxtools.jar jmxbook.ch2.HelloAgent
(2) browser
http://localhost:9092
Reference
1. jmx - wiki
2. jmx in action - ISBN 9781930110564
jmx - first demo的更多相关文章
- JMX超详细解读
一.JMX的定义 JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架.JMX是一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和 ...
- JMX超详细解读<转>
一.JMX的定义 JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架.JMX是一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和 ...
- jmx学习
原文地址:https://www.cnblogs.com/dongguacai/p/5900507.html 一.JMX的定义 JMX(Java Management Extensions)是一个为应 ...
- JMX学习笔记(一)-MBean
JMX学习笔记(一)-MBean 标签: jmxstringjavainterfaceexceptionclass 2010-12-07 22:20 15360人阅读 评论(5) 收藏 举报 分类: ...
- 利用jdk中工具完成Java程序监控方法记录
转载加自己整理的部分内容,转载自:http://jiajun.iteye.com/blog/810150 记录下JConsole使用方法 一.JConsole是什么 从Java 5开始 引入了 ...
- JMeter Web测试快速入门教程
学习前的准备 学习本教程前,你的电脑上至少应该有Apache JMeter这款软件.如果你没有,点击此处下载. 当你点进去后,你会发现它是一个依赖Java的软件 因此如果你电脑上没有Java环境,你应 ...
- Linux下利用Ant调用Jmeter脚本生成HTML测试报告
今天我们学习如何利用Ant调用Jmeter脚本,并将生成的 jtl 文件转换为 HTML 格式的测试报告. 准备工作 需要在Linux上提前安装好 JDK. Jmeter 和 Ant. 1,JDK(可 ...
- Node.js躬行记(14)——压力测试
公司有个匿名聊天的常规H5界面,运营向做一次 50W 的推送,为了能配合她的计划,需要对该界面做一次压力测试. 一.JMeter 压测工具选择了JMeter,这是Apache的一个项目,它是用Java ...
- kafka2.9.2的伪分布式集群安装和demo(java api)测试
目录: 一.什么是kafka? 二.kafka的官方网站在哪里? 三.在哪里下载?需要哪些组件的支持? 四.如何安装? 五.FAQ 六.扩展阅读 一.什么是kafka? kafka是LinkedI ...
随机推荐
- java_main
Java中用户向系统传递参数的三种基本方式 main方法 在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的 ...
- No MaterialLocalizations found (Flutter)
在显示SimpleDialog时候程序报错 No MaterialLocalizations found 没有找到 MaterialLocalizations 搜索找到原因 runApp 需要先调用 ...
- ts项目报错:Import sources within a group must be alphabetized
报错:Import sources within a group must be alphabetized. 原因:import名称排序问题,要求按照字母从小到大排序:修改 tslint.json 中 ...
- 朴素贝叶斯文本分类(python代码实现)
朴素贝叶斯(naive bayes)法是基于贝叶斯定理与特征条件独立假设的分类方法. 优点:在数据较少的情况下仍然有效,可以处理多分类问题. 缺点:对入输入数据的准备方式较为敏感. 使用数据类型:标称 ...
- OpenCV几种访问cv::Mat数据的方法
一般来说,如果是遍历数据的话用指针ptr比用at要快.特别是在debug版本下.因为debug中,OpenCV会对at中的坐标检查是否有溢出,这是非常耗时的. 代码如下 #include <op ...
- ubuntu16 安装matplotlib
在安装ubuntu安装matplotlib时碰到不少问题,简单做个备忘: 需要先安装其依赖的包libpng和freetype 安装libpng: sudo apt-get install libpng ...
- scala IDE for Eclipse开发Spark程序
1.开发环境准备 scala IDE for Eclipse:版本(4.6.1) 官网下载:http://scala-ide.org/download/sdk.html 百度云盘下载:链接:http: ...
- CentOS6.5_64位系统下安装配置postfix邮件系统 启用并配置SMTP虚拟账户
http://blog.jjonline.cn/linux/185.html http://www.cnblogs.com/apexchu/p/4271264.html 用户新增和删除 http:// ...
- 关于class produre
很好理解 type TMessageHandler = class //使得回车消息转换成Tab消息 class procedure AppMessage(var Msg:TMsg;var Handl ...
- php 直接获取url参数赋值成变量。省去繁琐的获取参数,再一个个赋值
php 直接获取url参数赋值成变量.省去繁琐的获取参数,再一个个赋值 parse_url() 该函数可以解析 URL,返回其组成部分.它的用法如下: array parse_url(string $ ...