`

MBean服务介绍

    博客分类:
  • jmx
 
阅读更多
1:JMX简介
JMX(java Management Extensions)是一个为应用程序植入管理功能的框架。JMX是一套标准的代理和服务。JMX是一份规范,SUN依据这个规范在JDK(1.3、1.4、1.5)提供了JMX接口,根据这个接口的实现则有很多种,比如webLogic的JMX实现,MX4J和JBOSS的JMX实现,在SUN自己也实现了以份,我们主要介绍JBOSS的JMX实现。整个JBOSS系统都是基于JMX架构来实现的。
JMX架构中各层及相关组件构成
a:工具层(Instrumenttation Level)
MBeans(标准的,动态的,开放的和模型MBeans)
通知模型:Notification,NotificationListener等
,MBean 元数据类:Attribute,Operator等类
b:代理层(AgentLevel)
MBean Server
代理服务
MBean中有getter和setter的就是属性,如果只有getter则表示该属性只读,一共有四种MBean,如下:
标准MBeans(Standard MBeans)设计和实现是最简单的,这类MBean使用自己的方法名作为管理接口;
动态MBeans(Dynamic MBeans)必须实现一个指定的接口,由于动态MBeans在运行期间暴露它们的管理接口,因此更为灵活;
开放MBeans(Open MBeans)属于动态MBeans,这类MBean依靠基础数据类型来实现通用管理,并为友情用户进行自我声明;
模型MBeans(Model MBeans)同样也是动态MBeans,这类MBeans是完全可配置的,在运行期间进行自我声明;它们为资源动态工具提供一个一般性的,有默认行为的MBeans类。

2:公司现有MBeanService  介绍

  公司现MBeanService 是在jboss的 MBean 基础之上进行了封装更新,如果采用JBoss的MBean来写一个MBean服务

一般的开发步骤为:

  *a:我们需要定义的服务接口  必须继承接口ServiceMBean。*如定义一个HelloWorldServiceMBean接口

import org.jboss.system.ServiceMBean;
public interface HelloWorldServiceMBean extends ServiceMBean {
     String getMessage(); 
   void setMessage(String message);
}
  b:而到具体的实现类还必须继承ServiceMBeanSupport类

import org.jboss.system.ServiceMBeanSupport;
public class HelloWorldService extends ServiceMBeanSupport implements HelloWorldServiceMBean {
    private String message;
    public String getMessage() {
        System.out.println("getMessage()=" + message);
        return message;
    }

    public void setMessage(String message) {
        System.out.println("setMessage(" + message + ")");
        this.message = message;
    }
}
  c:对于 配置文件jboss-service.xml

<?xml version="1.0" encoding="UTF-8"?>
<server>
   <mbean code="example.mbean.HelloWorldService" name="www.wxxr.com.cn:service=HelloWorld">
       <attribute name="Message">Hello World</attribute>
    </mbean>
</server>

说明:

  code项指向MBean的实现类HelloWorldService
  name项是一个名称,格式一般是:[REFDOC:说明性文字]:service=[REFDOC:类名]
  attribute是为属性设置初始值,这样当JBOSS一加载HelloWorldService类时,message属性就有了一个初始值Hello World。注意Message的第一个字母必须是大写

d:将实例部署到JBOSS

在jboss-4.2.1\server\default\deploy目录下创建一个hello.sar目录,然后创建如下目录文件结构:

hello.sar
|----example
|            |----mbean
|                    |----HelloWorldService.class  (注意:是*.class,不是*.java)
|                    |----HelloWorldServiceMBean.class
|----META-INF
             |----jboss-service.xml

其他说明:

l 也可以将hello.sar目录用zip格式压缩成一个同名的hello.sar文件,放到jboss-4.2.1\server\default\deploy目录下。
l JBOSS支持热部署,也就是说你在布置这个目录时并不需要重启JBOSS。

打开网址:http://127.0.0.1:8080/jmx-console/就可以看到自己写的MBean服务

*公司现有框架采用JDK1.5新加入的注解特性,使得开发公司框架的MBean服务更加简单,*具体的MBean服务实现上引入了一个@ServiceMBean

如果服务需要暴露接口我们所写的接口类跟普通的接口类是一样的,在具体的实现类中加入@ServiceMBean而不必继承ServiceMBeanSupport类 就可以将一个服务作为一个MBean服务来进行发布了

比如前面的例子

import org.jboss.system.ServiceMBean;
public interface HelloWorldServiceMBean  {
    String getMessage(); 
void setMessage(String message);
}
import org.jboss.system.ServiceMBeanSupport;
@ServiceMBean
public class HelloWorldService  implements HelloWorldServiceMBean {
private String message;
public String getMessage() {
      System.out.println("getMessage()=" + message);
   return message;
  }
public void setMessage(String message) {
       System.out.println("setMessage(" + message + ")");
       this.message = message;
}
}
@ServiceMBean 提供了此功能其属性参数 remoteServices就是暴露的可分布式的应用
比如要开发一分布式的应用

import org.jboss.system.ServiceMBeanSupport;
@ServiceMBean(remoteServices = HelloWorldServiceMBean.calss)
public class HelloWorldService implements HelloWorldServiceMBean {
private String message;
public String getMessage() {
System.out.println("getMessage()=" + message);
return message;
}
public void setMessage(String message) {
System.out.println("setMessage(" + message + ")");
this.message = message;
}
}

如果客户端其他服务需要调用此分布式服务,则通过工具类
CommonUtils.getClusterService(HelloWorldServiceMBean.class, null, null); 就可以获得此服务。

因为*@ServiceMBean 默认是提供本地服务的,相当于{*}localServices的设置。

因为MBean最终要的特性就是对于其属性方法的可管理性,我们下边介绍2个注解

a: @ManagedOperation

此注解放在需要管理的方法上,在jmx-console中就可以看到需要管理的方法

b:@ManagedAttribute

此注解放到服务的属性的get,set方法上,就可以实现对相关属性的实时修改管理

分享到:
评论

相关推荐

    Java分布式应用学习笔记09JMX-MBean的介绍

    ### Java分布式应用学习笔记09JMX-MBean的介绍 #### MBean概念及作用 MBean,即Managed Bean,是在JMX(Java Management Extensions)框架中用于管理资源的一种特殊Java对象。通过MBean,可以方便地对应用程序进行...

    JMX实用例子详解(包括各种Mbean)

    Java Management Extensions(JMX)是Java平台上的一个标准管理框架,它允许开发人员创建、注册和管理名为MBeans(Managed Beans)的对象,这些对象代表了系统、应用程序或服务的可管理资源。通过JMX,我们可以远程...

    jmx in action

    - **关系服务介绍**: - 解释了 JMX 中的关系服务是什么以及它的作用。 - 关系服务用于表示 MBean 之间的关系,如依赖关系等。 - **定义关系模型**: - 介绍了如何定义 MBean 之间的关系模型。 - 包括如何表示...

    JMX1.4 规范 翻译 第一章(介绍)(至1.6节)

    它提供了管理和监控Java应用程序、设备和服务的标准框架。本章节主要介绍了JMX的基本概念、架构以及核心组件。 ### 1. JMX简介 JMX是Java平台上的一个标准,允许开发者创建可管理的组件,并通过统一的接口进行监控...

    jmx技术介绍(ppt)

    MBean服务器提供各种服务,使得管理应用能够通过标准接口与MBean交互。 **分布式服务层** 分布式服务层是管理应用程序的所在地。这些应用通过JMX Remote API(JSR-166)与代理层的MBean服务器建立连接,进而访问和...

    JMX in Action

    第十章介绍了高级 MBean 加载技术,旨在提高 MBean 的灵活性和可扩展性。这一章节的内容包括: 1. **动态类加载**: 如何在运行时动态加载 MBean 的类。 2. **动态配置加载**: 如何动态加载 MBean 的配置信息。 3. *...

    书籍JMX-IN-ACTION

    MBean是JMX的核心,它代表了可以被管理的资源或服务,而MBean服务器则作为运行这些MBean的容器。代理(代理MBean)允许JMX与非Java系统进行交互,通知机制则用于在管理系统中传递事件信息。 接着,书中的章节详细...

    JMX初学资料 初学者入门教程

    Java Management Extensions(JMX)是Java平台上的一个标准管理框架,用于管理和监控应用程序、系统和服务。JMX允许开发者创建可管理的组件,并提供了一种统一的方式来远程访问和控制这些组件,使得运维人员能够轻松...

    java management extension

    例如,`O'Reilly - Java Management Extension.pdf`这本书可能详细介绍了JMX的各个方面,包括如何创建和注册MBeans、如何使用MBean服务器、如何实现MBean操作和属性、如何使用通知机制以及如何通过连接器进行远程...

    jmx入门

    1. **MBeans**: MBean是JMX中的基本组件,它是可管理的对象,代表了系统的某个方面,如服务状态、配置信息等。MBean分为标准MBean、动态MBean和开放MBean三种类型,分别适用于不同场景。 2. **MBean服务器**: MBean...

    Java Management Extensions

    为了更好地理解JMX的实际应用,本书介绍了一个典型的Producer/Consumer应用程序示例。通过这个示例,读者可以学习到如何使用JMX来监控和管理应用程序中的队列数据流,例如如何跟踪消息的生产和消费情况、监控队列的...

    JDK13-java-management-extensions-guide.pdf

    它通过MBeans(Managed Beans)实现这一目标,MBeans是Java对象,代表可管理的资源或服务,并且可以通过JMX API进行操作。MBeans可以是标准MBeans、开放MBeans或者动态MBeans,它们各自有不同的定义和使用方式。 ...

    JMX IN ACTION(二)

    对于那些喜欢先了解背景和架构的人来说,建议阅读第一章,那里介绍了JMX框架的必要性以及其整体架构。 JMX是由Sun Microsystems提供的参考实现(RI),它使得管理Java应用变得简单。完成本章的学习后,你将能够管理...

    论文研究-JMX技术在网络监控中的应用.pdf

    首先,要了解JMX技术,就必须先介绍它的核心组件,即管理性Bean(Managed Bean,简称MBean)。MBean是一种特殊的Java对象,它通过一组标准的接口暴露管理属性和操作,从而被远程或本地管理应用程序使用。MBean分为...

    JMX小例子以及介绍

    - **MBean(Managed Beans)**: MBean是JMX中最基本的管理单元,它是Java对象,代表可管理的资源或服务。MBean可以是标准MBean、开放MBean或模型MBean,每种类型都有不同的接口和注册方式。 - **MBean Server**: 这...

    《jmx技术介绍》配套源代码

    JMX架构由管理代理(MBeans)、服务提供者接口(MBean Server)和管理客户端三部分组成。MBeans代表可管理的对象,它们可以是简单的数据点或复杂的系统服务。MBean Server是一个运行在Java虚拟机中的核心组件,它...

    JMX IN ACTION(四)

    这一章将介绍如何使用标准MBean来配置应用程序资源(如日志工具和应用属性),以及如何将应用程序分解为组件。如果你需要快速实现一个资源,标准MBean是最佳选择。标准MBean通过明确声明的管理接口暴露资源,该接口...

Global site tag (gtag.js) - Google Analytics