`
boyfuxin
  • 浏览: 14164 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

JMX in Action 学习日志

阅读更多
学习JMX  是JMX IN ACTION 一书
书中的代码中RMI的API已经过时了,
写了些新代码

JMXBookAgent.java  //Server
package jmxbook.ch3;

import java.rmi.registry.LocateRegistry;

import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.ObjectName;
import javax.management.remote.JMXConnectorServer;
import javax.management.remote.JMXConnectorServerFactory;
import javax.management.remote.JMXServiceURL;

import com.sun.jdmk.comm.HtmlAdaptorServer;

public class JMXBookAgent {

private MBeanServer server = null;

public JMXBookAgent() {
System.out.println("\n\tCREATE the MBeanServer");
server = MBeanServerFactory.createMBeanServer("JMXBookAget");

startHTMLAdapter();
startRMIConnector();

try {
server.registerMBean(new HelloWorld(), new ObjectName("HelloWorldMBean:name=helloWorld"));
} catch (Exception e) {
e.printStackTrace();
}
}

private void startRMIConnector() {
try {
/*
* 先注册RMI的端口 再进行对RMIConnectorServer的注册
*/
LocateRegistry.createRegistry(2099);
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:2099/server");
JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(url, null, server);
server.registerMBean(cs, new ObjectName("JMXAgent:name=RMI,port=2099"));
cs.start();
} catch (Exception e) {
e.printStackTrace();
}
}

private void startHTMLAdapter() {
HtmlAdaptorServer adapter = new HtmlAdaptorServer();
ObjectName adapterName = null;
try {
adapter.setPort(9092);
adapterName = new ObjectName("JMXBookAgent:name=html,port=9092");
server.registerMBean(adapter, adapterName);
adapter.start();
} catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
System.out.println("\n~~~~~~~~~~~~~~~~~~~~~~~" +
        "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
        System.out.println("\n>>> START of JMXBook Agent");
        System.out.println("\n>>> CREATE the agent...");

JMXBookAgent jba = new JMXBookAgent();

System.out.println("\nAgent is Ready for Service...\n");
}
}

Client:
package jmxbook.ch3;

import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;

public class RMIClientFactory {

public static MBeanServerConnection getClient() {
MBeanServerConnection mbsc = null;
try {
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:2099/server");
JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
mbsc = jmxc.getMBeanServerConnection();
} catch (Exception e) {
e.printStackTrace();
}
return mbsc;
}

public static void main(String[] args) {
MBeanServerConnection mbsc = RMIClientFactory.getClient();
System.out.println("**************");
try {
mbsc.invoke(new ObjectName("HelloWorldMBean:name=helloWorld"), "printGreeting", null, null);
} catch (Exception e) {
e.printStackTrace();
}

}
}

HelloWorldMBean:
package jmxbook.ch3;

public interface HelloWorldMBean
{
  public void setGreeting( String greeting );
 
  public String getGreeting();
 
  public void printGreeting();
}

HelloWorld
package jmxbook.ch3;

public class HelloWorld implements HelloWorldMBean         
{

    private String greeting = null;
   
    public HelloWorld()                                    
    {
      this.greeting = "Hello World! I am a Standard MBean";
    }                                                      
   
    public HelloWorld( String greeting )                   
    {
      this.greeting = greeting;                            
    }                                                      
   
    public void setGreeting( String greeting )
    {
      this.greeting = greeting;
    }
   
    public String getGreeting()
    {
      return greeting;  
    }
   
    public void printGreeting()
    {
      System.out.println( greeting );  
    }
      
}




分享到:
评论

相关推荐

    JMX IN ACTION(十二)

    在本章"JMX IN ACTION(十二)"中,我们将深入探讨JMX(Java Management Extensions)的两个重要服务:监控服务和定时器服务。这些服务在管理环境中起着至关重要的作用,能够帮助我们实时了解和应对资源的状态变化。 ...

    Manning - JMX in Action.pdf

    《Manning - JMX in Action》这本书聚焦于Java Management Extensions (JMX),探讨了如何利用JMX来管理和监控整个企业的资源,包括软件和硬件。本书不仅适用于已经熟悉JMX的技术人员,也适合希望深入了解JMX的新手。...

    JMX in Action

    在《JMX in Action》这本书中,读者将深入了解JMX技术,学习如何有效地利用它来创建可管理和自我维护的Java应用程序。 JMX的核心理念是将管理系统分解为可管理和可交互的组件,这些组件被称为管理 beans(MBeans)...

    JMX IN ACTION(四)

    在本章《JMX实战(四)》中,我们将深入探讨最简单的MBean类型:标准MBean。标准MBean适用于具有稳定、已知接口的资源。这一章将介绍如何使用标准MBean来配置应用程序资源(如日志工具和应用属性),以及如何将应用...

    JMX IN ACTION(十四)

    在《JMX IN ACTION》一书的第十四章中,作者探讨了如何利用JMX与企业级JavaBean(EJB)相结合,以增强EJB应用的管理和配置能力。 EJB是Java 2 Enterprise Edition(J2EE,现在称为Java EE)的核心组成部分,主要...

    JMX in action.pdf

    3. **故障恢复**:利用 JMX 收集的日志和诊断信息,可以帮助快速定位问题,从而采取措施进行故障恢复。 #### 六、JMX 的未来发展 随着云计算和微服务架构的发展,JMX 也在不断地演进和完善。未来的 JMX 将更加关注...

    JMX IN ACTION(七)

    【JMX IN ACTION(七)】章节探讨了JMX中的Model MBean,这是一种特殊类型的MBean,开发者无需编写MBean类。Model MBean是JMX规范定义的一部分,保证在所有符合JMX标准的代理中可用,它是一个通用的MBean,可以被实例...

    Manning+-+JMX+in+Action

    《Manning - JMX in Action》是一本深入探讨Java Management Extensions(JMX)技术的专业书籍。JMX是Java平台的一项核心功能,它提供了一种标准的框架,用于管理和监控Java应用程序,包括创建、配置、发现和管理...

    jmx_in_action随书源码

    《JMX in Action》是一本深入探讨Java管理扩展(Java Management Extensions, JMX)技术的专业书籍。这本书旨在帮助读者理解如何使用JMX来管理和监控Java应用程序。随书附带的源码是作者为了阐述概念、技术和实践...

    Spring in action 3.0

    《Spring in Action 3.0》是一本针对Spring框架详细...通过阅读《Spring in Action 3.0》,开发者不仅能掌握Spring框架的核心概念和技术,还能学习到如何在实际项目中高效、灵活地应用Spring,提升开发效率和软件质量。

    Seam_in_Action

    《Seam in Action》这本书是关于JBoss Seam框架的一部权威指南,由业界专家撰写,旨在帮助开发者深入了解和高效使用Seam。JBoss Seam是一个开源的企业级Java框架,它将JavaServer Faces (JSF)、Java Persistence API...

    基于JMX的IT系统管理关键技术研究与实现

    ### 基于JMX的IT系统...3. [JMX in Action](https://www.manning.com/books/jmx-in-action) 以上内容详细阐述了基于JMX的IT系统管理关键技术的研究与实现过程,希望能为相关领域的技术人员提供有价值的参考和帮助。

    ActiveMQ.in.Action

    7. **监控与日志**:掌握如何监控ActiveMQ的运行状态,包括使用内置的Web控制台、JMX管理工具以及通过日志分析进行故障排查。 8. **性能调优**:了解如何调整ActiveMQ的性能,包括内存配置、线程池大小、缓存策略等...

    Active MQ in Action

    《Active MQ in Action》是关于Apache ActiveMQ的权威指南,由Manning...如果你手头有《Manning.Active.MQ.in.Action.May.2010.pdf》这个PDF文件,那么你将拥有一个详尽的学习资源,可以深入研究ActiveMQ的各个方面。

    activeMQ in action 2011

    《ActiveMQ in Action 2011》是2011年出版的一本关于Apache ActiveMQ的权威指南,由行业专家撰写,旨在帮助读者深入理解并有效地使用这一强大的消息中间件。ActiveMQ是Apache软件基金会的一个开源项目,它提供了一个...

    Spring In Action(Third Edition)

    ### Spring In Action(Third Edition) 关键知识点解析 #### 一、Spring框架核心模块与功能 **Spring In Action(Third Edition)** 这本书主要介绍了 **Spring 3.0** 的新特性和用法,同时也涵盖了 **Spring ...

    ActiveMQ In Action.zip

    《ActiveMQ In Action》这本书是了解和掌握Apache ActiveMQ这一开源消息中间件的绝佳资源。ActiveMQ是Apache软件基金会开发的一款高效、灵活且可靠的开源消息代理,它支持多种消息协议,如OpenWire、AMQP、STOMP等,...

Global site tag (gtag.js) - Google Analytics