JmxTest
package mbeanTest; import java.util.Set; import javax.management.Attribute;
import javax.management.MBeanOperationInfo;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.Notification;
import javax.management.NotificationListener;
import javax.management.ObjectInstance;
import javax.management.ObjectName;
import javax.management.modelmbean.RequiredModelMBean; public class JmxTest
{
/**
* 测试标准MBean 需要被管理的方法、属性等在接口中定义好,创建一个类,继承此接口,然后实现时候方法,
* 这样,但注册到MBeanServer的时候,会自动管理其,接口中的各个属性、方法。
*
* @throws Exception
*/ public void test1StandardMBean() throws Exception
{
// MBeanServer ms = MBeanServerFactory.createMBeanServer("JMX2Test");
MBeanServer ms = MBeanServerFactory.createMBeanServer();
ObjectName name = new ObjectName("Hellogg:type=myfirstMbean"); // ms.createMBean("HelloWorld", objectName);
HelloWorld hello = new HelloWorld(" yao yao , qie ke nao "); // MBean需要实现NotificationBroadcaster接口,支持各种事件的发送和处理
hello.addNotificationListener(new NotificationListener()
{ public void handleNotification(Notification notification,
Object handback)
{
System.out.println(" access listen : " + notification);
}
}, null, null); ms.registerMBean(hello, name); String s1 = (String) ms.getAttribute(name, "Hello");
System.out.println(" the init value1 : " + s1); ms.setAttribute(name, new Attribute("Hello", " hi ,hi ,man "));
String s2 = (String) ms.getAttribute(name, "Hello");
System.out.println(" the init value2 : " + s2); ms.invoke(name, "message", new Object[]{ " i as message " }, new String[]{ "java.lang.String" }); ObjectName name2 = new ObjectName("Hellogg:type=myfirstMbean");
Set<ObjectInstance> set = ms.queryMBeans(name2, null);
System.out.println("set: "+set);
} /**
* 动态Mbean,需要实现DynamicMBean接口,并且任何需要,管理的方法、属性,都需要在接口的方法中,
* 自己来实现,Mbeaninfo也需要自己设置,这样编程的工作量大,但是有很大的可控性。
*
* @throws Exception
*/ public void test2DynamicMBean() throws Exception
{
HelloWorldDynamic dynamic = new HelloWorldDynamic(); MBeanServer ms = MBeanServerFactory.createMBeanServer();
// 创建一个ObjectName
ObjectName name = new ObjectName("DynamicHello:type=dinamicMbean"); // 注册动态MBean到MBeanServer服务上去
ms.registerMBean(dynamic, name); // 得到属性值
Object o = ms.getAttribute(name, "getInstance");
String hello = (String) ms.getAttribute(name, "gh");
MBeanOperationInfo operation = dynamic.getMBeanInfo().getOperations()[0];
System.out.println(" attribute value of getInstance:" + o
+ "; attribute value of gh:" + hello); // 执行一个方法(操作)
ms.invoke(name, operation.getName(), null, null);
} public void test3RequiredModelMBean() throws Exception
{
HelloWorldModelMBean hello = new HelloWorldModelMBean(); MBeanServer ms = MBeanServerFactory.createMBeanServer();
RequiredModelMBean modelMbean = hello.createModelBean();
ObjectName name = new ObjectName("RequiredMBeanHello:type=ModelMbean");
// 监听属性变化事件
modelMbean.addAttributeChangeNotificationListener(
new NotificationListener()
{
@Override
public void handleNotification(Notification notification,
Object handback)
{
System.out.println(" --Attribute已经改变-- ");
}
}, null, null);
ms.registerMBean(modelMbean, name); //ms.invoke(name, "setHello", new Object[]{ " 调用setHello方法 " }, new String[]{ "java.lang.String" });
String s = (String) ms.getAttribute(name, "hello");
// 出发Attribute改变事件
// ms.setAttribute(name, new Attribute("hello", "bbb"));
String s2 = (String) ms.getAttribute(name, "hello"); System.out.println(s);
System.out.println(s2);
} public static void main(String args[]) throws Exception
{ JmxTest jmx = new JmxTest();
jmx.test3RequiredModelMBean(); } }
JmxTest的更多相关文章
- JMX
一.为什么使用JMX,解决那些问题 举一个应用实例:在一个系统中常常会有一些配置信息,比如服务的IP地址,端口号什么的,那么如何来写这些代码呢? 写死在程序里,到要改变时就去改程序,然后再编译发布: ...
- Tomcat Server Configuration Automation Reinforcement
目录 . 引言 . 黑客针对WEB Server会有那些攻击面 . 针对Tomcat Server可以做的安全加固 . Managing Security Realms with JMX . 实现对T ...
- JMX超详细解读
一.JMX的定义 JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架.JMX是一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和 ...
- JMX-JAVA进程监控利器
Java 管理扩展(Java Management Extension,JMX)是从jdk1.4开始的,但从1.5时才加到jdk里面,并把API放到java.lang.management包里面. 如 ...
- cassandra高级操作之JMX操作
需求场景 项目中有这么个需求:统计集群中各个节点的数据量存储大小,不是记录数. 一开始有点无头绪,后面查看cassandra官方文档看到Monitoring章节,里面说到:Cassandra中的指标使 ...
- JMX超详细解读<转>
一.JMX的定义 JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架.JMX是一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和 ...
- jmx学习
原文地址:https://www.cnblogs.com/dongguacai/p/5900507.html 一.JMX的定义 JMX(Java Management Extensions)是一个为应 ...
- 运用JMX监控Tomcat
1.先配Tomcat的启动语句,window下tomcat的bin/catalina.bat(linux为catalina.sh),在头上注释部分(.bat为rem..sh为#)后面加上set JAV ...
- 如何监控Tomcat服务器
如何监控Tomcat服务器 发表于:2009-06-25来源:作者:点击数:2651 标签:tomcatTomcat服务器 在进行 性能测试 时,一般都需要对应用服务器进行监控,监控的指标包括应用服务 ...
随机推荐
- 远程设备管理opendx平台搭建-server,agent以及front实际搭建
本系列文章讲述的是一个系列的第二部分,最终可以搭建一整套设备远程管理平台,与stf不同的是,opendx搭建较为简单,而且由于底层是appium来支持的,所以,较容易支持ios,也容易支持更高版本的安 ...
- for循环中创建线程执行问题
先执行以一个简单的示例: static void Main(string[] args) { List<int> taskConsumes = new List<int>() ...
- 在线编辑Word——插入图表
在Word中可插入图表,配合使用表格能够更加全方位的展示数据的可信度并增加数据的可读性.本文将通过使用在线编辑器 Spire.Cloud Word 演示如何来插入图表,并设置相关格式化操作.具体步骤如 ...
- SpringCould | Nacos与Feign
服务注册Nacos 介绍 概念 一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台. Nacos: Dynamic Naming and Configuration Service Nac ...
- 9组-Ahlpa-6/3
一.基本情况 队名:不行就摆了吧 组长博客:https://www.cnblogs.com/Microsoft-hc/p/15546622.html 小组人数: 8 二.冲刺概况汇报 卢浩玮 过去两天 ...
- 菜鸡的Java笔记 Object 类
Object 类 Object类 的主要作用 Object 类的常用方法 内容 虽然有了对象的向上转型,可以解决了参数的统一问题,但是 ...
- 15-Transfer Learning
介绍 迁移学习指的就是,假设你手上有一些跟你现在要进行的task没有直接相关的data,那你能不能用这些没有直接相关的data来帮助我们做一些什么事情.比如说:你现在做的是猫跟狗的classifer, ...
- [atAGC054D]ox
对于两个字符串$s$和$t$(保证其中每一种字符个数相同),定义$s$和$t$的相对逆序对数为$s$得到$t$的最少交换次数,显然同种字符相对顺序保持不变,因此即依次编号后的逆序对数 问题不妨看作构造 ...
- [cf1261F]Xor-Set
构造一棵权值范围恰为$[0,2^{60})$的权值线段树,考虑其中从下往上第$h$层($0\le h\le 60$)中的一个区间,假设其左端点为$l$,即$[l,l+2^{h})$ 这样的一个区间具有 ...
- CF1463F Max Correct Set
考虑证明一个答案必定为\((x + y)\)的循环节递归. 考虑到如果第二块比第一块答案大,则必定可以把第一块换为第二块增加答案. 且可以证明,如果\((x + y)\)是合法的,则整个序列合法. 那 ...