`
longgangbai
  • 浏览: 7356412 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

请您先登录,才能继续操作

通过Apache .commons-modeler开发相关的JMX

阅读更多

                     通过Apache 的.commons-modeler组件和JMX 中MBean的描述,是JMX不必实现相关的XxxxMBean的实现,通过反射和MBean描述动态产生相关的MBean的对象和接口。

 

1.JMX的服务对象

 

package com.easyway.apache.moduler.jmx;
/**
 * 备注此处的JMX没有实现相关的XxxMBean的接口
 * @author longgangbai
 *
 */
public class EasywayService implements IEasywayService {

	private String serviceName;

	public String getServiceName() {
		return serviceName;
	}

	public void setServiceName(String serviceName) {
		this.serviceName = serviceName;
	}

	/* (non-Javadoc)
	 * @see com.easyway.apache.moduler.jmx.IEasywayService#printHello()
	 */
	public void printHello() {
		System.out.println("Hello World, " + serviceName);
	}

	/* (non-Javadoc)
	 * @see com.easyway.apache.moduler.jmx.IEasywayService#printHello(java.lang.String)
	 */
	public void printHello(String whoName) {
		System.out.println("Hello , " + serviceName);
	}

}

 2.针对JMX的MBean的描述符文件如下:

<?xml version="1.0"?>
<mbeans-descriptors>
 <!-- 
   对<mbean>标签做一下说明:
         name mbean在xml中的唯一标识,不一定要和类同名 
         description mbean的注释说明信息 
         domain mbean所属域 
         group mbean所属组 
         type mbean的类全名(包名+类名) 
         classname 指定实现代理功能的ModelMbean的全名,如果不指定则默认为BaseModelMBean 
         
         
         备注:在这个文件中可以配置对各JMXbean对象
  -->
 <mbean name="EasywayService" description="the EasywayService bean" domain="easyway" group="helloGroup" type="com.easyway.apache.moduler.jmx.EasywayService">
  <attribute name="serviceName" description="a name attribute" type="java.lang.String" writeable="true"/>
  <operation name="printHello" description="a operation to print hello" impact="INFO" returnType="String"/>
 </mbean>
</mbeans-descriptors> 

 

 

3.针对JMX的Agent代理如下:

package com.easyway.apache.moduler.jmx;
import java.io.InputStream;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import javax.management.modelmbean.ModelMBean;
import org.apache.commons.modeler.ManagedBean;
import org.apache.commons.modeler.Registry;
import com.sun.jdmk.comm.HtmlAdaptorServer;
/**
 * JMX代理测试的应用
 * @author longgangbai
 *
 */
public class EasywayServiceBeanAgent {
	

	    public static void main(String[] args) throws Exception {
	        //基于xml中的信息构建一个Registry
	        Registry registry = Registry.getRegistry(null, null);
	        InputStream stream = EasywayServiceBeanAgent.class.getResourceAsStream("/Mbeans-descriptors.xml");
	        registry.loadMetadata(stream);
	        stream.close();
	        
	        
	        //由Registry得到一个MBeanServer
	        MBeanServer server = registry.getMBeanServer();

	        //得到Hello在描述文件中的信息类,对应于xml文件<mbean>标签的name属性。
	        ManagedBean managed = registry.findManagedBean("EasywayService");
	        
	        //创建ObjectName
	        ObjectName helloName = new ObjectName(managed.getDomain() + ":name=EasywayService");
	        
	        //得到ModelMBean 动态生成相应的方法的对应的XxxxMBean的接口
	        ModelMBean hello = managed.createMBean(new EasywayService());
	        
	        //注册MBean
	        server.registerMBean(hello, helloName);

	        ObjectName adapterName = new ObjectName("EasywayServiceBeanAgent:name=htmladapter,port=8082");
	        HtmlAdaptorServer adapter = new HtmlAdaptorServer();
	        
	        server.registerMBean(adapter, adapterName);
	        
	        adapter.start();
	        
	        System.out.println("start.....");
	    }
	}

 

分享到:
评论

相关推荐

    commons-modeler-2.0.1.jar + commons-logging-1.1.2-bin.zip

    Apache Commons Modeler是Apache软件基金会开发的一个开源项目,主要用于简化Java Management Extensions (JMX)的开发。JMX是一种Java平台上的标准,它提供了一种框架来管理并监控应用程序、服务和设备,允许开发者...

    apache-commons源码及jar文件

    Apache Commons是一个非常有用的工具包,解决各种实际的通用问题。(附件中提供了该工具包的jar包,及源文件以供研究) BeanUtils Commons-BeanUtils 提供对 Java 反射和自省API的包装 Betwixt Betwixt提供将 ...

    比较全面的:Jakarta-commons jar包(附: chm参考手册 & 资源简介)

    commons-modeler 创建符合 JMX 规范的 MBeans 机制 commons-net 网络和协议实现的集合 commons-pool 提供了通用对象池接口,一个用于创建模块化对象池的工具包,以及通常的对象池实 commons-primitives java 简单...

    Jakarta commons docs API CHM 格式

    commons-modeler 创建符合 JMX 规范的 MBeans 机制 commons-net 网络和协议实现的集合 commons-pool 提供了通用对象池接口,一个用于创建模块化对象池的工具包,以及通常的对象池实 commons-primitives java 简单...

    jmx资料

    - `commons-modeler-2.0.1.zip`:Apache Commons Modeler,用于动态建模和MBean创建,有助于实现JMX的MBean功能。 - `jmx-1_2_1-ri.zip`:早期版本的JMX实现,包含运行时接口(RI)和API。 - `jdmkrt.jar`:可能...

    commons包介绍1

    24. **Modeler**: Commons-Modeler提供了构建符合JMX规范MBean的工具,方便创建和管理Java管理扩展。 25. **Net**: Commons-Net包含了一系列网络工具,如FTP客户端,用于网络通信。 26. **Pool**: Commons-Pool...

    JAKARTA COMMONS

    Apache Jakarta Commons 是一组由 Apache 软件基金会提供的 Java 库,这些库旨在解决常见的编程问题,提供便捷的功能,减少开发人员重复编写基础代码的工作。Jakarta Commons 包含了许多子项目,每个子项目专注于...

Global site tag (gtag.js) - Google Analytics