0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于AJAX框架DWR、CP243-1 IT和Java多线程技术实现Web监控系统的设计

牵手一起梦 来源:微型机与应用 作者:吕海东,高际邦 2021-04-05 11:23 次阅读

目前Web监控系统已经得到了普遍运用,许多新的监控系统都采用了Web作为监控系统的客户端,极大方便了监控系统的操作管理人员,减轻了监控系统的维护成本。如何解决传统Web监控系统的数据读取请求/响应模式的缺点,以及监测数据显示页面刷新的难题,一直是Web监控系统开发人员不懈努力的难题。

在实现Web监控系统的技术多种多样,各有千秋,AJAX技术成为首选之一,不论服务器端采用JavaEE还是MS.NET平台。虽然AJAX解决了整个监控画面的局部刷新问题,但AJAX依然采用HTTP请求/响应模式读取服务器端取得的Web监控数据。AJAX框架DWR最新版本推出了反向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所示。

基于AJAX框架DWR、CP243-1 IT和Java多线程技术实现Web监控系统的设计

下位监控子系统采用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监控系统必将得到广泛应用。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    8114

    浏览量

    82499
  • 监控系统
    +关注

    关注

    21

    文章

    3609

    浏览量

    169228
  • 线程
    +关注

    关注

    0

    文章

    489

    浏览量

    19495
收藏 人收藏

    评论

    相关推荐

    采用DWR框架和反向AJAXWeb监控系统开发

      采用DWR框架和反向AJAX,结合Java多线程技术和Siemens Simatic S7-
    发表于 08-04 10:48 1590次阅读
    采用<b class='flag-5'>DWR</b><b class='flag-5'>框架</b>和反向<b class='flag-5'>AJAX</b>的<b class='flag-5'>Web</b><b class='flag-5'>监控</b><b class='flag-5'>系统</b>开发

    Java多线程的用法

    能力。 什么是进程 是指正在运行的程序的实例。 每个进程都拥有自己的内存空间、代码、数据和文件等资源,可以独立运行、调度和管理。在操作系统中,进程是系统资源分配的最小单位,是实现多任务的基础。
    的头像 发表于 09-30 17:07 618次阅读

    基于TCP/IP协议和多线程的通信软件的设计与实现

    】:0引言通信软件是船舶导航监控系统的重要组成部分,集数据采集、通信、显示功能于一体,是实现水上智能交通的核心环节[1]。通信软件的实时性、准确性和效率直接影响船舶导航
    发表于 05-06 09:02

    [转帖]学JAVA需要掌握的技术及流程

    的最新教学内容及流程,供大家参考。 1.java的基础知识 不要被新技术迷惑,所谓万变不离其宗,新技术都是基于java的基础之上,如果基础不扎实,对于这些新
    发表于 05-14 13:19

    Java工程师必须掌握的技术有哪些?

    配置以及进行调试3. j2ee 框架只要你是用java来做WEB应用,绝对少不了使用j2ee框架,目前流行的有1)struts2)sprin
    发表于 02-09 16:18

    Java基础学习多线程使用指南

    黑马程序员-----Java基础学习多线程
    发表于 10-08 14:10

    多线程技术在变电站监控系统中有哪些应用?

    如何去实现嵌入式Internet系统中的网络互连?多线程技术在变电站监控系统中有哪些应用?
    发表于 05-25 06:51

    再谈多线程技术在变电站监控系统中的应用

    介绍了Win32 中多线程技术的概念及在Delphi 开发环境中实现的方法,给出了在变电站监控系统开发中如何较好地应用
    发表于 05-30 10:17 15次下载

    多线程技术在电能质量实时监控系统中的应用

         实时监控系统具有较高的实时性要求,多线程技术因其能同时执行多项任务而能够较好地满足这一要求。本文介绍了
    发表于 09-04 09:59 9次下载

    基于AJAX技术WEB研究与实现

    本文介绍了AJAX技术及其工作原理以及所涉及的主要技术与当前的应用状况。讨论了大学人事管理系统若采用传统WEB方法
    发表于 03-01 16:03 12次下载

    java多线程设计模式_结城浩

    JAVA多线程设计模式》通过浅显易懂的文字与实例来介绍JAVA线程相关的设计模式概念,并且通过实际的JAVA程序范例和UML图示来一一解说
    发表于 01-05 16:15 0次下载
    <b class='flag-5'>java</b><b class='flag-5'>多线程</b>设计模式_结城浩

    基于OPC技术多线程数据采集系统实现_乔富强

    基于OPC技术多线程数据采集系统实现_乔富强
    发表于 01-12 19:56 1次下载

    java学习——java面试【事务、锁、多线程】资料整理

    本文档内容介绍了基于java学习java面试【事务、锁、多线程】资料整理,供参考
    发表于 03-13 13:53 0次下载

    西门子CP243-1以太网向导配置图解

    CP243-1模块是S7-200系列产品中唯一一款以太网通信模块,它既可以作为西门子以太网S7通信中的客户端,也可作为服务器。那么,如果想通过以 太网通信与PC机中的STEP 7-Micro/WIN软件通信,实现编程的上载、下载或在线
    发表于 02-09 18:06 1.2w次阅读
    西门子<b class='flag-5'>CP243-1</b>以太网向导配置图解

    java实现多线程的几种方式

    Java实现多线程的几种方式 多线程是指程序中包含了两个或以上的线程,每个线程都可以并行执行不同
    的头像 发表于 03-14 16:55 173次阅读