学习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(Java Management Extensions)的两个重要服务:监控服务和定时器服务。这些服务在管理环境中起着至关重要的作用,能够帮助我们实时了解和应对资源的状态变化。 ...
《Manning - JMX in Action》这本书聚焦于Java Management Extensions (JMX),探讨了如何利用JMX来管理和监控整个企业的资源,包括软件和硬件。本书不仅适用于已经熟悉JMX的技术人员,也适合希望深入了解JMX的新手。...
在《JMX in Action》这本书中,读者将深入了解JMX技术,学习如何有效地利用它来创建可管理和自我维护的Java应用程序。 JMX的核心理念是将管理系统分解为可管理和可交互的组件,这些组件被称为管理 beans(MBeans)...
在本章《JMX实战(四)》中,我们将深入探讨最简单的MBean类型:标准MBean。标准MBean适用于具有稳定、已知接口的资源。这一章将介绍如何使用标准MBean来配置应用程序资源(如日志工具和应用属性),以及如何将应用...
在《JMX IN ACTION》一书的第十四章中,作者探讨了如何利用JMX与企业级JavaBean(EJB)相结合,以增强EJB应用的管理和配置能力。 EJB是Java 2 Enterprise Edition(J2EE,现在称为Java EE)的核心组成部分,主要...
3. **故障恢复**:利用 JMX 收集的日志和诊断信息,可以帮助快速定位问题,从而采取措施进行故障恢复。 #### 六、JMX 的未来发展 随着云计算和微服务架构的发展,JMX 也在不断地演进和完善。未来的 JMX 将更加关注...
【JMX IN ACTION(七)】章节探讨了JMX中的Model MBean,这是一种特殊类型的MBean,开发者无需编写MBean类。Model MBean是JMX规范定义的一部分,保证在所有符合JMX标准的代理中可用,它是一个通用的MBean,可以被实例...
《Manning - JMX in Action》是一本深入探讨Java Management Extensions(JMX)技术的专业书籍。JMX是Java平台的一项核心功能,它提供了一种标准的框架,用于管理和监控Java应用程序,包括创建、配置、发现和管理...
《JMX in Action》是一本深入探讨Java管理扩展(Java Management Extensions, JMX)技术的专业书籍。这本书旨在帮助读者理解如何使用JMX来管理和监控Java应用程序。随书附带的源码是作者为了阐述概念、技术和实践...
《Spring in Action 3.0》是一本针对Spring框架详细...通过阅读《Spring in Action 3.0》,开发者不仅能掌握Spring框架的核心概念和技术,还能学习到如何在实际项目中高效、灵活地应用Spring,提升开发效率和软件质量。
《Seam in Action》这本书是关于JBoss Seam框架的一部权威指南,由业界专家撰写,旨在帮助开发者深入了解和高效使用Seam。JBoss Seam是一个开源的企业级Java框架,它将JavaServer Faces (JSF)、Java Persistence API...
### 基于JMX的IT系统...3. [JMX in Action](https://www.manning.com/books/jmx-in-action) 以上内容详细阐述了基于JMX的IT系统管理关键技术的研究与实现过程,希望能为相关领域的技术人员提供有价值的参考和帮助。
7. **监控与日志**:掌握如何监控ActiveMQ的运行状态,包括使用内置的Web控制台、JMX管理工具以及通过日志分析进行故障排查。 8. **性能调优**:了解如何调整ActiveMQ的性能,包括内存配置、线程池大小、缓存策略等...
《Active MQ in Action》是关于Apache ActiveMQ的权威指南,由Manning...如果你手头有《Manning.Active.MQ.in.Action.May.2010.pdf》这个PDF文件,那么你将拥有一个详尽的学习资源,可以深入研究ActiveMQ的各个方面。
《ActiveMQ in Action 2011》是2011年出版的一本关于Apache ActiveMQ的权威指南,由行业专家撰写,旨在帮助读者深入理解并有效地使用这一强大的消息中间件。ActiveMQ是Apache软件基金会的一个开源项目,它提供了一个...
### Spring In Action(Third Edition) 关键知识点解析 #### 一、Spring框架核心模块与功能 **Spring In Action(Third Edition)** 这本书主要介绍了 **Spring 3.0** 的新特性和用法,同时也涵盖了 **Spring ...
《ActiveMQ In Action》这本书是了解和掌握Apache ActiveMQ这一开源消息中间件的绝佳资源。ActiveMQ是Apache软件基金会开发的一款高效、灵活且可靠的开源消息代理,它支持多种消息协议,如OpenWire、AMQP、STOMP等,...