三、 基本架构
图1显示出全面的解决方案体系结构,其中表1描述了相应的基本架构元素。

图1 方案架构
| 元素 | 描述 |
| 标准MBean(UserWeb) | 用于警告状态和消息的属性,还有getter/setters和一个方法来广播(通知)MBean状态 |
| MBean助理(UserWebMBeanHelper) | 包装装配的代码以便于使用UserWeb MBean |
| MBean服务器 | J2EE容器内的MBean服务器 |
| Servlet(Admin.java) | 装配的Servlet,基于UserWebMBean的内容格式化XML响应 |
| 事件听者 (ManagementListener.java) |
Singleton-它用管理服务器上的UserWeb MBean把自己注册为一个"alert.broadcast"类型事件的听者 |
| 客户端AJAX引擎(admin.js) | 用于管理XMLHttpRequest-/-repaint周期的JavaScript |
| 客户端描述(main.jsp) | 装配的JSP。AJAX基于MBean属性启动该页面 |
| HTML适配器包装器(StartHTMLAdaptor.java) | 在听端口+100启动一个HTMLAdaptorServer以实现到MBeans的HTTP存取 |
(一) JMX通知模型
这个模型包含两个部件:
·MBean-为本地和远程注册的听者激活事件
·听者-它用MBean注册自己以听取由该MBean所产生的事件
第一个由UserWeb Mbean来实现,第二个由ManagementListener来实现。
(二) 管理用户信息的JMX MBean
UserWeb标准的MBean是一个简单类-它包含关键的属性和方法(表2)。
| 元素 | 描述 |
| AlertEnabled | 如果AlertStatus>-1,则为真 |
| AlertMessage | 用户将在屏幕上看到的信息 |
| AlertReady | 如果AlertStatus>0,则为真 |
| CallBack | 在每两个XMLHttpRequest之间的毫秒数 |
| BroadcastState | 方法-它用一个事件(alert.broadcast)(它把Mbean状态作为事件数据传递)来通知在本地/远程JVM上的所有已注册的听者 |
(三) 事件听者
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的延迟时间。
下面详细描述其中的每一步。
