Sunday, March 06, 2005

ทำความรู้จัก org.apache.commons.modeler Component

ตัว Common Modeler ก็คือ component
ที่ออกแบบมาให้เราสามารถ implement JMX MBean
ได้ง่ายขึ้น(โดยเฉพาะส่วน metadata ซื่งเป็นส่วนที่น่าเบื่อ)

ย้อนอธิบายหลักการของ JMX สักนิดหนึ่ง
Architecture ของ JMX แบ่งเป็น 4 ส่วน
  1. Management Application นี่คือส่วนที่ user ใช้งาน
  2. Distributed Layer เป็นช่องทางการสื่อสารระหว่าง Agent layer กับ Management App. โดยเลือก config ได้หลากหลาย protocol
  3. Agent Layer คือ MBean Server ประกอบด้วย service 4 อย่าง คือ Timer, monitoring, dynamic loading, relationship services.
  4. MBean คือ Class ที่ห่อ Resource ที่ต้องการจัดการไว้ และเปิดช่องทางในการจัดการกัย Resource นั้นๆ
Note: ใครที่เคยใช้หรือได้ยิน Product ตระกูล Tivoli ของ IBM
ตัว Tivoli ก็คือ JMX implementation ของ IBM


Mbean สามารถ implement ได้ 2 แบบหลักคือ
  • Static
  • Dynamic
โดยในส่วน Dynamic มีส่วนขยายเพิ่มเติมอีก 2 แบบคือ
  • ModelMBean
  • OpenMBean
static mbean บังคับให้เราต้อง define interface ให้ชัดเจน
ส่วน Dynamic นั้นยืดหยุ่นกว่า มี interface กลางๆแบบเดียว
(รูปแบบคล้ายๆ Reflection)แล้วเรา implement interface นั้น

ส่วน ModelMBean นั้น Extend จาก Dynamic MBeanแต่เพิ่ม
feature ต่างๆ มีความยืดหยุ่นมากกว่า ส่วนที่ชัดเจนในแง่ implement
ก็คือ ในส่วน ModelMBean นั้น provide class มาให้แล้ว
เราเพียงแต่ plug ส่วน operation หรือ Attribute
ของเราเข้าไปโดยผ่านทาง Method ที่กำหนด (setModelBeanInfo)
กรณี OpenMBean นั้น extend จาก Dynamic เช่นกัน เพียงแต่
มีข้อกำหนดว่า Attribute ทั้งหลายจะมี DataType อยู่ในกลุ่มที่
Spec. กำหนดเท่านั้น (พวก Simple Datatype)

สำหรับ common modeler นั้น base อยู่บน ModelMBean
โดยมีวัตถุประสงค์ให้เราสร้าง MBean ได้ง่ายขึ้น


การใช้งานเบื้องต้น
  • การ define MBean จะทำผ่านทาง XML file
mbean-descriptor.xml
  • ตัว MBean Class นั้นให้ extend BaseModelMBean โดย implement operation เป็น method ธรรมดา
  public class GroupMBean extends BaseModelMBean {
public void addRole(Role role){
}
}
  • การ register mbean จะทำผ่าน Class Registry
   URL url= this.getClass().getResource
("/com/mycompany/mypackage/mbeans-descriptors.xml");
Registry registry = Registry.getRegistry();
registry.loadMetadata(url);

ข้อมูลเพิ่มเติม
JMX Introduction
http://www-128.ibm.com/developerworks/java/library/j-jmx1/
เอกสารสำหรับ Common Modeler จะมีอยู่ใน JavaDoc เท่านั้น
http://jakarta.apache.org/commons/modeler/apidocs/index.html

Related link from Roti

No comments: