JMX in Action 学习日志

学习JMX 是JMX IN ACTION 一书
书中的代码中RMI的API已经过时了,
写了些新代码

JMXBookAgent.java //Server
package jmxbook.ch3;

import java.rmi.registry.LocateRegistry;

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;

import com.sun.jdmk.comm.HtmlAdaptorServer;

public class JMXBookAgent {

private MBeanServer server = null;

public JMXBookAgent() {
System.out.println("\n\tCREATE the MBeanServer");
server = MBeanServerFactory.createMBeanServer("JMXBookAget");

startHTMLAdapter();
startRMIConnector();

try {
server.registerMBean(new HelloWorld(), new ObjectName("HelloWorldMBean:name=helloWorld"));
} catch (Exception e) {
e.printStackTrace();
}
}

private void startRMIConnector() {
try {
/*
* 先注册RMI的端口 再进行对RMIConnectorServer的注册
*/
LocateRegistry.createRegistry(2099);
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:2099/server");
JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(url, null, server);
server.registerMBean(cs, new ObjectName("JMXAgent:name=RMI,port=2099"));
cs.start();
} catch (Exception e) {
e.printStackTrace();
}
}

private void startHTMLAdapter() {
HtmlAdaptorServer adapter = new HtmlAdaptorServer();
ObjectName adapterName = null;
try {
adapter.setPort(9092);
adapterName = new ObjectName("JMXBookAgent:name=html,port=9092");
server.registerMBean(adapter, adapterName);
adapter.start();
} catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
System.out.println("\n~~~~~~~~~~~~~~~~~~~~~~~" +
"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println("\n>>> START of JMXBook Agent");
System.out.println("\n>>> CREATE the agent...");

JMXBookAgent jba = new JMXBookAgent();

System.out.println("\nAgent is Ready for Service...\n");
}
}

Client:
package jmxbook.ch3;

import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;

public class RMIClientFactory {

public static MBeanServerConnection getClient() {
MBeanServerConnection mbsc = null;
try {
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:2099/server");
JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
mbsc = jmxc.getMBeanServerConnection();
} catch (Exception e) {
e.printStackTrace();
}
return mbsc;
}

public static void main(String[] args) {
MBeanServerConnection mbsc = RMIClientFactory.getClient();
System.out.println("**************");
try {
mbsc.invoke(new ObjectName("HelloWorldMBean:name=helloWorld"), "printGreeting", null, null);
} catch (Exception e) {
e.printStackTrace();
}

}
}

HelloWorldMBean:
package jmxbook.ch3;

public interface HelloWorldMBean
{
public void setGreeting( String greeting );

public String getGreeting();

public void printGreeting();
}

HelloWorld
package jmxbook.ch3;

public class HelloWorld implements HelloWorldMBean
{

private String greeting = null;

public HelloWorld()
{
this.greeting = "Hello World! I am a Standard MBean";
}

public HelloWorld( String greeting )
{
this.greeting = greeting;
}

public void setGreeting( String greeting )
{
this.greeting = greeting;
}

public String getGreeting()
{
return greeting;
}

public void printGreeting()
{
System.out.println( greeting );
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值