ControllerMBean:
package jmx;
public interface ControllerMBean {
public String Useage();
public String[] disPlayDirectoty(String directory);
}
Controller:
package jmx;
import java.io.File;
import java.text.NumberFormat;
public class Controller implements ControllerMBean{
@Override
public String Useage()
{
File f = new File("c:\\");
System.out.println("总空间:"+f.getTotalSpace());
System.out.println("可用空间:"+f.getUsableSpace());
System.out.println("自由空间:"+f.getFreeSpace());
double n = (double)f.getUsableSpace()/f.getTotalSpace();
return String.valueOf(n).substring(2,4)+"%";
}
@Override
public String[] disPlayDirectoty(String directory)
{
File f = new File(directory);
File[] files=f.listFiles();
String[] d = new String[files.length];
for(int i=0;i<files.length;i++)
{
d[i] = files[i].getName();
System.out.println(files[i]);
}
return d;
}
}
StartJMXServer:
package jmx;
import java.lang.management.*;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import javax.management.*;
import javax.management.remote.JMXConnectorServer;
import javax.management.remote.JMXConnectorServerFactory;
import javax.management.remote.JMXServiceURL;
public class StartJMXServer {
public static void main(String[] args) throws Exception {
int rmiPort = 1099;
String jmxServerName = "com.example.mbeans";
// jdkfolder/bin/rmiregistry.exe 9999
Registry registry = LocateRegistry.createRegistry(rmiPort);
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
ObjectName objName = new ObjectName(jmxServerName + ":type="
+ "Controller");
mbs.registerMBean(new Controller(), objName);
JMXServiceURL url = new JMXServiceURL(
"service:jmx:rmi:///jndi/rmi://localhost:" + rmiPort + "/"
+ jmxServerName);
System.out.println("JMXServiceURL: " + url.toString());
JMXConnectorServer jmxConnServer = JMXConnectorServerFactory
.newJMXConnectorServer(url, null, mbs);
jmxConnServer.start();
// Wait forever
System.out.println("Waiting forever...");
Thread.sleep(Long.MAX_VALUE);
}
}
Client:
package jmx;
import java.io.IOException;
import java.net.MalformedURLException;
import javax.management.MBeanServerConnection;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
public class Client {
public static void echo(String msg) {
System.out.println(msg);
}
public static void main(String[] args) throws IOException {
echo("/nCreate an RMI connector client and "
+ "connect it to the RMI connector server");
JMXServiceURL url = new JMXServiceURL(
"service:jmx:rmi:///jndi/rmi://localhost:1099/com.example.mbeans");
JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
echo("/nGet an MBeanServerConnection");
MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();
// Get domains from MBeanServer
echo("/nDomains:");
String domains[] = mbsc.getDomains();
for (int i = 0; i < domains.length; i++) {
echo("/tDomain[" + i + "] = " + domains[i]);
}
}
}