四、注册MBeans和MBean听者
在每一个J2EE服务器实例上,在服务器启动时运行两个启动类:
·ManagementStartup-它把UserWeb MBean注册到本地MBean服务器。Startup类参数包括警告状态的默认设置,还有MBean名称和MBean类。例如:
<StartupClass
Arguments="ServerName=admin,
MBeanName=ExampleApp:Name=UserWeb,
MBeanClass=com.grahamh.management.userWeb.UserWeb"
ClassName="com.grahamh.management.startup.ManagementStartup"
FailureIsFatal="true" Name="UserWEB" Notes=""
Targets="admin,OLTPCluster"/>
·MbeanRegistrations-它用管理服务器上的UserWeb MBean来注册一个Singleton POJO-ManagementListener。
一个javax.management.NotificationFilterSupport对象被用于列举UserWeb MBean将生成和听者将接收的通知的类型:
//MbeanRegistrations.java
MBeanHelperFactory.getWebHelper().registerListener();
//UserWebMbeanListener.java
public void registerListener() throws UserWebException{
try {
//得到听者和过滤
ManagementListener listener = MBeanHelperFactory.getListener();
NotificationFilterSupport filter = listener.getSupportedEvents();
//得到admin mbean服务器;
//用UserWeb MBean注册该听者和过滤
RemoteMBeanServer rmbs = getAdminMbeanServer();
rmbs.addNotificationListener("ExampleApp:Name=UserWeb", listener, filter, null);
}
catch (Exception e) {
throw new UserWebException("Unable to registerListener: "+ e.getMessage(), e);
}
}
该listener.getSupportedEvents()方法返回下面的过滤器(filter):
NotificationFilterSupport filter = new NotificationFilterSupport();
filter.enableType("alert.broadcast");
当ManagementListener在服务器启动时,在(远程的)管理服务器上建立一个到MBean服务器的连接,而且(本地的) ManagementListener被注册为一个听者-听取在UserWeb MBean上生成的事件,并且有一个过滤器被设置为"alert.broadcast"事件类型。
因为该 ManagementListener实现Weblogic.management.RemoteNotificationListener,所以它可以得到在本地JVM或一远程JVM上生成的JMX通知;在本文中,是指在远程管理服务器JVM上生成的JMX通知。
