`

jmx实例

 
阅读更多

一共4个类,ServerMonitorAgent提供了3种连接方式,直接上例子,可以看出来jmx基于rmi

 

 

/**
 * @author river.wang
 */
public interface ServerMonitorMBean {
    public long getUptime();
    public String getMemory();
}

 

 

/**
 * ServerMonitor只能比接口少"MBean"这5个字母,不能写为ServerMonitorImpl
 * @author river.wang
 */
public class ServerMonitor implements ServerMonitorMBean{
    private final long startTime;
    private Runtime runtime = Runtime.getRuntime();
    public ServerMonitor() {
        startTime = System.currentTimeMillis();
    }
    public long getUptime() {
        return System.currentTimeMillis()-startTime;
    }
    public String getMemory() {
        float freeMemory = (float)runtime.freeMemory();
        float totalMemory = (float)runtime.totalMemory();
        String memory = "idle scale : "+(freeMemory/totalMemory)+"%; freeMemory="
            +(freeMemory)/1024+" KB; totalMemory="+(totalMemory)/1024+" KB" ;
        return memory;
    }
}

 

 

 

/**
 * @author river.wang
 */
public class ServerMonitorAgent {
    public static void main( String[] args ) throws Exception {
        //在指定端口上启动远程对象注册服务程序,启用RMI,对应于 JAVA_HOME/bin/rmiregistry.exe 
        LocateRegistry.createRegistry(9999); 
        //MBeanServer
        MBeanServer server=MBeanServerFactory.createMBeanServer();  
        //被管理的bean
        ObjectName monitorName = new ObjectName( "river:type=ServerMonitorMBean,name=serverMonitor" );
        server.registerMBean( new ServerMonitor(), monitorName );
        
        //打开远程连接服务,可以用jconsole连接,或者自己写client连接
        JMXServiceURL url=new JMXServiceURL("service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/serverMonitor");  
        JMXConnectorServer cs=JMXConnectorServerFactory.newJMXConnectorServer(url, null, server);  
        cs.start(); 
        
        //打开HtmlAdaptorServer服务,在浏览器输入http://localhost:8899进行连接,依赖jmxtools.jar,可以在附件中下载
        HtmlAdaptorServer adapter = new HtmlAdaptorServer(8899);
        server.registerMBean(adapter, new ObjectName("river:name=htmlAdapter"));
        adapter.start();
    }
}

 

 

 

ServerMonitorMBean monitor = JMX.newMBeanProxy( ...,ServerMonitorMBean.class );

从jvm,classloader的角度看,client的ServerMonitorMBean和server端的不是一个类,最好在两台机器上或者jvm试试。    

 

/**
 * @author river.wang
 */
public class ServerMonitorClient {
    public static void main( String[] args )
        throws Exception {
        JMXConnector conn = JMXConnectorFactory.connect(
             new JMXServiceURL( "service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/serverMonitor" ), null );
        ServerMonitorMBean monitor = JMX.newMBeanProxy( conn.getMBeanServerConnection(),
             new ObjectName( "river:type=ServerMonitorMBean,name=serverMonitor" ),ServerMonitorMBean.class );
                            
        for ( int i = 0; i < 10; i++ ) {
            System.out.println( monitor.getUptime() );
            System.out.println( monitor.getMemory() );
        }
        conn.close();
    }
}
分享到:
评论

相关推荐

    Jmx实例demo下载

    在本实例中,我们将探讨`jmxdemo`项目,这是一个展示JMX如何工作的示例代码。 在`jmxdemo`这个压缩包中,包含了用于演示JMX功能的源代码。通过分析和运行这些源代码,我们可以深入理解JMX的工作原理及其在实际开发...

    jmx 实例 rmi mbean

    在本实例中,我们重点关注的是如何使用Remote Method Invocation(RMI)来实现JMX的MBean管理。RMI是一种在Java平台上进行远程调用的技术,使得一个Java对象的方法可以在不同的Java虚拟机(JVM)之间被调用。结合JMX...

    JMX实例与应用模型下载

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

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

    通过这个简单的JMX实例,你可以深入理解JMX的工作原理,并学习如何在自己的项目中利用它来提高管理和监控的效率。确保阅读并遵循提供的使用说明,这将帮助你快速上手并掌握JMX的关键概念。同时,实践是学习的最佳...

    JMX小例子以及介绍

    Java Management Extensions(JMX)是Java平台上的一个标准技术,用于管理和监控应用程序、操作系统和网络设备。它提供了一种统一的方式来创建、配置、查询和管理Java应用中的资源。本篇文章将深入探讨JMX的核心概念...

    使用JMX监控类的实例数量

    在Java世界中,Java Management Extensions (JMX) 是一种强大的工具,它允许开发者监控和管理应用程序,包括跟踪类实例的数量。本文将深入探讨如何利用JMX来监控类的实例数量,以及这一技术在实际开发中的应用。 ...

    jmx osgi 实例

    在"jmx osgi 实例"中,我们将看到如何将OSGi的bundle与JMX集成。首先,我们需要在OSGi bundle中创建一个MBean,这个MBean可以暴露bundle的状态信息或者提供对bundle功能的管理接口。然后,我们需要一个MBeanServer,...

    JMX一步一步来,快速学会开发JMX应用

    【JMX 一步步来】 JMX(Java Management Extensions)是一个用于在Java应用程序中添加管理和监控功能的框架。它提供了一套标准的接口和服务,使得开发者能够轻松地在Java应用中集成管理和监控的能力。JMX的核心概念...

    jmx 入门文档,附有开发实例文档

    Java Management Extensions(JMX)是Java平台上的一个标准,用于创建和管理应用程序的管理资源,如服务、设备、系统组件等。JMX 提供了一种框架和API来监控和管理运行时的应用程序,使得开发者可以轻松地添加管理...

    jboss远程调用JMX

    2. **客户端设置**:在客户端,我们需要导入必要的JMX和RMI库,然后创建一个`MBeanServerConnection`实例。这通常通过`JMXConnectorFactory`完成,它会使用提供的JMX连接URL建立连接。 3. **连接到服务器**:使用`...

    最简单JMX例子

    Java Management Extensions(JMX)是Java平台上的一个标准技术,用于管理和监控应用程序、服务和设备。JMX允许开发者创建管理接口,以便在运行时收集和操作应用的状态信息。本示例是一个简单的JMX实现,适合初学者...

    书籍JMX-IN-ACTION

    这本书通过实例详细解释了JMX的工作原理和应用方法,旨在帮助读者提高系统管理和自动化运维的效率。 书中首先介绍了JMX的基本概念,包括MBean(管理bean)、MBean服务器、代理和通知等核心元素,以及它们在JMX架构...

    jmx中包含的主要API

    Java Management Extensions (JMX) 是 Java 平台中用于管理和监控应用程序、系统和服务的一个标准框架。JMX API 提供了一套接口和类,使得开发者能够创建管理工具、服务和组件,以便于监视和控制运行时的环境。在这...

    JMX、MXBean学习

    3. **注册MBean**:开发者需要将创建的MBean实例注册到MBean服务器,以便其他组件或工具可以发现并管理它们。 4. **JMX连接器**:JMX提供了多种连接器,如RMI、HTTP、JMXMP等,允许远程客户端与MBean服务器通信。 ...

    JMX学习,开发文档

    ### HelloWorld 实例 1. `Hello`类实现了`HelloMBean`接口,这样它就可以作为MBean注册到MBeanServer。`getName()`和`setName()`方法提供了对`name`属性的访问,而`printHello()`方法则提供了一个可管理的操作。 2...

    JMX与Spring 结合

    1. **JMX与Spring 结合实例**:在Spring应用中,可以通过配置或者编程方式来注册MBeans(Managed Beans),这些MBeans代表了应用中的特定组件或服务。Spring 提供了`PlatformMBeanServer`的自动配置,可以方便地将...

    jmxdemo.rar

    这通常涉及到查找并实例化适当的MBean服务器连接器,如JMXMP(JMX Message Protocol),RMI-JRMPI(Remote Method Invocation with Java Remote Management Interface)等,然后使用连接器连接到服务端。 VisualVM...

    JMX 在GlassFish中的应用

    ### JMX 在GlassFish中的应用 #### JMX与GlassFish:深入理解管理与监控 **JMX(Java Management Extensions)**是一种由Sun Microsystems提出并由Java社区推动的标准,旨在为Java应用程序、系统和网络提供一个...

    JMX开发入门

    **MBean** 是JMX的核心,代表一个可管理的资源实例。MBean通过暴露属性和方法,使得外部能够获取资源状态并操纵其行为。MBean分为四种类型: 1. **标准MBean**:基于预定义的Java类接口,通过约定的getter和setter...

    spring框架下jmx入门例子

    这些测试可能使用了Spring的`MBeanServerFactoryBean`来获取MBeanServer实例,然后调用`getAttribute`和`setAttribute`方法来读写MBean的属性。 "lib"目录可能包含了项目所需的依赖库,包括Spring框架和其他可能...

Global site tag (gtag.js) - Google Analytics