- 浏览: 821024 次
- 性别:
- 来自: 北京、四川
文章分类
最新评论
-
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 589转:http://www.cnblogs.com/dolp ... -
Java内存模型
2015-07-29 13:55 8731. 概述 多任务和 ... -
自定义classloader
2015-07-29 13:54 640转:http://tiantian911.iteye.com ... -
自定义ClassLoader实现java应用核心逻辑模块热部署
2015-07-29 13:51 962转:http://blog.csdn.net/zhangda ... -
java classloader原理初探
2015-07-29 10:14 626转:http://www.cnblogs.com/ ... -
Java 内存分配全面浅析
2015-07-29 08:52 571转:http://blog.csdn.net/shimi ... -
http stream
2014-07-29 16:38 1068StringBuilder sb = new String ... -
Tomcat远程调试
2011-04-09 12:33 1035需要在Tomcat中的catalina.bat中添加如下的一行 ... -
用jmx监控多台服务器(tomcat)
2010-09-08 18:25 4533因为需要写一个后台监控服务器的程序,涉及到jmx,也涉 ... -
call cmd /c start 一点疑问
2010-09-01 10:16 2213call "cmd /c start aaa.bat ... -
Windows计划任务之schtasks
2010-08-30 13:21 3542创建:SCHTASKS /Create /RU SYSTEM ... -
ajax返回值中有中文存在的乱码现象
2010-08-27 16:28 1408ajax返回值中有中文存在的乱码现象,解决就加入下面一行代码即 ... -
MIME TYPE
2010-08-26 16:23 7211最近要做需要在页面上放音频的东西,因此需要用到mime typ ... -
JMX问题
2010-08-20 17:20 5459这个问题貌似是启动tomcat之后就获取不到jmx的链接了,不 ... -
Eclipse控制台乱码
2010-08-05 15:18 4851安装了Eclipse,在运行tomcat时,控制台的中文显示乱 ... -
JMX连接Tomcat的JMX测试类
2010-07-27 15:33 3261首先是为了使tomcat支持JMX,必须在tomcat的启动项 ... -
JMX的一个链接类
2010-07-27 09:37 1419package com.pachira.oamp.jmxS ... -
java中文转unicode码
2010-07-22 11:04 43314转载地址:http://www.iteye.com/topic ... -
获取POST数据的值
2010-07-21 14:17 9865当method为POST,Content-Type为 ... -
apache的tomcat负载均衡(两个tomcat)和集群配置(session复制)
2010-06-05 16:24 4552参考地址:http://www.iteye.com/topic ...
相关推荐
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
|->|->(抽离tomcat源码之生命周期) |->|->(二进制文件加密) |-> (jmx使用演示) |-> (mongodb使用演示) |-> (GUI聊天器-客户端+服务端原始码) |-> (自己实现动态代理) |-> (json与地图,列表,对象之间...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
3.9. 粘合代码和可怕的singleton 3.10. 以J2EE RAR文件的形式部署Spring ApplicationContext 3.11. 基于注解(Annotation-based)的配置 3.11.1. @Autowired 3.11.2. 基于注解的自动连接微调 3.11.3. ...
3.9. 粘合代码和可怕的singleton 3.10. 以J2EE RAR文件的形式部署Spring ApplicationContext 3.11. 基于注解(Annotation-based)的配置 3.11.1. @Autowired 3.11.2. 基于注解的自动连接微调 3.11.3. ...