一、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/n/250514.html