2013-04-25 22 views

Trả lời

7

Một hạt tiêu chuẩn có siêu dữ liệu cố định không thay đổi trong suốt thời gian tồn tại của MBean. Dynamic MBeans xác định siêu dữ liệu của chúng khi đang di chuyển và có thể sửa đổi và tái xuất bản siêu dữ liệu của chúng. Hãy suy nghĩ về sự tương tự [xấu] này với Java: Giả sử bạn đã viết một lớp liệt kê số lượng tệp trong một thư mục. Một phương pháp lớp học tiêu chuẩn có thể trông giống như:

public int getFileCount(String directoryName)

Mặt khác, phiên bản động MBean của lớp này sẽ bắt đầu với không có phương pháp, nhưng khi khởi động, nó sẽ quét các thư mục có sẵn, và tạo ra một phương pháp mới cho mỗi thư mục được tìm thấy:

public int getFileCountDir1(); 
public int getFileCountDir2(); 
.... 
public int getFileCountDirN(); 

Vì vậy, đó không phải là thiết lập rất hữu ích, nhưng giả sử bạn muốn tạo MBean hiển thị tất cả Thuộc tính hệ thống của JVM. Vâng .... System Properties thay đổi ... và không có cách nào hợp lý để biết các khóa thuộc tính nào sẽ được xác định trước thời hạn, vì vậy đó sẽ là một đại diện tốt hơn về những gì một Dynamic MBean là tốt cho.

Các ưu và khuyết điểm thực sự đi xuống:

  1. MBeans chuẩn là dễ dàng để tạo và trường lớp hiện tại có thể được bao bọc và tiếp xúc như mbeans chuẩn.
  2. MB động hoạt động mát mẻ khi chúng phục vụ mục đích hữu ích, nhưng chúng có thể nỗ lực nhiều hơn để thực hiện.