- 浏览: 238592 次
- 性别:
- 来自: 北京
最新评论
-
Xgeeeeek:
讲的很细致,多谢~
JAVA RMI 实例 -
zontim:
...
JAVA RMI 实例 -
czl026:
简单明了,谢谢
[JMX一步步来] 1、JMX的Hello World -
manxisuo:
jtianguo 写道服务端和客户端在同一个包下,这句代码He ...
JAVA RMI 实例 -
manxisuo:
非常好,多谢!!
JAVA RMI 实例
前面用Html、jconsole等方法连接上了MBeanServer,并能够通过这些界面来操纵MBean。但有时我们需要不借助这些客户端,而是在自己的程序来操纵这些MBean,这就要求我们知道如何在代码里连接MBean。
基于上一篇为jconsole而修改的例子,给出一个示例的客户端程序,基本的操作都有了:
java 代码
- import java.util.Iterator;
- import java.util.Set;
- import javax.management.Attribute;
- import javax.management.MBeanInfo;
- import javax.management.MBeanServerConnection;
- import javax.management.MBeanServerInvocationHandler;
- import javax.management.ObjectInstance;
- import javax.management.ObjectName;
- import javax.management.remote.JMXConnector;
- import javax.management.remote.JMXConnectorFactory;
- import javax.management.remote.JMXServiceURL;
- public class Client {
- public static void main(String[] args) throws Exception {
- JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:9999/server");
- JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
- MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();
- ObjectName mbeanName = new ObjectName("chengang:name=HelloWorld");
- // 把所有Domain都打印出来
- System.out.println("Domains:---------------");
- String domains[] = mbsc.getDomains();
- for (int i = 0; i < domains.length; i++) {
- System.out.println("\tDomain[" + i + "] = " + domains[i]);
- }
- // MBean的总数
- System.out.println("MBean count = " + mbsc.getMBeanCount());
- // 对name属性的操作(属性名的第一个字母要大写)
- mbsc.setAttribute(mbeanName, new Attribute("Name", "PANDA"));// 设值
- System.out.println("Name = " + mbsc.getAttribute(mbeanName, "Name"));// 取值
- // 得到proxy代理后直接调用的方式
- HelloMBean proxy = (HelloMBean) MBeanServerInvocationHandler.newProxyInstance(mbsc, mbeanName, HelloMBean.class, false);
- proxy.printHello();
- proxy.printHello("Raymend");
- // 远程调用的方式
- mbsc.invoke(mbeanName, "printHello", null, null);
- mbsc.invoke(mbeanName, "printHello", new Object[] { "熊猫烧香" }, new String[] { String.class.getName() });
- // 得mbean的信息
- MBeanInfo info = mbsc.getMBeanInfo(mbeanName);
- System.out.println("Hello Class: " + info.getClassName());
- System.out.println("Hello Attriber:" + info.getAttributes()[0].getName());
- System.out.println("Hello Operation:" + info.getOperations()[0].getName());
- // 得到所有的MBean的ObjectName
- System.out.println("all ObjectName:---------------");
- Set set = mbsc.queryMBeans(null, null);
- for (Iterator it = set.iterator(); it.hasNext();) {
- ObjectInstance oi = (ObjectInstance) it.next();
- System.out.println("\t" + oi.getObjectName());
- }
- // 注销
- // mbsc.unregisterMBean(mbeanName);
- // 关闭MBeanServer连接
- jmxc.close();
- }
- }
运行后的效果如下:
Domains:---------------
Domain[0] = HelloAgent
Domain[1] = JMImplementation
Domain[2] = chengang
MBean count = 3
Name = Chen.Gang
Hello Class: mbean.connector.Hello
Hello Attriber:Name
Hello Operation:printHello
all ObjectName:---------------
chengang:name=HelloWorld
JMImplementation:type=MBeanServerDelegate
HelloAgent:name=htmladapter,port=8082
Domain[0] = HelloAgent
Domain[1] = JMImplementation
Domain[2] = chengang
MBean count = 3
Name = Chen.Gang
Hello Class: mbean.connector.Hello
Hello Attriber:Name
Hello Operation:printHello
all ObjectName:---------------
chengang:name=HelloWorld
JMImplementation:type=MBeanServerDelegate
HelloAgent:name=htmladapter,port=8082
它有两个Console输出,这里是另一个
Hello World, PANDA
Hello , 熊猫
Hello World, PANDA
Hello World, PANDA
Hello , 熊猫烧香
发表评论
-
Lucene全文检索样例(解决大文本建索引)
2008-01-31 10:05 6533建索引:package com.pccw; i ... -
txt读取字符串(为实习生作的例子)
2008-01-29 18:27 1985try { FileInputStream fi = n ... -
关于Lucene索引合并解决方法
2008-01-28 10:21 9340由于Clustor的问题造成无法对索引进行同步,脑子中马上浮现 ... -
Spring 2.0 AOP 与事务配置
2007-11-20 16:13 2829Spring 2.0 AOP 与事务配置 ********* ... -
关于Soeckt 流操作的数据转换工具方法
2007-11-02 10:50 2228java 代码 package com ... -
Java socket开发实例入门
2007-08-21 16:08 12233socket用中文意思就是我 ... -
不使用webwork标签直接用Jsp取得Action中的值
2007-05-22 14:23 3100今天突然一个同事问我webwork如果不用标签只用JSP ... -
23种模式趣味解释
2007-05-22 10:36 2040创建型模式 1、FACTORY ... -
关于领域逻辑的三个主要模式
2007-05-13 22:36 2736事务脚本 事务脚本比较好理解,简单来说,就是将大多是事务,以过 ... -
又谈领域模型
2007-04-29 09:58 2276昨天,突然和阿敏谈起领域模型,发现自己的理解还是 ... -
简单Socket编程,来理解Socket
2007-02-27 09:34 2265Server端: java 代码 p ... -
[JMX一步步来] 9、基于JBoss来写MBean
2007-02-02 13:31 13856前面都是用JDK自带的JMX ... -
[JMX一步步来] 7、用JDK5.0的JConsole来连接MBean
2007-02-02 13:09 8674前面所有看效果都是通过Html网页来看的。JDK5.0自带了一 ... -
[JMX一步步来] 6、模型Bean:Model Bean
2007-02-02 13:06 5784在上一节是用apache的commons-modeler来开发 ... -
[JMX一步步来] 5、用Apache的commons-modeler来辅助开发JMX
2007-02-02 12:59 7009一、前言 每一个MBean都要有一个接口,比如前面的H ... -
[JMX一步步来] 4、动态MBean:DynamicMBean
2007-02-02 12:48 6573一、前言 动态MBean是在运行期才定义它的属性和方法 ... -
[JMX一步步来] 3、Notification的使用
2007-02-02 12:36 6240一、简介 Mbean之间的通信是必不可少的, ... -
[JMX一步步来] 2、JMX简介
2007-02-02 11:25 8814一、JMX简介 JMX是一 ... -
[JMX一步步来] 1、JMX的Hello World
2007-02-02 11:23 10228一、JMX简介 什么是JMX?在一篇网文中是这样说的: ... -
JAVA RMI 实例
2007-02-02 10:51 39377JAVA RMI 快速入门实例 本实例为参考多篇文章写就而成 ...
相关推荐
Java Management Extensions(JMX)是Java平台上的一个标准技术,用于管理和监控应用程序、操作系统和网络设备等资源。它提供了一种灵活的框架,允许开发者创建、注册和管理名为Managed Beans(MBeans)的对象,这些...
8. **连接器API(JMX Connectors)**:RMI和JMX Remoting接口的使用,以及如何配置JMX连接器服务器。 在"jmx_examples"压缩包中,可能包含了以上各个方面的代码示例,通过这些示例,读者可以更直观地理解和应用JMX...
通常情况下,开发者只需要编写一个普通的JavaBean(POJO),然后将其注册为MBean,就能实现资源的管理和监控。 示例: ```java public class ServerImpl { public final long startTime; public ServerImpl() { ...
【JMX学习——一步步来】 JMX,全称为Java Management Extensions,是一个用于植入管理功能到Java应用程序的框架。它提供了一套标准的接口和服务,使得开发者可以在任何Java应用中实现管理和监控。对于初学者来说,...
总的来说,JMX和MBean Server提供了一种标准、灵活的管理方式,使得Java应用的管理和监控变得更加便捷。通过结合Spring框架,开发者可以更轻松地在应用中集成JMX功能,实现对应用的全方位管理。
JMX 1.2.1 Reference Implementation(重点) Include com.sun.jdmk.comm.HtmlAdaptorServer class http://www.sun.com/software/jdmk/ Downloads, sun-jdmk-runtime-5.1-b34.2.zip/SUNWjdmk/5.1/lib/jdmkrt.jar
Eclipse 插件"JMX 连接工具"为开发者提供了一个便捷的途径,通过集成的开发环境来连接并管理JMX服务端,从而实现远程或本地的应用程序监控。 首先,JMX客户端连接信息是理解如何与JMX服务端建立通信的关键。JMX...
JMX以RMI方式连接的场景示例 JMX(Java Management Extensions)是一种Java技术,用于管理...JMX框架提供了一种灵活、可扩展和高效的方式来管理和监控应用程序,而RMI连接方式允许远程客户端访问MBean提供的管理功能。
JMX 提供了一种框架和API来监控和管理运行时的应用程序,使得开发者可以轻松地添加管理功能到他们的应用中。 **什么是MBean?** MBean(Managed Bean)是JMX的核心概念,它代表了一个可管理的资源,通常是一个Java...
【JMX 一步步来】 JMX(Java Management Extensions)是一个用于在Java应用程序中添加管理和监控功能的框架。它提供了一套标准的接口和服务,使得开发者能够轻松地在Java应用中集成管理和监控的能力。JMX的核心概念...
然后,客户端通过RMI连接到服务器的JMX代理,使用JMX API来查询或操作MBean。例如,你可以获取内存使用情况、线程状态、垃圾回收器信息等。在实际应用中,这有助于进行性能监控、故障排查和资源优化。 在开发过程中...
8. **使用与实践**:学习这个示例可以帮助开发者了解如何在实际项目中利用JMX来增强应用程序的管理和监控能力。 总之,"JMX HelloWorld Download"是一个学习JMX基础的实用资源,通过解压并研究其中的源代码,可以...
《JMX技术介绍》一书显然是为了深入探讨这一技术而编写的,配套源代码则提供了实践示例,帮助读者更好地理解和应用JMX。 1. JMX架构: JMX架构由管理代理(MBeans)、服务提供者接口(MBean Server)和管理客户端...
Java Management Extensions(JMX)是Java平台上的一个标准...通过理解MBean、MBean Server和连接器的工作原理,以及如何编写和使用JMX代码,我们可以更好地控制和优化我们的应用程序,提升系统的可维护性和稳定性。
Java Management Extensions(JMX)是Java平台中用于管理和监控应用程序、操作系统、网络设备等资源的一种标准框架。通过JMX,开发者可以创建管理代理(MBeans),这些代理暴露了各种管理特性,使得系统管理员可以...
2. jconsole:JDK自带的图形化管理工具,通过JMX连接到目标应用程序,展示性能数据和MBean信息。 3. jinfo、jmap、jstack等命令行工具:利用JMX获取JVM相关信息。 六、JMX实战入门 创建一个简单的MBean,例如管理...
Java Management Extensions(JMX)是Java平台上的一个标准技术,用于管理和监控应用程序、服务和设备。JMX允许开发者创建管理接口,以便对运行时的组件进行动态监控和管理。在这个"jmx_examples.rar"压缩包中,包含...
它扩展了基本的JMX功能,使得管理者可以通过网络来连接到MBean服务器,执行操作、获取属性值或接收通知。这个版本可能包含了RMI(Remote Method Invocation)的实现,这是Java中常用的远程调用协议,用于实现JMX的...