JMX
JXMサーバー機能をRMIを使って処理を実行してみる
MBean.java
package sample;
public interface MBean {
public static final String SERVICE = "service:jmx:rmi:///jndi/rmi://localhost/sample";
public static final String OBJECT_NAME = "sample.jmx:Type=JmxServer";
public void test();
}
MBeanImpl.java
package sample;
import javax.management.StandardMBean;
public class MBeanImpl extends StandardMBean implements MBean {
public MBeanImpl() {
super(MBean.class,false);
}
public void test() {
System.out.println("hoge fuga foobar");
}
}
Server.java
package sample;
import java.rmi.registry.LocateRegistry;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import javax.management.remote.JXMServiceURL;
import javax.management.remote.JMXConnectorServer;
import javax.management.remote.JMXConnectorServerFactory;
import java.lang.management.ManagementFactory;
public class Server {
public static void main(String[] args) throws Exception {
LocateRegistry.createRegistry(1099);
MBeanServer mbean = ManagementFactory.getPlatformMBeanServer();
mbean.registerMBean(new MBeanImpl(),new ObjectName(MBean.OBJECT_NAME));
JMXServiceURL url = new JMXServiceURL(MBean.SERVICE);
JMXConnectorServer server = JMXConnectorServerFactory.newJMXConnectorServer(url,null,mbean);
server.start();
}
}
コンパイル後に実行しJMXサーバーを起動しておく
Client.java
package sample;
import javax.management.remote.JMXServiceURL;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.MBEanServerConnection;
import javax.management.ObjectName;
public class Client {
public static void main(String[] args) throws Exception {
JMXServiceURL url = new JMXServiceURL(MBean.SERVICE);
JMXConnector connector = JMXConnectorFactory.connect(url);
MBeanServerConnection conn = connector.getMBeanServerConnection();
ObjectName oname = new ObjectName(MBean.OBJECT_NAME);
conn.invoke(oname,"test",null,null));
}
}