科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Hibernate学习(4)----JMX技术

Hibernate学习(4)----JMX技术

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

JMX中的MBean就是针对这些资源而设计的,MBean通过“属性”来显示资源的状态,通过“操作”来实现对资源的控制和管理。

作者:joy_cz 来源:CSDN 2008年2月29日

关键字: java JMX Hibernate

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共4页)

一JMX技术
1.MBean的概念和名称
 
JMX中的MBean就是针对这些资源而设计的,MBean通过“属性”来显示资源的状态,通过“操作”来实现对资源的控制和管理。MBean并不一定直接去和资源的状态,只要通过这个MBean可以实现“属性”和“操作”就足够了。对于MBean的调用主要通过代理来实现,这里的代理是指软件系统中用于操纵 MBean的组件。

 
每个MBean需要一个名称,用javax.management.ObjectName这个类来实现,以便将MBean之间区分开。MBean的名称包括两个部分:域名和键表。域名是MBean所在域的名称,如book.java 指的就是book下的 java子域。键表由若干个键名和键值组成,例如service=invoker,type=http,指的是名为service和type两个键,它们的健值是invoker和http。健表的惟一性与键之间的排列顺序无关。域名和键表之间通过“:”连接共同组成MBean的名称,如 book.java:service=example。

 
2. MBean的类型

   目前共有4种类型的MBean:标准MBean,动态MBean,开放MBean和模型MBean。MBean需要由代理来操纵。而代理是通过MBean服务器,即MBeanServer,来操纵每个MBean的。每个MBean都以来ObjectName注册到MBeanServer,代理再通过 MBeanServer来调用MBean的属性和方法,调用的过程是借助Java的反射功能来实现的。每个MBean将有关自己的属性和方法的描述信息封装在MBeanInfo中,并向MBeanServer提供获取MBeanInfo的方法,即实现getMBeanInfo()方法或者通过一个确定的接口直接暴露自己的方法和属性。如果采取第一种方法来实现,那么这个MBean主是一种动态MBean;如果采用后一种方法来实现,那么这个MBean就是一种标准MBean。

2.1标准MBean

下面介绍一个标准MBean的例子:HelloMBean是接口,Hello 是实现类,在JMX中,标准MBean的接口和实现类之间通过名称后缀-MBean来相互对应。
 
 package com.joy_cz.jmx;
/**
            * @author joy_cz       
          */
          public interface HelloMBean {
                  public void sayHello();
                  public int getTimes();
                  public void setTimes(int t);
          }
标准MBean就是用这种接口的方式来静态的提供MBean的方法和属性,下面是标准HelloMBean的实现类。
 
package com.joy_cz.jmx;
/**
 * @author joy_cz
 */
public class Hello implements HelloMBean {
 private int times;
 /* (非 Javadoc)
  * @see com.joy_cz.jmx.HelloMBean#getTimes()
  */
 public int getTimes() {
  // TODO 自动生成方法存根
  return times;
 }
 /* (非 Javadoc)
  * @see com.joy_cz.jmx.HelloMBean#sayHello()
  */
 public void sayHello() {
  // TODO 自动生成方法存根
  System.out.println("say hello to you ~");
  times++;
 }
 /* (非 Javadoc)
  * @see com.joy_cz.jmx.HelloMBean#setTimes(int)
  */
 public void setTimes(int t) {
  // TODO 自动生成方法存根
  times = t;
 }
}
 
调用这个MBean需要一个代理程序。在代理程序HelloAgent中,Hello的对象实例以“book.java:service=example的名称被注册到了MBeanServer,而后通过相同的ObjectName名称借助MBeanServer调用了Hello的“sayHello”方法,获取并设置了“Times”属性的值。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章