参考:http://tuhaitao.iteye.com/blog/786391

这里以MBean对象进行演示向服务器注册,调用的过程。

1.MBean接口,接口名必须以MBean结尾

 package gofAndJavaSourceStudy.jmxstudy.jmxImpl;

 public interface HelloMBean {
//管理属性
public void setName(String name); public String getName(); //管理操作
public String print();
}

2.实现这个接口,定义属性和行为

 package gofAndJavaSourceStudy.jmxstudy.jmxImpl;

 import java.lang.management.ManagementFactory;

 import javax.management.Attribute;
import javax.management.MBeanServer;
import javax.management.ObjectName; //MBean的接口和实现类必须位于同一个包中 public class Hello implements HelloMBean {
public String name; public void setName(String name) {
// TODO Auto-generated method stub
this.name = name;
} public String getName() {
// TODO Auto-generated method stub
return name;
} public String print() {
// TODO Auto-generated method stub
String result = "Hello," + name + "!!";
System.out.println(result);
return result;
} public static void main(String args[]) throws Exception {
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); // 获取MBeanServer
ObjectName name = new ObjectName("fjs:type=hello"); // 构造一个名字
Hello hello = new Hello(); // 创建需要注册的对象
mbs.registerMBean(hello, name); // 注册这个对象 mbs.setAttribute(name, new Attribute("Name", "bianjie"));  //属性首字母必须大写
mbs.invoke(name, "print", null, null);  //第三个参数为Object[],为传入的参数值,第四个参数为String[],指明参数类型
Thread.sleep(Long.MAX_VALUE);
} }

main方法中演示了申请服务器,向服务器注册MBean以及调用的过程。通过objectname,我们可以获得对象的属性,传参调用方法等等。

几个需要注意的点:1.MBean接口和实现类必须位于同一包下2.Thread.sleep()必须有,阻塞线程,否则服务器和对象的生命周期都结束了,也就无管理可言了。所以运用在监控服务器上的应用程序。

3.几个工具

oracle java mission control :可以连接虚拟机,并监控虚拟机的各项指标状态,远程管理应用。今后可以深入研究,应该对性能测试,虚拟机调优作用非常大

简单调用了一下上面注册的MBean

---------------------------

二.关于JMX与JNDI的比较,参考:http://www.bitscn.com/pdb/java/200805/141680.html

操作对象:JMX和JNDI都可以对Java类和对象进行查找和定位(JMX中还支持对MBean的查找,并有特定的Query类)。但是在实际应用中,JMX一般用于系统重要的功能性组件;JNDI用来查找部署在服务器中的各个应用程序中的资源,例如servlet、EJB和POJO等,并会为每个应用程序建立独立的隔离的Context.各个Context中,只能定位在这个Context中的资源。

MBean的学习的更多相关文章

  1. JMX(Java Management Extension)学习

    目录 基本概念 MBean的种类 StandardMBean DynamicBean ModelMBean JMX的实现方式 StandardMBean的使用方法 JMX服务的访问方式 JMX--No ...

  2. JMX学习笔记(一)-MBean

    JMX学习笔记(一)-MBean 标签: jmxstringjavainterfaceexceptionclass 2010-12-07 22:20 15360人阅读 评论(5) 收藏 举报  分类: ...

  3. Spring 4 官方文档学习 Spring与Java EE技术的集成

    本部分覆盖了以下内容: Chapter 28, Remoting and web services using Spring -- 使用Spring进行远程和web服务 Chapter 29, Ent ...

  4. JMX学习笔记(二)-Notification

    Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写 ...

  5. 【Tomcat源码学习】-5.请求处理

    前四章节,主要对Tomcat启动过程中,容器加载.应用加载.连接器初始化进行了相关的原理和代码流程进行了学习.接下来开始进行接受网络请求后的相关处理学习.   一.整体流程      基于上一节图示进 ...

  6. Tomcat学习总结(7)——Tomcat与Jetty比较

    Jetty 基本架构 Jetty目前的是一个比较被看好的 Servlet 引擎,它的架构比较简单,也是一个可扩展性和非常灵活的应用服务器. 它有一个基本数据模型,这个数据模型就是 Handler(处理 ...

  7. 解决Tomcat下连接Oracle报错"Error while registering Oracle JDBC Diagnosability MBean."

    Tomcat不失为一个好的开发学习容器,但使用Oracle 11g自带的JDBC驱动ojdbc6.jar和JDK6一起运行的时候,特别是和spring框架一起使用会报错:SEVERE: Error w ...

  8. Servlet深入学习,规范,理解和实现(中)——深入理解Tomcat(一)

    心得:在写这篇博客之前.我大致阅读一些关于Tomcat的书籍和博客等资料.有些资料由于时间的关系,解说的Tomcat版本号太老.有些资料能够非常好的说明Tomcat整理结构和设计思想可是非常多重要的问 ...

  9. 关于Prometheus监控的思考:多标签埋点及Mbean

    使用 grafana+prometheus+jmx 作为普通的监控手段,是比较有用的.我之前的文章介绍了相应的实现办法. 但是,按照之前的实现,我们更多的只能是监控 单值型的数据,如请求量,tps 等 ...

随机推荐

  1. 004_URL 路由 - 定制路由系统 & 使用区域

    定制路由系统 路由系统是灵活可配置的,当然还可以通过下面这两种方式定制路由系统,来满足其他需求. 1.  通过创建自定义的RouteBase实现: 2.  通过创建自定义路由处理程序实现. 创建自定义 ...

  2. How Tomcat Works读书笔记之升级架构

    上一篇HttpServer类职责很多,包括启动服务器,创建ServerSocket,得到客户端Socket,创建Request对象和Response对象,并解析Http请求,这样很混乱,不利于以后服务 ...

  3. js removeChild 方法

    1. 概述 删除后的节点虽然不在文档树中了,但其实它还在内存中,可以随时再次被添加到别的位置. 当你遍历一个父节点的子节点并进行删除操作时,要注意,children属性是一个只读属性,并且它在子节点变 ...

  4. oracle sql 语句优化

    (1)选择最有效率的表名顺序(只在基于规则的优化器中有效):Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理 ...

  5. ahjesus如何在windows下制作适用于mac的u盘启动盘

    先用macdrive把U盘格式化成hfs+格式,然后下载原版dmg格式系统,再用ultraISO将dmg转成ISO格式(也可以不用转换),最后用ultraISO里面“启动”--->“写入硬盘映像 ...

  6. 深入浅出java 8 lambda表达式--零基础一分钟入门

    lambda从使用上来说,第一感觉直白的理解就是,少了很多不必要的匿名回调类的写法,比如: public static void main(String[] args) { PlatformQuery ...

  7. 一个H5的3D滑动组件实现(兼容2D模式)

    起由 原始需求来源于一个项目的某个功能,要求实现3D图片轮播效果,而已有的组件大多是普通的2D图片轮播,于是重新造了一个轮子,实现了一个既支持2D,又支持3D的滑动.轮播组件. 实现思路 刚一开始肯定 ...

  8. Vue列表渲染

    gitHub地址:https://github.com/lily1010/vue_learn/tree/master/lesson09 一 for循环数组 <!DOCTYPE html> ...

  9. .NET破解之百度网盘批量转存工具

    在百度网盘上看到好的资源,总想转存到自己的网盘,加以整理.由于分享的规则原因,手动转存非常麻烦,于是百度批量转存工具.最先搜到的是小兵的百度云转存助手,无需注册,试用版用户一次只能操作10个,而捐助用 ...

  10. Mybatis学习记录(八)----Mybatis整合Spring

    1.整合思路 需要spring通过单例方式管理SqlSessionFactory. spring和mybatis整合生成代理对象,使用SqlSessionFactory创建SqlSession.(sp ...