four types of MBean
- standard MBeans
- dynamic MBeans
- open MBeans
- model MBeans
Specifications
- JSR3
- JMX local specification
- JSR160
- JMX remote implementation. javax.management.remote package
type of service URL
service:jmx:rmi://host
service:jmx:iiop://host
service:jmx:soap://host
service:jmx:local://host
service:jmx:hessian://host
service:jmx:burlap://host
Architecture
- Instrumentation
- Java で書いた MBean のインターフェイス、実装。実装されると Agent から管理できる。
- Agent
- MBean server and services for MBeans
- Remote Management
- Protocol adaptors and standard connectors RMI, JMXMP
user code
// Get the Platform MBean Server
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
// Construct the ObjectName for the MBean we will register
ObjectName name = new ObjectName("com.example.mbeans:type=Hello");
// Create the Hello World MBean
Hello mbean = new Hello();
// Register the Hello World MBean
mbs.registerMBean(mbean, name);
MBean interface
simply an interface...
public interface HelloMBean {
// operations
public void sayHello();
public int add(int x, int y);
// attributes
// a read-only attribute called Name of type String
public String getName();
// a read-write attribute called CacheSize of type int
public int getCacheSize();
public void setCacheSize(int size);
}
MBean implementation
public class Hello implements HelloMBean {
public void sayHello() {
System.out.println("hello, world");
}
public int add(int x, int y) {
return x + y;
}
/* Name 属性の getter. 通常プライベートな実データフィールドを返す。
アプリケーション実行に伴い変化する値は読み込みのみ可とする。
*/
public String getName() {
return this.name;
}
/* キャッシュサイズに関するゲッタ。変更可能な属性 */
public int getCacheSize() {
return this.cacheSize;
}
/* キャッシュサイズに関する雪駄。スレッド環境を考慮し同期とする */
public synchronized void setCacheSize(int size) {
this.cacheSize = size;
System.out.println("Cache size now " + this.cacheSize);
}
最終更新:2005年12月26日 00:25