27 //开起RMI服务
28 cs.start();
29
30 System.out.println(" the mxbean server is start");
31 }
32 }
33
代码:Client端
1
2 package test.jmx.mxbean.simple;
3
4
5
6 import javax.management.MBeanServerConnection;
7 import javax.management.ObjectName;
8 import javax.management.openmbean.ArrayType;
9 import javax.management.openmbean.CompositeData;
10 import javax.management.openmbean.CompositeDataSupport;
11 import javax.management.openmbean.CompositeType;
12 import javax.management.openmbean.OpenType;
13 import javax.management.openmbean.SimpleType;
14 import javax.management.remote.JMXConnector;
15 import javax.management.remote.JMXConnectorFactory;
16 import javax.management.remote.JMXServiceURL;
17
18 public class Client {
19
20 public static void main(String[] args) throws Exception{
21
22 //构造一个Rmi-Connector
23 JMXServiceURL url = new JMXServiceURL(
24 "service:jmx:rmi:///jndi/rmi://localhost:9999/server");
25 JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
26 MBeanServerConnection msc = jmxc.getMBeanServerConnection();
27
29
30 Object tiger = msc.getAttribute(name, "Tiger");
31 if(tiger instanceof CompositeData){
32 System.out.println("返回的Tiger的类型为CompositeData");
33 CompositeData data = (CompositeData)tiger;
34 String nm = (String)(data.get("name"));
35 String[] foods = (String[])(data.get("foodNames"));
36 System.out.println(" the tiger's name is :"+nm);
37 System.out.println(" the tiger's foods is :"+foods);
38 }
39
40 Integer count1 = (Integer)msc.getAttribute(name, "TigerCount");
41 System.out.println(" the amount of tiger is:"+count1);
42
43 //构造一个CompositeData代表Tiger实例,用于addTiger(Tiger)的参数
44 CompositeType ct2 = new CompositeType("test.jmx.mxbean.Tiger", " tiger---",
45 new String[]{"name","foodNames"},
46 new String[]{"-name-","-foods-"},
47 new OpenType[]{SimpleType.STRING,new ArrayType(1,SimpleType.STRING)});
48
49 CompositeData ct2V = new CompositeDataSupport(ct2,
50 new String[]{"name","foodNames"},
51 new Object[]{"the second tiger",new String[]{"food1","food2","food3"}});
52
53 Object returnValue = msc.invoke(name, "addTiger",
54 new Object[]{ct2V},
55 new String[]{CompositeData.class.getName()});
56 //得到服务端Tiger的数量,新增了以后,应该是2只
57 Integer count2 = (Integer)msc.getAttribute(name, "TigerCount");
58 System.out.println(" after invoke addTiger(),the amount of tiger is:"+count2);
59 }
60 }
61