一、MBean安裝與概念
MBean是Java平台中管理的標準方式,它提供了一個管理介面,讓開發者可以監控和管理Java應用程序。在啟動了Java應用程序之後,MBean會在虛擬機中註冊,因此變得可以通過JMX(Java Management Extensions)訪問。MBean包含了多個屬性和方法,通過這些屬性和方法,可以監控和管理Java應用程序。
下面是一個簡單的MBean程序:
“`
public interface HelloMBean {
public void sayHello();
public void setName(String name);
public String getName();
}
“`
“`
public class Hello implements HelloMBean {
private String name;
public void sayHello() {
System.out.println(“hello, ” + name);
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
“`
在這個例子中,我們定義了一個MBean介面HelloMBean,它包含了sayHello(), setName()和getName()三個方法。接著我們實現了這個介面,定義了一個Hello類,並實現了這三個方法。
二、MBeanServer類的使用
在Java平台中,MBeanServer是一個重要的類,它提供了一種管理MBean的方式。在Java EE應用程序中,MBeanServer類是在JNDI命名上下文中註冊的。
MBeanServer有幾個重要的方法:
- createMBean(String className, ObjectName name)
- getAttribute(ObjectName name, String attribute)
- setAttribute(ObjectName name, Attribute attribute)
- invoke(ObjectName name, String operationName, Object[] params, String[] signature)
下面是一個簡單的MBeanServer例子:
“`
import javax.management.*;
import java.lang.management.ManagementFactory;
public class HelloAgent {
public static void main(String[] args) throws Exception {
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
ObjectName name = new ObjectName(“org.xyz:type=Hello”);
Hello mbean = new Hello();
mbs.registerMBean(mbean, name);
System.out.println(“Waiting forever…”);
Thread.sleep(Long.MAX_VALUE);
}
}
“`
在這個例子中,我們使用MBeanServer註冊了一個名為Hello的MBean。
三、MBeanServer憨豆先生
MBean對於Java平台來說非常重要,它可以很好地擴展Java應用程序的功能。在憨豆先生中,MBeanServer也扮演著非常重要的角色。MBeanServer提供了一種管理MBean的方式,開發者可以通過MBeanServer註冊、取消註冊、查詢和管理MBean。
下面是一個使用MBeanServer的例子:
“`
import javax.management.*;
import java.lang.management.ManagementFactory;
public class HelloAgent {
public static void main(String[] args) throws Exception {
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
ObjectName name = new ObjectName(“org.xyz:type=Hello”);
Hello mbean = new Hello();
mbs.registerMBean(mbean, name);
System.out.println(“Waiting forever…”);
Thread.sleep(Long.MAX_VALUE);
}
}
“`
在這個例子中,我們使用了MBeanServer註冊了一個名為Hello的MBean,並等待用戶對它進行操作。
四、MBean is not running
在Java平台中,MBean是一個非常重要的概念,它提供了一種管理Java應用程序的方式。但是有時候,MBean可能會出現無法啟動的情況。
下面是一個出現MBean無法啟動的例子:
“`
import javax.management.*;
import java.lang.management.ManagementFactory;
public class HelloAgent {
public static void main(String[] args) throws Exception {
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
ObjectName name = new ObjectName(“org.xyz:type=Hello”);
Hello mbean = new Hello();
mbean.setName(“Mr Bean”);
mbs.registerMBean(mbean, name);
System.out.println(“Waiting forever…”);
Thread.sleep(Long.MAX_VALUE);
}
}
“`
在這個例子中,我們傳遞了一個錯誤的參數給Hello類的setName方法,導致MBean無法啟動。這種情況下,我們需要檢查代碼,找出錯誤的原因。
五、MBeanServerConnection
MBeanServerConnection介面是一個非常重要的介面,在Java平台中它提供了一種管理MBean的方式。可以使用它查詢、設置和修改MBean的屬性和方法。
下面是一個使用MBeanServerConnection的例子:
“`
import javax.management.*;
import java.util.Set;
public class HelloClient {
public static void main(String[] args) throws Exception {
MBeanServerConnection mbsc = ManagementFactory.getPlatformMBeanServer();
ObjectName mbeanName = new ObjectName(“org.xyz:type=Hello”);
System.out.println(“MBean count: ” + mbsc.getMBeanCount());
Set set = mbsc.queryMBeans(null, null);
for (ObjectInstance oi : set) {
System.out.println(oi.getObjectName());
}
mbsc.invoke(mbeanName, “sayHello”, null, null);
}
}
“`
在這個例子中,我們使用MBeanServerConnection查詢了MBeanServer中的所有MBean,並使用invoke方法調用了Hello類中的sayHello方法。
六、MBeanServer weblogic混用
在Weblogic中,MBeanServer經常會被混用。在這種情況下,需要使用WL MBean Server而不是平台MBean Server。
“`
import weblogic.management.mbeanservers.domainruntime.DomainRuntimeServiceMBean;
import weblogic.management.runtime.ServerRuntimeMBean;
public class HelloClient {
public static void main(String[] args) throws Exception {
DomainRuntimeServiceMBean domainService = weblogic.management.runtime.ServerRuntimeMBean.newDomainRuntimeServiceMBean();
MBeanServerConnection domainMBeanServerConnection = domainService.getDefaultDomainConfiguration().getMBeanServer();
ObjectName mbeanName = new ObjectName(“org.xyz:type=Hello”);
domainMBeanServerConnection.invoke(mbeanName, “sayHello”, null, null);
}
}
“`
在這個例子中,我們使用了WL MBean Server來管理MBean。
七、MBeanTrustPermission register
在Java平台中,MBeanTrustPermission是一個非常重要的許可權。它允許MBean註冊在指定的對象名稱上。如果不設置MBeanTrustPermission,MBean可能無法註冊。
下面是一個使用MBeanTrustPermission register的例子:
“`
import javax.management.*;
public class HelloServer {
public static void main(String[] args) throws Exception {
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
ObjectName name = new ObjectName(“org.xyz:type=Hello”);
Hello mbean = new Hello();
mbean.setName(“Mr Bean”);
mbs.registerMBean(mbean, name);
System.out.println(“Waiting forever…”);
Thread.sleep(Long.MAX_VALUE);
}
}
“`
“`
import javax.management.*;
public class HelloClient {
public static void main(String[] args) throws Exception {
MBeanServerConnection mbsc = ManagementFactory.getPlatformMBeanServer();
ObjectName mbeanName = new ObjectName(“org.xyz:type=Hello”);
mbsc.invoke(mbeanName, “sayHello”, null, null);
}
}
“`
在這個例子中,我們使用了MBeanTrustPermission register許可權,使MBean得以註冊。在HelloClient中,我們使用了MBeanServerConnection調用Hello類中的sayHello方法。
八、mr bean
在Java平台中,MBean非常重要。MBean是一種管理Java應用程序的方式,提供了一種擴展應用程序功能的方法。在憨豆先生中,MBean也非常重要,可以使用MBeanServer註冊、取消註冊、查詢和管理MBean。
下面是一個簡單的MBeanServer註冊MBean的例子:
“`
import javax.management.*;
import java.lang.management.ManagementFactory;
public class HelloAgent {
public static void main(String[] args) throws Exception {
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
ObjectName name = new ObjectName(“org.xyz:type=Hello”);
Hello mbean = new Hello();
mbean.setName(“Mr Bean”);
mbs.registerMBean(mbean, name);
System.out.println(“Waiting forever…”);
Thread.sleep(Long.MAX_VALUE);
}
}
“`
在這個例子中,我們使用MBeanServer註冊了一個名為Hello的MBean,並將其命名為org.xyz:type=Hello。
九、mungbean
Mungbean是一種Java開發框架,它提供了一種連接Java應用程序和MongoDB資料庫的方式。Mungbean使用MBean和JMX來管理MongoDB資料庫。
下面是一個使用Mungbean的例子:
“`
import com.mongodb.DB;
import com.mongodb.MongoClient;
import com.mongodb.MongoclientURI;
import org.svenson.JSONParser;
import org.svenson.JSONParseException;
import org.svenson.converter.JSONConverter;
import javax.management.MBeanServer;
import javax.management.ObjectName;
public class MungbeanExample {
public static void main(String[] args) throws Exception {
JSONConverter converter = new JSONConverter();
String jsonString = “{\”host\”: \”localhost\”, \”port\”: 27017, \”database\”: \”test\”}”;
MongoClientURI uri = converter.fromJSON(MongoClientURI.class, jsonString);
MongoClient client = new MongoClient(uri);
DB db = client.getDB(“test”);
String json = JSONParser.defaultJSONParser().parse(“{\”name\”: \”Mr Bean\”, \”age\”: 23}”).toString();
db.getCollection(“test”).insert(com.mongodb.util.JSON.parse(json));
MBeanServer server = ManagementFactory.getPlatformMBeanServer();
server.registerMBean(client, new ObjectName(“com.mongodb:type=MongoClient”));
server.registerMBean(client.getMongo().getDB(“test”), new ObjectName(“com.mongodb:type=DB”));
System.out.println(“Waiting…”);
Thread.sleep(Long.MAX_VALUE);
}
}
“`
在這個例子中,我們使用Mungbean來連接MongoDB資料庫,並使用MBean和JMX來管理MongoDB資料庫。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/250514.html