• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于CXF的信息匯集通用系統(tǒng)設(shè)計與實現(xiàn)

    2017-12-02 09:02:53葛從兵李榮輝陳劍
    軟件導(dǎo)刊 2017年11期

    葛從兵 李榮輝 陳劍

    摘要:為將大壩監(jiān)測信息從分散在各地的監(jiān)測數(shù)據(jù)庫匯集至中心數(shù)據(jù)庫,采用CXF框架,設(shè)計并實現(xiàn)了信息匯集通用系統(tǒng)。通過簡單配置,即可將監(jiān)測信息匯集至中心數(shù)據(jù)庫,方便水庫主管部門對監(jiān)測信息進行處理、分析,以保障大壩安全運行。

    關(guān)鍵詞關(guān)鍵詞:CXF;Spring;信息匯集;ETL;XML

    DOIDOI:10.11907/rjdk.171720

    中圖分類號:TP319

    文獻標識碼:A文章編號文章編號:16727800(2017)011010404

    0引言

    水庫是調(diào)控水資源時空分布、優(yōu)化水資源配置及防洪減災(zāi)的重要工程。水庫在發(fā)揮效益的同時,也存在一定風險,一旦失事,后果不堪設(shè)想。為及時發(fā)現(xiàn)大壩安全隱患,越來越多的水庫建立了大壩安全監(jiān)測信息系統(tǒng)。但由于水庫基層管理單位缺乏技術(shù)人員,對監(jiān)測信息進行處理、分析能力有限,需將監(jiān)測信息匯集至技術(shù)力量雄厚的水庫主管部門,由專家依據(jù)監(jiān)測信息,對大壩安全狀況進行評估,指導(dǎo)基層單位日常安全管理工作。大壩安全監(jiān)測信息系統(tǒng)由不同承建商在不同時期建設(shè),數(shù)據(jù)存儲差異大,若針對每個監(jiān)測信息系統(tǒng)開發(fā)信息匯集系統(tǒng),不僅工作量大,而且信息匯集穩(wěn)定性也得不到保證。本文對CXF[1]、Spring[2]、ETL[3]、XML[4]進行研究,設(shè)計并實現(xiàn)基于CXF的信息匯集通用系統(tǒng)。

    1系統(tǒng)設(shè)計

    1.1系統(tǒng)功能與結(jié)構(gòu)

    信息匯集通用系統(tǒng)將監(jiān)測信息從分散在各地的大壩安全監(jiān)測數(shù)據(jù)庫匯集至水庫主管部門的中心數(shù)據(jù)庫。信息匯集通用系統(tǒng)主要功能有:①從不同類型的大壩安全監(jiān)測數(shù)據(jù)庫中提取監(jiān)測信息;②將原監(jiān)測信息轉(zhuǎn)為與中心數(shù)據(jù)庫表結(jié)構(gòu)一致的監(jiān)測信息;③將監(jiān)測信息加載至中心數(shù)據(jù)庫;④定時自動地將實時監(jiān)測信息匯集至中心數(shù)據(jù)庫;⑤人工將某時段歷史監(jiān)測信息匯集至中心數(shù)據(jù)庫。

    信息匯集通用系統(tǒng)由一個服務(wù)端和多個客戶端組成。服務(wù)端位于水庫主管部門,負責接收監(jiān)測信息,并將其加載至中心數(shù)據(jù)庫??蛻舳朔植荚诟魉畮?,從大壩安全監(jiān)測數(shù)據(jù)庫提取信息,轉(zhuǎn)換、發(fā)送至服務(wù)端。信息匯集通用系統(tǒng)結(jié)構(gòu)見圖1。

    圖1信息匯集系統(tǒng)結(jié)構(gòu)

    1.2數(shù)據(jù)網(wǎng)絡(luò)傳輸

    因特網(wǎng)傳輸數(shù)據(jù)可采用Socket、HTTPService、WebService等方式。Socket基于TCP/IP傳輸層協(xié)議,通過流進行數(shù)據(jù)傳輸,不支持面向?qū)ο?,適用于傳輸大數(shù)據(jù)量數(shù)據(jù)。Socket數(shù)據(jù)傳輸格式不固定,通信協(xié)議需自定義,要自己解析發(fā)送和接收數(shù)據(jù)。HTTPService基于HTTP協(xié)議,通過GET或POST方法傳輸數(shù)據(jù)。HTTPService傳輸效率較高,但不能跨域訪問。WebService基于SOAP協(xié)議,數(shù)據(jù)格式固定,支持面向?qū)ο螅商幚韽?fù)雜的數(shù)據(jù)類型。由于WebService經(jīng)過兩次序列化,導(dǎo)致傳輸速度慢,適用于傳輸性能要求不高的小數(shù)據(jù)量數(shù)據(jù)。由于大壩安全監(jiān)測信息結(jié)構(gòu)復(fù)雜,采集頻率低(1次/日),故信息匯集采用WebService。

    WebService服務(wù)端實現(xiàn)服務(wù)接口,發(fā)布XML格式的WSDL服務(wù)描述文件供客戶端調(diào)用。客戶端調(diào)用服務(wù)接口時,將生成SOAP請求,并將SOAP請求嵌入到HTTP POST,發(fā)送至服務(wù)端的Web服務(wù)器。Web服務(wù)器將SOAP請求轉(zhuǎn)發(fā)給WebService處理器。WebService處理器解析SOAP請求,調(diào)用WebService,生成相應(yīng)的SOAP應(yīng)答。Web服務(wù)器收到SOAP應(yīng)答后,采用HTTP應(yīng)答方式將其返回至客戶端。WebService架構(gòu)見圖2。

    圖2WebService架構(gòu)

    1.3CXF和Spring

    .Net和J2EE都可開發(fā)WebService,其中J2EE有多種實現(xiàn)方式,如CXF、Xfire、Axis2、Axis1、JAXWS等,本系統(tǒng)采用CXF+Spring構(gòu)建WebService。

    Apache CXF是一個開源Services框架,它繼承了Celtix和XFire,利用Frontend編程API開發(fā)Services。這些Services支持SOAP、XML/HTTP、RESTful HTTP、CORBA等協(xié)議,可在HTTP、JMS、JBI等傳輸協(xié)議上運行。CXF可根據(jù)實際需要,采用代碼優(yōu)先(Code First)或WSDL優(yōu)先(WSDL First)實現(xiàn)WebService發(fā)布和使用。CXF簡化了WebService創(chuàng)建,可與Spring 無縫集成。

    Spring是一個分層的JavaSE/EE fullstack輕量級開源框架,由核心容器、Spring上下文、Spring AOP、Spring DAO、Spring ORM、Spring Web、Spring MVC等7個模塊組成,核心容器定義了創(chuàng)建、配置和管理bean的方式,其它模塊建立在核心容器之上。每個模塊既可以單獨運行,又可以與其它模塊聯(lián)合運行。Spring提供了依賴注入(DI)與控制反轉(zhuǎn)(IoC)以及面向切面編程(AOP)。

    1.4ETL

    ETL(ExtractTransformLoad)是數(shù)據(jù)從源端經(jīng)過提取、轉(zhuǎn)換、加載到達目的端的過程。本系統(tǒng)的信息匯集是一個ETL過程:信息提取、信息轉(zhuǎn)換、信息加載。

    從水庫現(xiàn)場大壩安全監(jiān)測數(shù)據(jù)庫的相關(guān)表中提取所需信息。信息提取需要知道大壩安全監(jiān)測數(shù)據(jù)庫管理系統(tǒng)及表結(jié)構(gòu)。信息轉(zhuǎn)換是將提取的信息轉(zhuǎn)換為符合中心數(shù)據(jù)庫要求的信息,包括信息拆分、信息重組、數(shù)據(jù)類型及長度變換等。信息轉(zhuǎn)換需要知道大壩安全監(jiān)測數(shù)據(jù)庫與中心數(shù)據(jù)庫表結(jié)構(gòu)之間的對應(yīng)關(guān)系。信息加載是指將轉(zhuǎn)換后的信息插入至中心數(shù)據(jù)庫相關(guān)表。

    信息提取和信息轉(zhuǎn)換在客戶端完成??蛻舳擞肧elect語句從大壩安全監(jiān)測數(shù)據(jù)庫提取信息,生成與中心數(shù)據(jù)庫相關(guān)表一致的JSON字符串。信息轉(zhuǎn)換可在Select語句里或/和生成JSON字符串時完成。信息加載由服務(wù)端完成。WebService接收JSON字符串,用Insert語句將監(jiān)測信息加載至中心數(shù)據(jù)庫。在加載信息前,為避免數(shù)據(jù)重復(fù),違反主鍵約束,先用Delete語句刪除這一時段的監(jiān)測信息。endprint

    2系統(tǒng)實現(xiàn)

    信息匯集通用系統(tǒng)由服務(wù)端和客戶端組成。服務(wù)端數(shù)據(jù)庫管理系統(tǒng)采用MySQL,開發(fā)語言為Java,集成開發(fā)環(huán)境為Eclipse;客戶端能連接常用數(shù)據(jù)庫管理系統(tǒng),開發(fā)語言為C#,集成開發(fā)環(huán)境為Microsoft Visual Studio。

    2.1服務(wù)端

    服務(wù)端實現(xiàn)WebService,采用CXF+Spring+MyBatis框架,由持久層、DAO層、服務(wù)層、Web服務(wù)層組成。持久層由實體類組成,每個實體類對應(yīng)于中心數(shù)據(jù)庫中一個監(jiān)測數(shù)據(jù)表,其屬性與字段對應(yīng),并實現(xiàn)屬性get/set方法。DAO層由DAO類和MyBatis映射配置文件組成,DAO類定義數(shù)據(jù)插入和刪除方法,映射配置文件包含插入語句映射和刪除語句映射。服務(wù)層由服務(wù)接口和實現(xiàn)類組成,服務(wù)接口定義插入和刪除方法。類實現(xiàn)這些方法,主要是調(diào)用DAO類的插入和刪除方法。Web服務(wù)層由Web服務(wù)接口和實現(xiàn)類組成,Web服務(wù)接口Upload定義DeleteMeasureData和UploadMeasureData方法。根據(jù)參數(shù),先調(diào)用相應(yīng)服務(wù)接口的刪除方法,刪除相應(yīng)表中同一時段監(jiān)測信息,然后將客戶端發(fā)送的JSON數(shù)據(jù)轉(zhuǎn)換為實體對象,調(diào)用相應(yīng)服務(wù)接口插入方法,將實體對象中監(jiān)測信息插入至數(shù)據(jù)庫相應(yīng)表。

    采用CXF實現(xiàn)WebService,需在Web部署文件中增加CXF servlet:

    Apache CXF Endpoint

    cxf

    cxf

    org.apache.cxf.transport.servlet.CXFServlet

    1

    cxf

    /webservice/*

    同時,還需配置WebService的端點(endpoint):

    xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"

    xmlns:jaxws="http://cxf.apache.org/jaxws"

    xsi:schemaLocation=" http://www.springframework.org/schema/beans

    http://www.springframework.org/schema/beans/springbeans.xsd

    http://cxf.apache.org/jaxws

    http://cxf.apache.org/schemas/jaxws.xsd">

    address="/Upload"/>

    通過瀏覽器可瀏覽Web服務(wù),見圖3。

    圖3Web服務(wù)及其方法

    2.2客戶端

    客戶端采用C/S模式,從水庫現(xiàn)場大壩安全監(jiān)測數(shù)據(jù)庫提取信息,發(fā)送至水庫主管部門的中心數(shù)據(jù)庫。

    為了連接不同類型數(shù)據(jù)庫并進行相應(yīng)數(shù)據(jù)轉(zhuǎn)換,通過配置文件控制信息匯集過程:

    InformationCollection元素表示一個信息匯集過程,包含匯集過程所有SQL語句。SourceConnection元素為大壩安全監(jiān)測數(shù)據(jù)庫的連接字符串。Delete中Table為要刪除數(shù)據(jù)的表名。Insert中Table為要插入數(shù)據(jù)的表名;FieldNum為從SelectSQL傳遞至JSonString的字段數(shù);SelectSQL為從數(shù)據(jù)庫中提取信息的SQL語句,其Where子句中,開始時間和結(jié)束時間采用保留字符串“STTM”和“ENTM”;JSonString為采用JSON格式的監(jiān)測信息字符串,其中保留字符串“FIELD0”、“FIELD1”、…為來自SelectSQL第1列、第2列、…的數(shù)據(jù)。endprint

    為了保證客戶端通用性,采用OLEDB連接不同類型數(shù)據(jù)庫,SourceConnection元素中典型的連接字符串代碼如下:

    (1)Oracle:"Provider=MSDAORA;Data Source=;User ID=myUsername;Password=myPassword"

    (2)SQL Server:"Provider=SQLOLEDB;Data Source=(local); Initial Catalog=mydb;User ID=myUsername;Password=myPassword"

    (3)MySQL:"Provider=OleMySql.MySqlSource.1;Data Source=(local);Initial Catalog=mydb;User ID=myUsername;Password=myPassword"

    (4)Access:"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\bin\\LocalAccess40.mdb"

    例如:中心數(shù)據(jù)庫和大壩安全監(jiān)測數(shù)據(jù)庫中滲流壓力監(jiān)測表結(jié)構(gòu)為圖4,則信息匯集配置如下:

    圖4滲流壓力監(jiān)測表結(jié)構(gòu)

    Provider=SQLOLEDB;Data Source=(local); Initial Catalog=dsmis;

    User ID=sa;Password=sa

    egs_sppr_r

    egs_sppr_r

    6

    <![CDATA[select left(hycncd,11),'1'+right(hycncd,2),mpcd,msdt,tm,wl from

    mi_sppr_m WHERE msdt>='STTM' and msdt<='ENTM' and wl is not null and tm is not null]] >

    <![CDATA[{'rscd':'FIELD0','hycncd':'FIELD1','mpcd':'FIELD2','mstm':'FIELD3',

    'tm':'FIELD4','spprwl':'FIELD5'}]] >

    3結(jié)語

    本文采用CXF+Spring+MyBatis框架開發(fā)信息匯集通用系統(tǒng)服務(wù)端,為客戶端提供WebService,將客戶端發(fā)送的監(jiān)測信息加載至中心數(shù)據(jù)庫。采用C#開發(fā)信息匯集通用系統(tǒng)客戶端,通過XML配置文件,控制監(jiān)測信息的提取、轉(zhuǎn)換、傳送過程。信息匯集通用系統(tǒng)客戶端能夠與不同的大壩安全監(jiān)測數(shù)據(jù)庫連接,使系統(tǒng)具有通用性,降低了信息匯集工作難度,節(jié)省了時間和成本。信息匯集通用系統(tǒng)可定時自動匯集實時監(jiān)測信息,也可人工匯集某時段歷史監(jiān)測信息。基于CXF的信息匯集通用系統(tǒng)已用于廣西壯族自治區(qū)大壩安全監(jiān)測信息匯集工作,效果良好。

    參考文獻參考文獻:

    [1]任鋼.基于Apache CXF構(gòu)建SOA應(yīng)用[M].北京:電子工業(yè)出版社,2013:5065.

    [2]賈蓓,鎮(zhèn)明敏,杜磊,等.Java Web整合開發(fā)實戰(zhàn)[M].北京:清華大學出版社,2013:456531.

    [3]ANHAI DOAN,ALON HALEVY,ZACHARY IVES.數(shù)據(jù)集成原理[M].孟小峰,馬如霞,馬友忠,譯.北京:機械工業(yè)出版社,2014:201203.

    [4]JOE FAWCETT,LIAM R E QUIN,DANNY AYERS.XML入門經(jīng)典[M].第5版.劉云鵬,王超,譯.北京:清華大學出版社,2013:3233.

    責任編輯(責任編輯:杜能鋼)endprint

    宜丰县| 鄂托克旗| 探索| 伊川县| 祥云县| 同仁县| 松桃| 临海市| 博湖县| 安乡县| 定襄县| 比如县| 永济市| 玉山县| 永德县| 东城区| 常宁市| 延长县| 马鞍山市| 丹巴县| 手游| 松江区| 九龙县| 武夷山市| 小金县| 肃宁县| 大同县| 左权县| 彰武县| 沛县| 屏南县| 石柱| 丰宁| 若羌县| 明水县| 安新县| 霸州市| 宁海县| 永清县| 瑞安市| 崇仁县|