参考: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. 【Asphyre引擎】发布了新版本V101

    引擎简称还是PXL,但是这个P是Platform而不是Pascal. 修复了一些bug,增加了轻量级的随机数发生器,进一步完善了XML的解析. 不是很明白,为何把Pascal扩展库改成Platform ...

  2. 关于SQL Server的WITH(NOLOCK)和(NOLOCK)

    The difference is that you should be using the syntax WITH (NOLOCK) (or WITH (<any table hint> ...

  3. 深入理解MySQL开发性能优化.pptx

    深入理解MySQL开发性能优化.pptx,依旧上传baidu pan http://pan.baidu.com/s/1jIwGslS,视频暂未出,培训完成后会更新.

  4. GitHub上我收藏Java及Android的项目Demo

    接触编程不久但浏览频率最高的还是GitHub毕竟它真的是程序员必不可少的新世界. (2016/9/23更新) 静态更新,很强势你值得拥有 更新资源不需要重新安装APK (2016.9.10更新) ht ...

  5. ajax使用

    ajax基本使用 ajax在我们的开发中是必须使用的一个技术,ajax即异步的javascript和xml但是现在我们通常使用json来完成数据的交互,ajax职责很单一就是数据的交互,发送数据接收数 ...

  6. 将内表通过TXT文本输出

    PARAMETERS: num TYPE i. TYPE-POOLS: truxs. "类型组 DATA:w_filename TYPE string. TYPES:BEGIN OF ty_ ...

  7. Android Activity/Service/Broadcaster三大组件之间互相调用

    我们研究两个问题,1.Service如何通过Broadcaster更改activity的一个TextView.(研究这个问题,考虑到Service从服务器端获得消息之后,将msg返回给activity ...

  8. 网站防止CC攻击的方法

    CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,也是一种常见的网站攻击方法,攻击者通过代理服务器或者肉鸡向向受害主机不停地发大量数据包,造成对方服务器资源耗尽,一 ...

  9. IOS NSThread

    任何一个 iOS 应用程序都是由一个或者多个线程构成的.无论你是否使用了多线程编程技术,至少有 1 个 线程被创建.多线程就是为了提高引用程序的工作效率!避免阻塞主线程!当我们没有用任何多线程技术的话 ...

  10. iOS开发笔记12:iOS7上UITextField限制字数输入导致崩溃问题

    在一些场景中,需要限制用户的输入字数,例如在textField里进行控制(textView也类似,崩溃原因也相同),如图所示 系统会监听文本输入,需要注意的第一点是输入法处于联想输入还未确定提交的时候 ...