JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。
我们还是从JMX能给我们提供什么好处入手来理解吧。举一个应用实例:在一个系统中常常会有一些配置信息,比如服务的IP地址,端口号什么的,那么如何来写这些代码呢?
1、初级程序员一般是写死在程序里,到要改变时就去改程序,然后再编译发布;
2、程序熟手则一般把这些信息写在一个配置文件里(JAVA一般都是*.properties文件),
到要改变时只要改配置文件,但还是重新启动系统,以便读取配置文件里的新值;
3、程序好手则会写一个段代码,把配置值缓存起来,系统在读值的时候,先看看配置文件有
没有更动。如有更改则重读一遍,否则从缓存里读取值
4、程序高手则懂得取物为我所用,用JMX!把配置属性集中在一个类,然后写一个叫MBean
的东东,再配置一下就轻松搞定了。而且JMX自动提供了一个WEB页面来给你来改变这些
配置信息。
参考Java提供的例子(需要 jdk1.6):
http://download.oracle.com/javase/6/docs/technotes/guides/jmx/examples.html
1. 需要被管理类的接口 HelloMBean.java (规范一般是***MBean.java)
/* HelloMBean.java - MBean interface describing the management
operations and attributes for the Hello World MBean. In this case
there are two operations, "sayHello" and "add", and two attributes,
"Name" and "CacheSize". */
package com.example.mbeans;
public interface HelloMBean {
// operations
public void sayHello();
public int add(int x, int y);
// attributes
// a read-only attribute called Name of type String
public String getName();
// a read-write attribute called CacheSize of type int
public int getCacheSize();
public void setCacheSize(int size);
}
2. 需要管理的类 Hello.java (通常是实现**MBean.java)
/* Hello.java - MBean implementation for the Hello World MBean.
因篇幅所限,把examples带的注释去掉了,自己可以下载看 */
package com.example.mbeans;
public class Hello implements HelloMBean {
public void sayHello() {
System.out.println("hello, world");
}
public int add(int x, int y) {
return x + y;
}
public String getName() {
return this.name;
}
public int getCacheSize() {
return this.cacheSize;
}
public synchronized void setCacheSize(int size) {
this.cacheSize = size;
System.out.println("Cache size now " + this.cacheSize);
}
private final String name = "Reginald";
private int cacheSize = DEFAULT_CACHE_SIZE;
private static final int DEFAULT_CACHE_SIZE = 200;
}
3. 代理/注册类 Main.java
package com.example.mbeans;
import java.lang.management.*;
import javax.management.*;
public class Main {
/* For simplicity, we declare "throws Exception". Real programs
will usually want finer-grained exception handling. */
public static void main(String[] args) throws Exception {
// Get the Platform MBean Server
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
// Construct the ObjectName for the MBean we will register
ObjectName name = new ObjectName("com.example.mbeans:type=Hello");
// Create the Hello World MBean
Hello mbean = new Hello();
// Register the Hello World MBean
mbs.registerMBean(mbean, name);
// Wait forever
System.out.println("Waiting forever...");
Thread.sleep(Long.MAX_VALUE);
}
}
4. 编译、测试运行上面的程序
javac com/example/mbeans/*.java
# 启动程序
java com.example.mbeans.Main
另起一个命令行或者cmd:
运行jconsole (# JConsole is located in $(J2SE_HOME)/bin/jconsole) 可以看到,选择本地的进程 com.example.mbeans 连接 就可以进行管理了。
管理界面:
修改cacheSize 大小,可以在启动Main的命令行窗口看到修改生效。
其它examples下载:
- 大小: 25.3 KB
- 大小: 35.9 KB
- 大小: 2.2 KB
分享到:
相关推荐
总结一下,这个JMX入门例子展示了如何创建一个简单的MBean,将其注册到MBean服务器,并通过`jconsole`进行交互。了解JMX对于任何需要管理和监控Java应用的开发者来说都是一项重要技能,它提供了强大的灵活性和可扩展...
本教程将引导你入门Spring框架下的JMX应用。 首先,JMX是一种Java标准,它允许开发者创建可管理的Java组件,并提供了一种统一的方式来管理和监控这些组件。在Spring中,我们可以利用JMX来创建MBeans(Managed Beans...
Java Management Extensions(JMX)是Java平台上的一个标准,用于创建和管理应用程序的管理资源,如服务、设备、系统组件等。JMX 提供了一种框架和API来监控和管理运行时的应用程序,使得开发者可以轻松地添加管理...
在这个入门指南中,我们将深入探讨JMX的核心概念、API以及如何通过一个简单的示例来理解它的应用。 **一、JMX核心概念** 1. **MBean(Managed Beans)**:MBean是JMX中的核心组件,代表了可管理的资源。它可以是...
JMX(Java Management Extensions)是一种用于在Java应用程序中实现管理和监控功能的框架。它允许开发者创建可管理的组件,即MBeans(Managed Beans),并通过MBeanServer进行交互。JMX提供了一种标准的方式来暴露...
首先,MBean(Managed Bean)是JMX的核心组件之一,它是被管理资源的实例。MBean提供了对外界暴露的一系列方法和属性,使得管理者能够获取资源状态并进行操控。MBean有四种类型:标准MBean、动态MBean、开放MBean和...
### JMX入门教程详解 #### 一、JMX概述与价值 JMX,全称Java Management Extensions,是Java平台提供的一套标准化管理框架,旨在帮助开发者在任何Java应用程序中植入管理功能。通过JMX,可以实现对应用程序的监控...
**MBean** 是JMX的核心,代表一个可管理的资源实例。MBean通过暴露属性和方法,使得外部能够获取资源状态并操纵其行为。MBean分为四种类型: 1. **标准MBean**:基于预定义的Java类接口,通过约定的getter和setter...
本初学者入门教程将帮助你逐步了解并掌握JMX的核心概念和实际应用。 首先,我们要理解JMX的基本组件。在JMX中,有三个主要元素:管理Bean(MBean)、MBean服务器和代理(Agent)。MBean是JMX的核心,它代表了可管理...
5. **发布Web服务**:使用XFire的API,将服务部署到一个Servlet容器,如Tomcat,或者直接通过JMX发布。发布的服务可以通过WSDL文件进行描述,供客户端调用。 6. **消费Web服务**:客户端可以使用XFire提供的客户端...
### JMX:开发人员快速入门指南 #### 一、概述 **Java Management Extensions (JMX)**,简称为JMX,是Java平台提供的一种标准API,用于管理和监控应用程序资源。通过JMX,Java开发者可以实现对其应用程序组件(或...
- **使用JConsole进行监控**:介绍了如何使用JConsole工具来监控和管理MBean实例,为读者提供了实践操作的机会。 - **环境配置与部署**:给出了配置开发环境和部署JMX应用程序的具体步骤,帮助读者快速上手。 #####...
这是一个Jmeter对Kafka压测的小例子,里面使用了pepper-box插件,实现了Kafka的生产者和消费者,对于入门者来说看这个就够了,如有疑问请移步博客:https://blog.csdn.net/shan286/article/details/105216381。
入门克隆此仓库git clone https://github.com/oslabs-beta/JMXScripter.git 在根文件夹node index.js运行该应用程序重要笔记默认情况下,从您的Kafka实例从JMX导出器导出的信息被写入localhost:7075。 如果要更改此...
本入门例子将引导你了解如何使用Hession进行服务端和客户端的开发。首先,我们从服务端开始。 1. **服务端实现** - 创建服务接口:定义你需要对外提供的服务方法,例如`IService`接口,包含一个`sayHello`方法。 ...
这个“Struts+Hibernate+Spring入门教程及实例”压缩包提供了学习这三大框架基础知识和实践操作的资源。 **Struts框架**: Struts是一个开源的MVC(Model-View-Controller)框架,主要用于构建基于Java EE的Web应用...
JMteter学习报告(一)对用的脚本,知识部分在写文件参数化时修改了,但不影响使用,适合入门参考。不想下载,私聊可以发给你。
本教程“Java网络编程从入门到精通”将详细讲解这些概念,并通过实例代码说明如何在实践中应用。通过学习,你将掌握创建网络服务、处理网络请求、优化网络性能等技能,为你的Java开发生涯打下坚实的基础。无论是新手...
**ActiveMQ实践入门指南** Apache ActiveMQ是一款开源的消息中间件,它是Java消息服务(JMS)的实现...阅读提供的"ActiveMQ实践入门指南.pdf"文件,将为你提供更详细的步骤和实例,助你进一步提升ActiveMQ的应用技能。