RmiAdaptor.java
3.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package com.sitech.jmx.adaptor;
import com.sitech.base.AgentProperties;
import com.sitech.jmx.manage.MBeanManager;
import org.apache.log4j.Logger;
import javax.management.*;
import javax.management.remote.*;
/**
* RMI适配器
*
* @author linxc
*/
public class RmiAdaptor {
private static Logger logger = Logger.getLogger(AgentProperties.class);
private static RmiAdaptor adaptor = new RmiAdaptor();
private RmiAdaptor() {
}
public static RmiAdaptor getInstance() {
return adaptor;
}
public void regist(MBeanServer mbs) {
String sUrl = "service:jmx:rmi://" + AgentProperties.IP_ADDR;
if (null != AgentProperties.JMX_STUB_PORT && !"".equals(AgentProperties.JMX_STUB_PORT)) {
sUrl += ":" + AgentProperties.JMX_STUB_PORT;
}
sUrl += "/jndi/rmi://" + AgentProperties.IP_ADDR + ":"
+ AgentProperties.JMX_PORT + "/jmx";
try {
ObjectName adaptorName = ObjectName
.getInstance("naming:type=rmiAdaptor");
mbs.createMBean("mx4j.tools.naming.NamingService", adaptorName);
Attribute port = new Attribute("Port", Integer
.parseInt(AgentProperties.JMX_PORT));
mbs.setAttribute(adaptorName, port);
mbs.invoke(adaptorName, "start", null, null);
JMXServiceURL url = new JMXServiceURL(sUrl);
JMXConnectorServer connectorServer = JMXConnectorServerFactory
.newJMXConnectorServer(url, null, mbs);
connectorServer.start();
logger.info("Regist RMI Adaptor SUCCESS, URL=" + sUrl);
registDefaultMBean();
} catch (Exception e) {
logger.warn("Regist RMI Adaptor FAILED, URL=" + sUrl, e);
}
}
private void registDefaultMBean() {
MBeanManager.getInstance().registCollMBean("HostName:type=MBean","com.sitech.jmx.mbean.HostName");
}
public static void main(String[] args) throws Exception {
// MBeanServer mbs = MBeanServerFactory.createMBeanServer(AgentProperties.MBEAN_SERVER_DOMAIN);
// MBeanManager manager = MBeanManager.getInstance();
// manager.setMBeanServer(mbs);
//
// RmiAdaptor.getInstance().regist( mbs);
String sUrl = "service:jmx:rmi://" + AgentProperties.IP_ADDR;
if (null != AgentProperties.JMX_STUB_PORT && !"".equals(AgentProperties.JMX_STUB_PORT)) {
sUrl += ":" + AgentProperties.JMX_STUB_PORT;
}
sUrl += "/jndi/rmi://" + AgentProperties.IP_ADDR + ":"
+ AgentProperties.JMX_PORT + "/jmx";
JMXConnector connector = JMXConnectorFactory.newJMXConnector(
new JMXServiceURL(sUrl), null);
connector.connect();
MBeanServerConnection con = connector.getMBeanServerConnection();
// 采集参数
Object[] params = new Object[] { "linxc" };
// MBean实例名
ObjectName objName = new ObjectName("HostName:type=MBean");
String[] signature = new String[] { "java.lang.String" };
Object result = con.invoke(objName, "getHostName", params, signature);
System.out.println(result);
}
}