`
mabusyao
  • 浏览: 247370 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

JMX 的一个简单例子

    博客分类:
  • java
SUN 
阅读更多
废话不多说,上代码:

HelloWorldMBean接口
package com.acxiom.bilyao;

public interface HelloWorldMBean {

	public void setGreeting(String greeting);
	
	public String getGreeting();
	
	public void sayHello();
	
}


HelloWorld
package com.acxiom.bilyao;

import javax.management.Notification;
import javax.management.NotificationBroadcasterSupport;

public class HelloWorld extends NotificationBroadcasterSupport 
	implements HelloWorldMBean {
	
	private String greeting = null;
	
	public HelloWorld() {
		this.greeting = "Hello World! I am a Standard MBean";
	}

	public HelloWorld(String greeting) {
		this.greeting = greeting;
	}
	
	@Override
	public void setGreeting(String greeting) {
		this.greeting = greeting;
		
		Notification notification = new Notification(
				"com.acxiom.bilyao.helloWorld.test", this, -1,
				System.currentTimeMillis(), greeting);
		sendNotification(notification);
	}

	@Override
	public String getGreeting() {
		return greeting;
	}

	@Override
	public void sayHello() {
		System.out.println(greeting);
	}

}


HelloAgent
package com.acxiom.bilyao;

import java.lang.management.ManagementFactory;

import javax.management.MBeanServer;
import javax.management.Notification;
import javax.management.NotificationListener;
import javax.management.ObjectName;

import com.sun.jdmk.comm.HtmlAdaptorServer;

public class HelloAgent implements NotificationListener{

	private MBeanServer mbs = null;
	
	public HelloAgent() {
		mbs = ManagementFactory.getPlatformMBeanServer();
		//mbs = MBeanServerFactory.createMBeanServer("HelloAgent");
		
		HtmlAdaptorServer adapter = new HtmlAdaptorServer();
		
		HelloWorld hw = new HelloWorld();
		ObjectName helloName = null;
		ObjectName adapterName = null;
		
		try {
			helloName = new ObjectName("HelloAgent:name=helloworld");
			adapterName = new ObjectName("HelloAgent:name=htmladapter,port=8000");
			
			adapter.setPort(8000);
			mbs.registerMBean(adapter, adapterName);
			adapter.start();
			
			mbs.registerMBean(hw,helloName);
			
			hw.addNotificationListener( this, null, null );
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	
	private static void waitForEnterPressed() {
		try {
			System.out.println("Press <Enter> to continue...");
			System.in.read();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		HelloAgent ha = new HelloAgent();
		System.out.println("Hello Agent is running...");
		HelloAgent.waitForEnterPressed();
	}

	@Override
	public void handleNotification(Notification notif, Object handback) {
		System.out.println( "Receiving notification..." );
		System.out.println( notif.getType() );
		System.out.println( notif.getMessage());
	}
}

分享到:
评论

相关推荐

    jmx简单实例,附带jar包完整项目

    jmx简单实例装有jms-1.1.jar、jmxri-1.2.1.jar、jmxtools-1.2.1.jar包,完整项目能跑,附带简单使用说明...

    最简单JMX例子

    入门好例子,希望对大家有用,eclipse下导入直接可以运行。

    jmx osgi 实例

    jmx与osgi结合的实例,将osgi的bundle注册到jmx进行管理。简单实例,可以进行扩展

    JMX实例与应用模型下载

    JMX应用实例与实现,通过一个简单的JavaWeb应用来验证JMX在应用中的植入管理和应用

    jmx_examples.rar_Java 8_jmx_jmx examples_jmx main_jmx_examples

    jmx的简单实例,有7 8个,都是简单的

    jmx.zip_jmx html

    Jmx 简单实例,html格式Jmx控制台

    jmx入门

    一份文档和一个简单的例子,希望对大家有用

    javasnmp源码-02-jmx-demo:如何使用JMX来管理程序

    在JMX中MBean代表一个被管理的资源实例,通过MBean中暴露的方法和属性,外界可以获取被管理的资源的状态和操纵MBean的行为。 Agent 用来管理相应的资源,并且为远端用户提供访问的接口。该层的核心是MBeanServer,...

    JAVA上百实例源码以及开源项目源代码

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    JAVA上百实例源码以及开源项目

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    exception-0.0.9.zip

    Managed.zip,使用简单的注释轻松地将对象实例添加到jmx。使用简单的注释轻松地将对象实例添加到jmx。

    一个简单的VS2011国际化例子

    项目需求,实现中文和英文的转换,所以弄了个测试示例

    JAVA单例模式源码-zabbixj:一个简单的JavaZabbix框架

    您的应用程序数据通过一个简单的、单一方法的 Java 接口提供给 Zabbix/J。 当您启动应用程序时,您只需实例化、配置和启动 Zabbix/J 单例 — 如果您使用的是 Spring 框架,则可以从 Spring 上下文执行此操作。 这里...

    (2.0版本)自己写的struts2+hibernate+spring实例

    增加了页面分页和后台分页方法 (如果看了我第一个例子的朋友.应该看到我在service层的find方法上的注释.说当前版本因为原来使用find方法是从代理中取.而spring默认的数据持久话只能包含业务层和数据层.不能包含...

    《深入剖析Tomcat(中文版+英文版)》.rar

    第1章 一个简单的web服务器 1.1 http 1.1.1 http请求 1.1.2 http响应 1.2 socket类 1.3 应用程序 1.3.1 httpserver类 1.3.2 request类 1.3.3 response类 1.3.4 运行应用程序 1.4 小结 第2章 一个简单的...

    java开源包1

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

    java开源包2

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

    java开源包3

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

    java开源包6

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

Global site tag (gtag.js) - Google Analytics