JMX(Java Management Extensions) 是来管理网络,设备,应用程序等资源,它描述了一个可扩展的管理体系结构,并且提供了 JMX API 和一些预定义的 java 管理服务。
通过JMX可以轻松地为应用程序添加管理功能,即可以在尽可能少的改变原有系统的代码基础上实现对原系统的管理。
JMX Technology Architecture
Level
|
Description
|
Instrumentation
|
Resources, such as applications, devices, or services, are instrumented using Java objects called Managed Beans (MBeans). MBeans expose their management interfaces, composed of attributes and operations, through a JMX agent for remote management and monitoring.
|
Agent
|
The main component of a JMX agent is the MBean server. This is a core managed object server in which MBeans are registered. A JMX agent also includes a set of services for handling MBeans. JMX agents directly control resources and make them available to remote management agents.
|
Remote Management
|
Protocol adaptors and standard connectors make a JMX agent accessible from remote management applications outside the agent’s Java Virtual Machine (JVM).
|
Managing Resources Remotely
JMX API instrumentation can be accessed in many different ways, either through existing management protocols such as the Simple Network Management Protocol (SNMP), or through proprietary protocols. The MBean server relies on protocol adaptors and connectors to make a JMX agent accessible from management applications outside the agent’s Java Virtual Machine (JVM).
Each adaptor provides a view through a specific protocol of all MBeans registered in the MBean server. For example, an HTML adaptor could display an MBean in a Web browser.
Connectors provide a manager-side interface that handles the communication between manager and JMX agent. Each connector provides the same remote management interface though a different protocol. When a remote management application uses this interface, it can connect to a JMX agent transparently through the network, regardless of the protocol.
JMX technology provides a standard solution for exporting JMX API instrumentation to remote applications, based on Remote Method Invocation (RMI). In addition, the JMX Remote API defines an optional protocol based directly on TCP sockets, called the JMX Messaging Protocol (JMXMP). An implementation of the JMX Remote API does not have to support this optional protocol. The J2SE platform, version 5.0, does not include the optional protocol. See Appendix A, "JMX Technology Versions"for further information.
The JMX Remote API specification describes how you can advertise and find JMX agents using existing discovery and lookup infrastructures. Examples of how to do this are provided and are described in the Java Management Extensions (JMX) Technology Tutorial. The specification does not define its own discovery and lookup service. The use of existing discovery and lookup services is optional: alternatively you can encode the addresses of your JMX API agents in the form of URLs, and communicate these URLs to the manager.
获得 MBeanServer 的实例
MBeanServer是MBean的容器,可以通过多种方式获得MBeanServer的实例,如:
MBeanServer server = MBeanServerFactory.createMBeanServer();
或
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
其中,通过下面的方式获得的实例能在jconsole中使用,而上面的不能。
创建 MBean
为了能够管理 Web 应用的资源,首先要使资源能够被管理,按照 JMX 规范的要求,我们将资源封装成 MBean,实际上也就是为 Web 应用添加可管理性。
MBean就是遵守JMX规范的普通Class。
JMX中常用的概念:
Manageable resource:
可被管理的资源可以是应用程序,设备或者存在的能够被java程序所访问或者包装的实体。通过JMX可以管理这些资源。应用程序能够暴露自己的组件,API或者附加的资源,使得JMX能够管理应用程序。可被管理的资源甚至可以是网络上的设备,例如打印机。可被管理的资源作为一个实体被JMX MBean所管理。
MBean:
MBean(managed bean)是一个Java类,符合JXM specification所规定的命名和继承规范。实例化的MBeans是Java对象,其中所暴露出来的接口(management interface)能够操作和访问manageable resources。这些接口是由MBean的属性和操作组成。
Management application通过访问MBean来访问属性和调用操作。MBean分三种类型:Standard,Dynamic和Model MBean.每一种类型都是针对于特定的manageable resource来使用的。
JMX agent:
JMX agent是一个Java process,能够为管理MBean的集合提供服务,是MBean Server的容器。这些服务可以是建立MBean的之间的关系,动态加载类,监控服务,作为计时器。
Management application
一个management application可以是任何的用户程序,用于和任意多的JMX agent之间建立接口。对于一些设计好的符合JMX技术的management appliction,JMX agents能够建立和该management application的联系,JMX agents也能够建立和那些先前没有考虑用JMX技术的management application建立联系。
传输和安全性
JMX 指定了在 MBeanServer 和 JMX 客户之间通信所使用的协议,协议可以在各种传输机制上运行。可以使用针对本地连接的内置传输,及通过 RMI、socket 或 SSL 的远程传输(可以通过 JMX Connector API 创建新的传输)。认证是由传输执行的;本地传输允许用相同的用户 ID 连接到运行在本地系统上的 JVM;远程传输可以用口令或证书进行认证。本地传输在 Java 6 下默认就是启用的。要在 Java 5.0 下启用它,需要在 JVM 启动时定义系统属性 com.sun.management.jmxremote。“Monitoring and Management using JMX” 这份文档(请参阅参考资料)描述了启用和配置传输的配置步骤。
The MBean server relies on protocol adaptors and connectors to make a JMX agent accessible from management applications outside the agent’s Java Virtual Machine (JVM).
下面给出一个JMX开发示例程序:
1.首先定义一个MBean接口
public interface ControllerMBean {
//属性
public void setName(String name);
public String getName();
//操作
/**
* 获取当前信息
* @return
*/
public String status();
public void start();
public void stop();
}
2.然后实现这个接口
public class Controller implements ControllerMBean {
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
private String name;
public String status() {
return "this is a Controller MBean,name is " + this.name;
}
public void start() {
// TODO Auto-generated method stub
}
public void stop() {
// TODO Auto-generated method stub
}
}
3.在被管理的程序中加入这个管理对象
import java.lang.management.ManagementFactory;
import javax.management.InstanceAlreadyExistsException;
import javax.management.MBeanRegistrationException;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.MalformedObjectNameException;
import javax.management.NotCompliantMBeanException;
import javax.management.ObjectName;
import javax.swing.JDialog;
import jmx.Controller;
import jmx.ControllerMBean;
import com.sun.jdmk.comm.HtmlAdaptorServer;
public class Main {
/**
* @param args
* @throws NullPointerException
* @throws MalformedObjectNameException
* @throws NotCompliantMBeanException
* @throws MBeanRegistrationException
* @throws InstanceAlreadyExistsException
*/
public static void main(String[] args)
throws InstanceAlreadyExistsException, MBeanRegistrationException,
NotCompliantMBeanException, MalformedObjectNameException,
NullPointerException {
//获得MBeanServer实例
// MBeanServer mbs = MBeanServerFactory.createMBeanServer();//不能在jconsole中使用
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();//可在jconsole中使用
//创建MBean
ControllerMBean controller = new Controller();
//将MBean注册到MBeanServer中
mbs.registerMBean(controller, new ObjectName("MyappMBean:name=controller"));
//创建适配器,用于能够通过浏览器访问MBean
HtmlAdaptorServer adapter = new HtmlAdaptorServer();
adapter.setPort(9797);
mbs.registerMBean(adapter, new ObjectName(
"MyappMBean:name=htmladapter,port=9797"));
adapter.start();
//由于是为了演示保持程序处于运行状态,创建一个图形窗口
javax.swing.JDialog dialog = new JDialog();
dialog.setName("jmx test");
dialog.setVisible(true);
}
}
运行上面的程序
4.在windows下进入控制台(win+r->cmd),然后输入jconsole命令,稍等片刻打开jconsole的图形界面,在“本地”中选择刚才运行的程序,然后进入MBean面板页,即可看到MyappMBean一项,下面就是具体的MBean,可展开这些MBean对其操作。
由于上面的程序启用了html协议适配器,因此可以在浏览器中执行如同jconsole的操作,在浏览器中输入:http://localhost:9797即可
后面再研究connector有关身份认证的问题,这样就能以安全的方式连接到MBeanServer上了。
相关推荐
【JMX 入门详细教程】 Java Management Extensions (JMX) 是一种标准,它允许开发者在Java应用程序中集成管理和监控功能。JMX 提供了一种框架,使得开发者能够轻松地创建、注册和管理称为Managed Beans(MBeans)的...
在这个入门指南中,我们将深入探讨JMX的核心概念、API以及如何通过一个简单的示例来理解它的应用。 **一、JMX核心概念** 1. **MBean(Managed Beans)**:MBean是JMX中的核心组件,代表了可管理的资源。它可以是...
在JMX中,一个简单的“Hello World”示例通常包括以下步骤: 1. **创建MBean**: 定义一个实现了特定接口的类,该接口定义了管理属性和操作。例如,`Hello`类实现了`HelloMBean`接口,包含了`name`属性和`printHello...
### JMX入门教程详解 #### 一、JMX概述与价值 JMX,全称Java Management Extensions,是Java平台提供的一套标准化管理框架,旨在帮助开发者在任何Java应用程序中植入管理功能。通过JMX,可以实现对应用程序的监控...
3. `jmx入门.rar`:这可能是JMX的基础教程或实践案例,可以帮助初学者快速上手。 4. `jmxremote-1_0_1-ri-bin-b58.zip`:这个文件包含了JMX远程访问的实现,可能包含API文档和库文件。 5. `jmx_remote-1_0-fr-...
### JMX:开发人员快速入门指南 #### 一、概述 **Java Management Extensions (JMX)**,简称为JMX,是Java平台提供的一种标准API,用于管理和监控应用程序资源。通过JMX,Java开发者可以实现对其应用程序组件(或...
Azure SDK for Java 通常会包含示例代码、文档和必要的依赖库,以帮助开发者快速入门。在“azure-sdk-for-java.zip”压缩包内的“azure-sdk-for-java-master”可能是指源码仓库的主分支,包括所有子项目的源代码、...
- **示例演示**:通过具体的代码示例来展示如何使用JMX进行资源管理,帮助读者更好地理解理论知识。 ##### 2. “Hello World”,JMX的方式 - **JMX Hello World程序**:通过一个简单的“Hello World”程序来介绍...
这个“Struts+Hibernate+Spring入门教程及实例”压缩包可能包含以下内容:教程文档、代码示例、项目结构、配置文件等,帮助初学者理解这三个框架的基本概念、配置方法以及如何在实际项目中进行整合。通过阅读文档、...
11.2 JMX 447 11.3 SSH 449 11.3.1 新建Spring Boot 项目 449 11.3.2 运行 449 11.3.3 常用命令 451 11.3.4 定制登录用户 452 11.3.5 扩展命令 452 第12 章 分布式系统开发 456 12.1 微服务、原生云应用 456 12.2 ...
例如,`SayHello.java`可能是一个简单的示例,其中包含一个返回问候信息的方法。 ```java public interface SayHello { String sayHello(String name); } ``` 4. **实现服务接口**:在接口的基础上,编写实现类,...
但是,此存储库中的演示集中在使入门变得更容易。 这些示例易于构建和运行,并且易于摘要。 每个人都应该尝试这些甚至相对没有经验的开发人员。 更不用说我需要一个适合幻灯片的示例进行演讲。 ;) 先决条件 所有...
11.2 JMX 447 11.3 SSH 449 11.3.1 新建Spring Boot 项目 449 11.3.2 运行 449 11.3.3 常用命令 451 11.3.4 定制登录用户 452 11.3.5 扩展命令 452 第12 章 分布式系统开发 456 12.1 微服务、原生云应用 456 12.2 ...
11.2 JMX 447 11.3 SSH 449 11.3.1 新建Spring Boot 项目 449 11.3.2 运行 449 11.3.3 常用命令 451 11.3.4 定制登录用户 452 11.3.5 扩展命令 452 第12 章 分布式系统开发 456 12.1 微服务、原生云应用 456 12.2 ...
### jBoss入门详解 #### 一、jBoss基础启动与管理 jBoss是一款开源的应用服务器,主要用于部署和运行Java EE应用程序。对于初学者而言,掌握jBoss的基本启动和配置至关重要。 **启动类型**:jBoss提供了三种启动...
在“HETF-ActiveMQ入门手册.doc”中,读者可能会找到如何安装和配置ActiveMQ,创建和管理队列与主题,设置安全策略,以及如何在实际项目中集成和使用ActiveMQ的详细步骤和示例。此外,文档可能还会涵盖性能调优技巧...
通过本文档的学习,开发者能够快速掌握 JBoss 的基础操作及高级应用技巧,从而有效地利用 JBoss 来开发高质量的企业级 Java 应用程序。无论是新手还是有经验的开发者,都能够从中获得有价值的信息。
- **JMX集成**:与Java Management Extensions集成。 - **JCA支持**:与Java Connector Architecture兼容。 - **SessionFactory配置** - **可编程配置方式**:使用代码配置SessionFactory。 - **获取...
总的来说,`HelloWorldService`是一个入门级的JMX和MBean教程,它可以帮助开发者快速掌握JMX的核心概念,为进一步探索更复杂的Java应用程序管理打下基础。通过阅读和实践这个示例,你可以深入了解Java的管理功能,并...
主力于Java的唯品会,关于Java的一些小家底。 各位看官看着是好的,烦请“Star”。 1.0.8版 - 2018.9.24 Java Standard Project Description ...唯品会Java开发手册 ...文档:《入门科普,围绕JVM的各种