基于JMX通知框架的AJAX深度开发
来源:网络 更新时间:2014-12-2
文章提示AJAX和JMX分别位于系统管理栈的两个对立端。然而,如今AJAX模型已普遍存在于丰富的浏览器客户端。这使得该模型在构架领域为在问题解析管道中提高支持模式所具有的优点变得模糊起来。
本文将详细描述一种AJAX架构的优点-它可以把管理状态"广播"到一个能够使用浏览器的用户基上而不必等待页面更新。
这种架构是一个通用模型的扩展-可用于把JMX事件和属性记载到一个服务器端日志文件中;而且,这种变化进一步把管理信息记录或"广播"到(支持AJAX的)用户基。
在本文中,我们将特别分析AJAX请求/响应模型和把管理数据绘制到页面的过程,还有漂亮的JMX通知框架-所有这些都通过一个装配的Servlet清晰地集成到一起。
接下来我们还会粗略地看一下通常在标准AJAX讨论中所不及的内容-安全和容量模型。
本文中,我们使用BEAWebLogic8.1用作这些软件的发布平台,尽管这里的架构和方法也适用于其它J2EE应用程序服务器。
一、关键需求
针对于企业Java和J2EE应用程序的系统管理栈形成了问题解析管道的一部分-在此,Java/J2EE应用程序与一个管理层进行交互以监视潜在的问题,例如应用程序服务器线程饥饿,堆溢出或到一个数据库的陈旧连接等。
管理层通常包括JMXMbeans-要装配并使用哪个应用程序,以及其它一些产品例如读取这些JMX属性的WilyIntroscope和HPOpenView-如果超过一个事先配置的门槛值,那么它能够从Wily中得到警告。
这个模型存在一个问题-如果系统在后台出现问题的话,针对JMX管理的服务器端模式将无法帮助浏览器端客户,因为这种模型全部是以服务器为中心的。例如,如果一新的J2EEWeb应用程序要被发布或该应用程序在几分钟内将要关闭-因为Wily检测到一个问题,那么在浏览器上的用户并不知道发生了这么紧迫的管理事件!
通过全面地允许用户进入问题解析管道,系统管理员可以管理终端用户体验-通过把管理信息广播到用户基并在一定程度上控制用户的行为来实现。
为了通过HTTP协议实现把管理信息传递给客户,存在这样一个问题:如果客户端用户不是公开地使用GET或POST更新页面而是偷偷地更新一隐蔽的框架,那么管理方面如何把管理信息发送到一个HTTP客户?
二、方案描述
本文要实现一简单的AJAX脚本,它将从MBean服务器取得以XML消息形式的管理信息并经由一个servlet解决这个问题。这些管理信息必须被加以管理并且被反馈到所有的参与其中的能够接收AJAX请求的应用程序服务器。
在服务器端:
·一个J2EE应用程序服务器簇用于服务于来自基于浏览器的用户和在线事务处理(OLTP)用户基(例如有两个或四个服务器)的请求。通过使用一个第三方Web服务器,用户请求被跨越该簇(OLTP簇)平衡装载。
·一个标准MBean(UserWeb)用于存储管理信息,如加上元数据属性的管理消息。该Mbean宿主在J2EE"管理"服务器和在OLTP簇上的J2EE服务器上。
·在管理服务器上,由系统管理员使用针对JMX的HTMLAdaptor来设置警告状态,重试间隔(在相邻XMLHttp-Requests之间的间隔)以及警告消息-例如"SystemDownin10Minutes."。然后,管理员把该状态广播到管理服务器上的Mbeans-由该管理服务器来把它们的状态重置到master管理状态。
在客户端:
·支持AJAX的客户端使用一个XMLHttpRequest(它调用一个servlet以返回XML消息形式的相关的MBean值)来检索状态、重试间隔和消息。
·然后由客户端JavaScript分析这个XML消息,重置重试间隔并且用管理消息重画屏幕的一部分。
·在retry-interval秒之后,该客户进行另外一个XMLHttpRequest并且客户周期再次开始。
三、基本架构