- 浏览: 543667 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (230)
- java (87)
- c/c++/c# (39)
- ASP.net MVC (4)
- eclipse/visual studio (3)
- tomcat/weblogic/jetty (13)
- linux/unix/windows (20)
- html/javascript/jquery/kendo/bootstrap/layui/vue/react (31)
- hibernate/struts/spring/mybatis/springboot (21)
- lucene/solr/ELK (2)
- shiro (0)
- oracle/sqlserver/mysql/postgresql (23)
- shell/python/ruby (6)
- android (0)
- maven/ant (1)
- freemarker/thymeleaf/velocity (1)
- open source project (41)
- cache/memcached/redis (0)
- nosql/hadoop/hbase/mongodb (0)
- system architecture/dubbo/zookeeper (0)
- software testing (0)
- system optimization (0)
- system security (0)
- tcp/udp/http (2)
- roller/wordpress (2)
- 工具收藏 (8)
- 文摘 (4)
- 生活 (0)
最新评论
-
coconut_zhang:
这个demo 非常完整了,是指下面说的那个html 模版,模版 ...
flying sauser, thymeleaf实现PDF文件下载 -
a93456:
你好,你有完整的demo吗? String template这 ...
flying sauser, thymeleaf实现PDF文件下载 -
yujiaao:
fn 函数循环是没有必要的啊,可以改成
protecte ...
Java 笛卡尔积算法的简单实现 -
安静听歌:
设置了.setUseTemporaryFileDuringWr ...
使用jxl导出大数据量EXCEL时内存溢出的解决办法 -
q280499693:
写的很详细,但是我现在想知道他们是怎么定位log4j.prop ...
关于SLF4J结合Log4j使用时日志输出与指定的log4j.properties不同
基于DWR反向AJAX的Web监控系统
目前Web监控系统已经得到了普遍运用,许多新的监控系统都采用了Web作为监控系统的客户端,极大方便了监控系统的操作管理人员,减轻了监控系统的维护成本。如何解决传统Web监控系统的数据读取请求/响应模式的缺点,以及监测数据显示页面刷新的难题[1],一直是Web监控系统开发人员不懈努力的难题。
在实现Web监控系统的技术多种多样,各有千秋,AJAX技术成为首选之一,不论服务器端采用JavaEE还是MS.NET平台。虽然AJAX解决了整个监控画面的局部刷新问题,但AJAX依然采用HTTP请求/响应模式读取服务器端取得的Web监控数据[2]。AJAX框架DWR[3]最新版本推出了反向AJAX技术,使数据从服务器推送到Web客户端成为可能,满足了监控系统实时性要求。
采用DWR框架和反向AJAX,结合Java多线程技术和Siemens Simatic S7-400 PLC TCP/IP通讯模块CP243-1 IT,开发了新的Web监控系统,并在供热公司供热管路监控系统中实际运用。替换了原有的C/S模式的工业控制机,达到了用户的功能需求。
1 DWR技术
1.1 DWR框架
DWR(Direct Web Remoting)是一个Web远程调用AJAX扩展框架,通过DWR客户端的JavaScript可以直接调用Web服务器上的JavaBean类的方法,解决了原有AJAX应用必需请求HTTP控制组件(如Servlet,Struts的Action等)才能调用服务器端业务类的方法,从而简化了AJAX应用的开发。使用DWR可以不需要编写复杂的控制层组件。
1.2 DWR反向AJAX技术
正常情况下,DWR调用服务器端的JavaBean对象方法使用正向请求/响应模式,也称为拉模式(Pull Model),由客户端JavaScript调用JavaBean方法,返回结果通过回调方法更新页面上的HTML元素,实现监控数据的显示。这种正向模式符合一般的管理系统应用,但对监控系统实时性要求较高的应用却力不从心。而反向模式即推模式(Push Model),是适应监控系统的最佳方式,由服务器组件将取得的监控数据推送到Web客户端,不需要客户端主动请求,而是被动接收。因而无需进行Web层进行页面刷新,即可实现数据更新显示。
最新版本的DWR 2.X增加了反向(Reverse AJAX)功能,通过反向AJAX功能,服务器端的JavaBean对象可以将取得的数据直接推送到指定的客户端页面,写到指定的HTML元素内,这个过程不需要客户端进行任何的请求操作。
2 监控系统设计与实现
2.1 总体结构
整个监控系统采用下位监控子系统、上位Web服务器和客户端三层结构,如图1所示。
下位监控子系统采用Siemens Simatic S7-400 PLC,连接温度、压力及流量传感器,并配置TCP/IP通信控制单元(CP343)。上位Web服务器采用开源Tomcat6.0.20,它针对新的JDK6进行了性能的优化,极大提高了响应速度,满足监控实时性需求,在Tomcat6 Web中配置DWR Servlet,负责与客户端Javascript进行通信,服务器端使用JavaBean多线程技术,通过Socket和TCP/IP协议与PLC通信,读取PLC监控数据,使用DWR反向AJAX技术将监控数据推向客户端的HTML元素进行显示。客户端使用IE浏览器被动接收服务器推送的数据,实时更新监测数据。
2.2 服务器端DWR配置
为使用DWR,需要在/WEB-INF/web.xml中配置DWR Servlet,并设定请求URL地址,同时通过设置参数activeReverseAjaxEnabled为true来启用反向AJAX。配置代码如下:
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>activeReverseAjaxEnabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>pollAndCometEnabled</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
2.3 监控业务单元JavaBean编程
(1)服务器端JavaBean
以多线程方式,每个监测点为独立的线程,使用TCP/IP和Socket读取Siemens Simatic S7 PLC的监测数据,并使用DWR Reverse AJAX和DOM直接写入到客户端的HTML中。其中一个监测点线程示意代码如下:
public void run() throws InterruptedException
{
WebContext wctx=WebContextFactory.get();
String currentPage=wctx.getCurrentPage();
Collection sessions=wctx.getScriptSessionsByPage(currentPage);
//通过TCP/IP读取PLC指定监测点的数据
double data=PLCRemote.getData(ip,siteNo);
Util utilAll=new Util(sessions);
//将监测数据通过DWR反向AJAX直接写入客户HTML页面<div>元素中
utilAll.setValue(siteNo,String.valueOf(date));
}
关键是使用DWR反向AJAX的Util对象的setValue方法,将监测数据写到DIV元素id为siteNo值的单元中。
(2)配置JavaBean到DWR
使用DWR的配置文件/WEB-INF/dwr.xml,将JavaBean引入到DWR体系中,通过JavaScript就可以直接调用JavaBean的监测方法。
<dwr>
<allow>
<convert match=“com.lushu.control.value.*” converter=“bean”></convert>
<create creator=“new” javascript=“DataChecking”>
<param name=“class” value=“com.lushu.control.business.DataChecking”/>
</create>
</allow>
</dwr>
其中,javascript属性指定JavaScript中对象的名称,creator=“new”指定由DWR引擎自动创建JavaBean类的实例。
2.4 客户端实现
客户端使用DWR代码库,用JavaScript结合HTML,DOM实现监控Web页面的数据显示。为节省篇幅,只介绍重点配置和示意代码。
(1)引入DWR代码库
这里使用HTML与JavaScript分离原则,JavaScript代码放在单独的JS文件中。
<script type=‘text/javascript’ src=‘/lsweb/dwr/util.js’></script>
<script type=‘text/javascript’ src=‘/lsweb/dwr/interface/DataChecking.js’></script>
<script type=‘text/javascript’ src=‘/lsweb/dwr/engine.js’></script>
<script type=‘text/javascript’ src=‘main.js’></script>
(2)启用DWR反向AJAX
在main.js中定义所有监控业务的函数。
function checkInit()
{ dwr.engine.setActiveReverseAjax(true); }
window.onload=checkInit;
(3)定义监控数据接收HTML单元
在监控页面上使用<div id=”测点ID”></div>定义DWR反向AJAX推送数据的显示位置,由服务器端JavaBean通过DWR AJAX直接读取。客户端页面和JavaScript不需进行任何请求操作。部分测点示意如下:
<tr>
<td>一小区#2</td>
<td><div id=“no01”></div></td>
<td><div id=“no02”></div></td>
<td><div id=“no03”></div></td>
</tr>
(4)JavaScript调用JavaBean方法
启动服务器端JavaBean监测方法读取PLC数据,进行数据推送。在监测方法内启动所有监测点的监测线程,实时监测数据并推送到客户端。
function startChecking()
{
//通过DWR直接调用服务器端JavaBean的监测数据方法
DataChecking.sendCheckData();
}
结合JavaEE平台、AJAX、DWR和反向AJAX,实现了一个全新的无需页面刷新、无需进行HTTP请求的全新Web监控系统,解决了传统Web的HTTP请求/响应模式无法满足监控系统实时性要求的难题。尤其是反向AJAX技术实现的推模式,可以将服务器端监测数据直接通过TCP/IP推送到HTML客户端,并直接写入到HTML元素中,得以实现与现有Web监控系统传统模式完全不同的全新系统,实现了无需进行页面刷新的工作模式。由于只传输监控数据,无需传输数据格式HTML代码,系统性能得到了极大改善,满足了监控系统对实时性的要求。今后无刷新、推模式的Web监控系统必将得到广泛应用。
发表评论
-
easypoi 按照模板到出excel并合并单元格
2022-11-10 21:46 149这是entity类,注解的mergeVertical是纵向合 ... -
Java时区处理之Date,Calendar,TimeZone,SimpleDateFormat
2017-03-31 14:59 1368一、概述 1、问题描述 使用Java处 ... -
logback的使用和logback.xml详解
2017-03-09 11:20 2194一、logback的介绍 Logback是由log4j ... -
jxls操作excel文件
2017-03-03 14:51 1104JXLS是基于Jakarta POI API的Excel报表 ... -
jquery formValidator 表单验证插件, ajax无法传值到后台问题的解决
2016-06-24 17:10 668data : { count: Math.random ... -
thymeleaf与spring整合
2016-06-15 10:08 12391、使用的是Spring EL而不是Ognl。2、访问上下文 ... -
SpringMVC 400 Bad Request 问题
2016-06-15 09:11 1969在提交表单时,发生400错误,并未进入save方法。 ... -
bootstrap3自定义popover显示的内容
2016-05-27 11:14 1152<script type="text/jav ... -
eclipse插件Maven添加依赖查询无结果的解决方法(Select Dependency doesn't work)
2016-04-22 08:33 738在eclipse中用过maven的可能都遇到过这种情况,我 ... -
JS 中面向对象的5种写法
2015-08-13 15:54 708定义Circle类,拥有成员变量r,常量PI和计算面积的成员 ... -
动态载入/删除/更新外部 JavaScript/Css 文件的代码
2015-07-31 15:09 4123动态载入 JavaScript/Csss 文件 传统加载外部 ... -
Java_Ant详解
2015-06-15 16:54 7331,什么是antant是构建工 ... -
httpClient通过代理(Http Proxy)进行请求
2014-09-16 14:18 1235httpClient通过代理(Http Proxy)进行请求 ... -
httpclient上传文件及传参数
2014-09-16 11:07 11648用到的包有commons-httpclient-3.0.1. ... -
简单返回顶部代码及注释说明
2014-07-16 10:44 969最近做了一个排行榜页 ... -
深入浅出JSONP:解决AJAX跨域问题
2014-04-16 11:00 816取不到数据! 上周客户新买了服务器,原本在旧的服务器上放着 ... -
Progress Bar Plugin
2013-12-26 10:04 832from: http://digitalbush.com/p ... -
javascript cookie
2013-11-08 09:18 1065cookie概述在上一节, ... -
Java文件下载的几种方式
2013-08-19 14:15 879public HttpServletResponse dow ... -
http上传文件深度解析-高性能http传输
2013-07-23 10:41 9774最近在做web服务器的时候将一些应用集成在了服务器里面,比 ...
相关推荐
摘 要: 采用DWR框架和反向AJAX,结合Java多线程技术和Siemens Simatic S7-400 PLC TCP/IP通讯模块CP243-1 IT,开发了新的Web监控系统,并应用在供热公司供热管路监控系统中。其替代了原有的C/S模式的工业控制机,...
DWR学习资料 :DWR 3.0 上传文件.txt DWR3.0反向Ajax示例.txt DWR3.0...多人聊天室.doc 反向Ajax技术实例.txt 基于DWR反向AJAX的Web监控系统.doc 深入学习DWR3.0.txt 实战dwr.doc 使用Jetty和DWR创建伸缩性Comet程序.txt
这个jar包提供了HTTP反向AJAX引擎,处理JavaScript到服务器的请求,以及服务器响应的返回。它包括了自动转换数据类型、安全控制、错误处理和缓存机制等功能。 **Commons-Logging.jar**: Apache Commons Logging 是...
2. **Reverse Ajax**:DWR利用了Ajax的反向机制,即由服务器端主动向客户端发送数据,而不是等待客户端的请求。 3. **C/ajax.js**:这是DWR生成的一个JavaScript库,包含了与服务器通信的API,使得在JavaScript中...
2. **Reverse Ajax(反向Ajax)**:DWR利用了反向Ajax的概念,即服务器可以主动向客户端发送数据,而不仅仅是响应客户端的请求。这使得应用能够实现实时更新。 3. **安全控制**:DWR提供了多种安全机制,包括CSRF...
DWR的核心功能包括AJAX(异步JavaScript和XML)支持、远程方法调用(Remote Method Invocation,RMI)、反向AJAX(Reverse AJAX)和自动JSON(JavaScript Object Notation)序列化与反序列化。 【标签】:“源码”...
1. **反向AJAX(Reverse AJAX)**: DWR的核心特性是实现了反向AJAX,即服务器可以主动向客户端推送数据,而不仅仅是响应用户的请求。这使得Web应用能够实现类似桌面应用的实时交互体验。 2. **API接口**: DWR 提供...
- **反向Ajax(Reverse Ajax)**:DWR实现了服务器端主动向客户端推送数据的功能,实现双向通信。 - **会话管理**:DWR跟踪用户会话,确保每个请求都与正确的会话关联。 3. **DWR配置** - **web.xml配置**:DWR...
- **反向Ajax**:DWR的核心特性是反向Ajax,即由服务器主动向客户端推送数据,而不仅仅是客户端请求服务器。 - **远程方法调用(Remote Method Invocation, RMI)**:DWR允许JavaScript代码直接调用服务器端的Java...
- **反向Ajax(Reverse Ajax)**:DWR的核心是反向Ajax技术,它使服务器能够主动推送数据到客户端,而不仅仅是响应客户端的请求。 - **CORS(Cross-Origin Resource Sharing)**:DWR支持跨域资源共享,允许不同源...
总的来说,DWR技术通过反向Ajax提供了一种强大的实时Web通信手段,使得服务器能够主动向客户端推送数据,这对于构建实时性要求高的应用,如在线聊天、股票监控、即时消息等,具有极大的价值。通过合理配置和管理`...
1. **DWR的基本概念**:理解DWR的核心功能,包括反向Ajax(Reverse Ajax)技术,它是如何实现在网页上即时更新数据的。DWR通过创建Java对象的远程接口,使得JavaScript可以方便地调用这些对象的方法,实现客户端与...