- 浏览: 831089 次
- 性别:
- 来自: 北京、四川
文章分类
最新评论
-
sunbeamzheng:
总结的很好,好好看看。 拷贝问题确实很需要注意,特别是影不影响 ...
java深拷贝与浅拷贝 -
xmh8023:
...
获取POST数据的值 -
xmh8023:
我访问别的服务器怎么办?急求
获取POST数据的值 -
xmh8023:
String urlString="http://l ...
获取POST数据的值 -
lv12312:
Tomcat 7的老版本么?有bug的,https://iss ...
JMX问题
服务端代码如下
以下是客户端代码:
以下是HelloWorldMBean
以下是HelloWorld.java类:
package com.rmi; import java.rmi.registry.LocateRegistry; import java.util.HashMap; import java.util.Map; 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; public class Server { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { LocateRegistry.createRegistry(1234);//必须要这句,参数为端口号 ObjectName helloName = new ObjectName("QianYu:type=oamp,name=hello"); HelloWorld hello = new HelloWorld(); MBeanServer server = MBeanServerFactory.createMBeanServer(); // provide a valid username and password (e.g., via program arguments) String user = "monitorRole"; String pw = "password"; // place the username and password in a string array of credentials that // can be used when making the connection to the remote JMX agent String[] credentials = new String[] { user, pw }; // the string array of credentials is placed in a map keyed against the // well-defined credentials identifier string Map<String, String[]> props = new HashMap<String, String[]>(); props.put("jmx.remote.credentials", credentials); // supply the map of credentials to the connect call JMXServiceURL address = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:1234/jmxrmi"); JMXConnectorServer cserver = JMXConnectorServerFactory.newJMXConnectorServer(address, props, server); cserver.start(); server.registerMBean(hello, helloName); } }
以下是客户端代码:
package com.rmi; import java.util.HashMap; import java.util.Hashtable; import java.util.Map; import javax.management.JMX; import javax.management.MBeanServerConnection; 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 { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { // provide a valid username and password (e.g., via program arguments) String user = "monitorRole"; String pw = "password"; // place the username and password in a string array of credentials that // can be used when making the connection to the remote JMX agent String[] credentials = new String[] { user, pw }; // the string array of credentials is placed in a map keyed against the // well-defined credentials identifier string Map<String, String[]> props = new HashMap<String, String[]>(); props.put("jmx.remote.credentials", credentials); // supply the map of credentials to the connect call JMXServiceURL address = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:1234/jmxrmi"); JMXConnector connector = JMXConnectorFactory.connect(address, props); // it is a trivial matter to get a reference for the MBean server // connection to the remote agent MBeanServerConnection mbsc = connector.getMBeanServerConnection(); connector.connect(); ObjectName objectName=new ObjectName("hello:name=hello"); if(!mbsc.isRegistered(objectName)){ mbsc.createMBean("com.rmi.HelloWorld", objectName,null,null); } System.out.println("\nMBean count = " + mbsc.getMBeanCount()); for (ObjectInstance object : mbsc.queryMBeans(null, null)) {//服务器上的所有MBean System.out.println("object.getObjectName="+object.getObjectName()); } //hello对象属于远程的对象,调用sayHello方法,则是调用服务器端的sayHello方法 final HelloWorldMBean hello = JMX.newMBeanProxy(mbsc, objectName, HelloWorldMBean.class); // hello.setName("Peter"); hello.sayHello(); // ObjectName unObjectName=new ObjectName("hello:name=hello"); // Hashtable map=new Hashtable(); // map.put("name", "hello"); //unregister MBean // ObjectName unObjectName=new ObjectName("hello",map); // ObjectName unObjectName=ObjectName.getInstance("hello:name=hell*"); // for (ObjectInstance object : mbsc.queryMBeans(unObjectName, null)) {//这里可根据查询结果进行注销MBean // mbsc.unregisterMBean(object.getObjectName()); // } System.out.println("\nMBean count = " + mbsc.getMBeanCount()); System.out.println("end"); } }
以下是HelloWorldMBean
package com.rmi; import java.io.Serializable; public interface HelloWorldMBean extends Serializable{ void setName(String name); String getName(); void sayHello(); String getHelloString(); int getId(); String toString(); int hashCode(); boolean equals( Object obj); HelloWorldMBean getThis(); }
以下是HelloWorld.java类:
package com.rmi; import java.io.Serializable; import java.util.concurrent.atomic.AtomicInteger; import javax.management.AttributeChangeNotification; import javax.management.MBeanRegistration; import javax.management.MBeanServer; import javax.management.NotificationBroadcasterSupport; import javax.management.ObjectName; public class HelloWorld implements HelloWorldMBean, Serializable{ static AtomicInteger count = new AtomicInteger(); private static final long serialVersionUID = 1627976932729278650L; int id = 0; String name; public synchronized void setName(String name) { this.name = name; } public synchronized String getName() { return name; } public synchronized void sayHello() { System.out.println(getHelloString()); } public synchronized String getHelloString() { // System.out.println("1111"); return "Hello, " + name; } public synchronized int getId() { return id; } public HelloWorldMBean getThis() { return this; } }
发表评论
-
Java并发编程:volatile关键字解析
2015-07-30 11:30 642转:http://www.cnblogs.com/dolp ... -
Java内存模型
2015-07-29 13:55 9201. 概述 多任务和 ... -
自定义classloader
2015-07-29 13:54 698转:http://tiantian911.iteye.com ... -
自定义ClassLoader实现java应用核心逻辑模块热部署
2015-07-29 13:51 1026转:http://blog.csdn.net/zhangda ... -
java classloader原理初探
2015-07-29 10:14 674转:http://www.cnblogs.com/ ... -
Java 内存分配全面浅析
2015-07-29 08:52 614转:http://blog.csdn.net/shimi ... -
http stream
2014-07-29 16:38 1152StringBuilder sb = new String ... -
Tomcat远程调试
2011-04-09 12:33 1064需要在Tomcat中的catalina.bat中添加如下的一行 ... -
用jmx监控多台服务器(tomcat)
2010-09-08 18:25 4582因为需要写一个后台监控服务器的程序,涉及到jmx,也涉 ... -
call cmd /c start 一点疑问
2010-09-01 10:16 2252call "cmd /c start aaa.bat ... -
Windows计划任务之schtasks
2010-08-30 13:21 3602创建:SCHTASKS /Create /RU SYSTEM ... -
ajax返回值中有中文存在的乱码现象
2010-08-27 16:28 1450ajax返回值中有中文存在的乱码现象,解决就加入下面一行代码即 ... -
MIME TYPE
2010-08-26 16:23 7265最近要做需要在页面上放音频的东西,因此需要用到mime typ ... -
JMX问题
2010-08-20 17:20 5514这个问题貌似是启动tomcat之后就获取不到jmx的链接了,不 ... -
Eclipse控制台乱码
2010-08-05 15:18 4900安装了Eclipse,在运行tomcat时,控制台的中文显示乱 ... -
JMX连接Tomcat的JMX测试类
2010-07-27 15:33 3303首先是为了使tomcat支持JMX,必须在tomcat的启动项 ... -
JMX的一个链接类
2010-07-27 09:37 1472package com.pachira.oamp.jmxS ... -
java中文转unicode码
2010-07-22 11:04 43435转载地址:http://www.iteye.com/topic ... -
获取POST数据的值
2010-07-21 14:17 9929当method为POST,Content-Type为 ... -
apache的tomcat负载均衡(两个tomcat)和集群配置(session复制)
2010-06-05 16:24 4608参考地址:http://www.iteye.com/topic ...
相关推荐
本项目包括服务端和客户端两部分,为理解 Netty 在即时通讯中的应用提供了实践基础。 1. **Netty 框架介绍** - Netty 是一个非阻塞的 I/O 框架,它基于 Java NIO(非阻塞 I/O)实现,提供了高性能、低延迟的网络...
jmxdemo.rar是一个包含JMX服务端和客户端的示例,帮助我们理解如何利用JMX进行远程监控Java项目,而VisualVM是一个强大的Java诊断工具,它可以利用JMX进行远程连接和监控。 首先,我们需要了解JMX的基本概念。JMX的...
首先,JMX客户端连接信息是理解如何与JMX服务端建立通信的关键。JMX客户端通常需要知道服务端的主机名、端口号以及可能的安全凭证(如用户名和密码)。在Java中,这可以通过`javax.management.remote....
4. **网络通信**:`JmiServer` 可能会包含网络通信相关的代码,用于接收和响应来自客户端的请求。 **JmiClient** `JmiClient` 文件则代表客户端部分,它的任务是连接到服务端并执行管理操作。客户端可能包括以下...
根据上下文,这里应该包括编译服务端代码和客户端代码。 3. 启动调试:通过执行“mvntars:build”目标,并传递特定的参数来启动本地服务。具体参数包括应用名称(Dapp)、服务端名称(Dserver)、JVM参数等。这里...
【描述】:本项目展示了如何使用Maven构建工具、Spring框架以及Apache CXF库来开发Web服务的两端——服务端(Service)和客户端(Client)。这是一个基础但全面的示例,适合开发者在理解或开发自己的Web服务时参考,...
服务端需要开启一个RMI注册表或JMX服务器,以便客户端能够发现和连接。为了安全,通常还需要设置认证和授权机制,限制对远程资源的访问。 **文件“java远程监控源码”** 这个压缩包可能包含了一个简单的Java远程...
2. **Google Web Toolkit (GWT)**:GWT允许开发者使用Java编写客户端代码,然后通过编译器将其转换为优化过的JavaScript,以便在各种浏览器上运行。它包括了丰富的UI组件、代码分割、异步通信(GWT RPC)等功能,...
`metrics-jmx`项目的源代码提供了实际示例,展示了如何在服务端创建和更新指标,以及如何通过JMX客户端工具(如JConsole或VisualVM)查看和操作这些指标。这对于开发者调试、优化和监控生产环境的应用非常有价值。 ...
Shell Plus 工具利用RMI的特性,使得所有数据操作都在服务端完成,客户端仅通过注册中心调用服务端的代码来执行操作,获取结果。用户可以从其开源地址(https://github.com/0nise/shell-plus)获取源码,自行编译或...
理解TCP/IP协议,学会编写网络客户端和服务端,是构建分布式系统的基础。 八、设计模式 设计模式是软件工程中解决常见问题的最佳实践,如工厂模式、单例模式、装饰器模式、观察者模式等。学习并应用这些模式可以...
2. JMXConnectorServer:提供了启动和配置JMX连接器的服务端接口,支持多种协议,如RMI和JMXMP。 3. JMXConnectorClient:客户端工具,用于连接到远程MBeanServer,实现对远程资源的管理。 五、使用jmxtools.jar...
开发者可能创建了各种示例,如RMI服务端和客户端的交互,JNDI查找和绑定对象到LDAP目录,JRMP的远程调用,JMX监控应用程序状态,以及JMS消息的发送和接收。通过这些测试,可以更好地理解和掌握这些技术的使用方式,...
接着,使用JAX-WS工具(如wsimport)生成服务端和客户端的代码。服务端会部署在应用服务器上,而客户端可以通过生成的代理类调用Web服务。JAXB则在服务的输入输出中处理XML数据的转换。 6. **优势**:JAX-WS和JAXB...
文件"POS_SQL"可能包含了数据库的设计和初始化脚本,"POS-Home"可能是指项目主入口或者用户界面相关的代码,而"POS-Branch"和"POS-Server"则分别对应分店客户端和服务端的源代码。通过这些文件,开发者可以逐步构建...
1. **源代码**:Java编写的远程桌面客户端和服务端程序,可能包括RMI或JMX相关接口实现。 2. **文档**:可能有详细的设计文档,说明如何配置和使用这套远程桌面系统。 3. **示例**:可能包含一些示例代码,展示如何...
1. **Nagios插件原理**:`nagios_check_jmx` 使用JMX的客户端库连接到运行中的Java进程,通过指定的MBean查询服务端的特定属性。插件执行后,会返回查询结果,并根据预设的阈值判断是否触发警报。 2. **配置与安装*...
5. **ipc**: Hadoop的远程过程调用(IPC)层在此,它支持服务端和客户端之间的高效通信。例如,NameNode与DataNode之间的通信就是基于IPC实现的。 6. **net**: 网络相关的组件,如Socket通信、网络地址解析等,都在...
在MINA应用中,开发者会创建服务端和客户端的处理器类,这些类会继承自MINA提供的基础类,如`IoHandler`,并实现相应的事件处理方法,如`sessionCreated()`、`messageReceived()`等,以响应网络连接的建立和数据的...