基于JMX通知框架的AJAX深度开发(2)

2008-02-23 07:52:12来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

    表2 UserWeb Mbeam属性和方法

  (三) 事件听者

  Singleton ManagementListener类实现了Weblogic.management.RemoteNotificationListener-它扩展了javax.management.NotificationListener和java.rmi.Remote以允许在一个远程WebLogic JVM上的事件通过使用RMI技术被通知到远程听者。
在应用程序服务器启动时,在每个JVM上的一个听者用管理服务器上的UserWeb MBean注册自己。

  (四) MBean助理

  使用一个助理类来对Mbeans加以包装是个不错的注意。这样,我们可以从装配的代码中调用这个助理从而调用MBean方法。
UserWebMBeanHelper类被用作UserWeb Mbean的包装。所有助理的祖先是ApplicationMBeanHelper,它负责:

  ·查找本地和远程MBean服务器

  ·调用这些服务器以取得/设置MBean属性并且调用MBean方法

  为了确保相匹配,MBean和MBean助理都实现接口UserWebMBean。

  (五) 装配Servlet

  一个应用程序可以被装配以使用JMX。用AOP术语来说就是,把管理方面织入到应用程序代码中。本文中第一个JMX装配点是一个HTTPServlet。这个servlet是AJAX请求的目标,并且它实现一个控制器模式-它可以被精心制作以使用简单的请求参数来处理其它AJAX请求。
从一个MVC的角度来看,该模型是UserWeb Mbean,视图是支持AJAX的(JSP)页面,而控制器是被装配的servlet。

  (六) 客户端AJAX引擎

  这是一组JavaScript函数,它们:

  ·管理XMLHttpRequest并且响应处理重复性操作

  ·分析由XMLHttpRequest返回的XML消息

  ·用XML消息内容重画屏幕

  客户描述

  这是main.jsp页面-它包含客户端AJAX引擎和可重画的部分。

  (七) 序列

  实质上,服务器端序列参与管理管理属性的设置并且把这些属性广播到所有的感兴趣(听)的JVM上。而,客户端序列参与检索这些属性并且以管理指定的间隔时间用重要的管理信息来重画该HTML页面。

  (八) JMX通知(服务器序列)

  ·UserWeb MBeans和MBean事件听者在应用程序服务器启动时被使用相应的启动类创建并且注册

  ·管理员设置"master"UserWeb MBean属性(警告消息和重试间隔),然后向宿主在远程管理服务器上的听者广播或通知这一状态

  ·远程听者处理通知-通过把master(通知)数据复制到本地UserWeb MBean实现

  (九) XMLHttpRequest查询(客户序列)

  ·支持AJAX的客户端间隔地调用一个servlet以查询管理状态

  ·该servlet读取本地UserWeb MBean属性,然后把它们插入到一个XML消息中并且返回该XML消息作为一个到浏览器客户的XML响应(以后讨论可供选择的消息格式)

  ·然后,AJAX客户分析XML文档,提取警告和重试间隔等消息,重画屏幕,然后使用这一重试间隔来设置下一个XMLHttpRequest的延迟时间。

  下面详细描述其中的每一步。

  四、注册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通知。

  五、广播Admin MBean属性

  管理和托管UserWeb Mbeans可以进行独立地设置-这给任何一个J2EE服务器一个本地化的AJAX响应。然而,一个普通操作,管理和支持(OA&M)支持模式将设置admin MBean的属性,然后使用通知模型把这些属性广播到远程应用程序服务器上的MBeans,以备随后的AJAX检索之用。

  因为该UserWeb MBean是基于ApplicationMBean-它扩展了javax.management.NotificationBroadcasterSupport,所以该基础结构正适合于由UserWeb MBean来通知所有的听者。因此,管理员设置相关的MBean属性(使用HTMLAdaptor)并且点击BroadcastState(见图2)。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Ajax的宣传及现状:改变门户体验的技术

下一篇:在AJAX开发中集成数据库技术