褚彬+陳修亮+閆麗
摘要摘要:實施綜合統(tǒng)籌的一體化設(shè)計,是科學(xué)推進裝備業(yè)務(wù)信息系統(tǒng)建設(shè)的必由之路。針對裝備業(yè)務(wù)信息系統(tǒng)具體需求,闡述了J2EE多層架構(gòu)的基本概念和分層結(jié)構(gòu),設(shè)計了裝備業(yè)務(wù)信息系統(tǒng)的軟件分層結(jié)構(gòu),并實現(xiàn)了系統(tǒng)的多層架構(gòu)。
關(guān)鍵詞關(guān)鍵詞:J2EE;多層架構(gòu);裝備管理;業(yè)務(wù)系統(tǒng)
DOIDOI:10.11907/rjdk.162191
中圖分類號:TP319文獻標(biāo)識碼:A文章編號文章編號:16727800(2017)001008303
引言
加快裝備業(yè)務(wù)綜合信息系統(tǒng)建設(shè),是做好軍事斗爭裝備準(zhǔn)備的現(xiàn)實需要,是促進裝備科學(xué)管理、提高基于信息系統(tǒng)體系作戰(zhàn)能力和裝備保障能力的必由之路。裝備信息管理的空間分布廣、時間跨度長、業(yè)務(wù)領(lǐng)域?qū)挕㈥P(guān)系錯綜復(fù)雜,只有準(zhǔn)確把握裝備業(yè)務(wù)管理的特點和規(guī)律,運用先進的信息工程理論和方法,才能確保系統(tǒng)建設(shè)實現(xiàn)又好又快發(fā)展,有效達成預(yù)期的建設(shè)目標(biāo)[1]。當(dāng)前,由于我軍裝備業(yè)務(wù)信息系統(tǒng)建設(shè)較早,其框架仍處于低層次架構(gòu),大多采用的是C/S和B/S的兩層或三層架構(gòu),這些系統(tǒng)具有局限性、不可維護性、不可擴展性等缺點。因此,研究裝備業(yè)務(wù)綜合信息系統(tǒng)多層架構(gòu)設(shè)計與實現(xiàn),有效解決當(dāng)前系統(tǒng)的主要局限,提高裝備管理業(yè)務(wù)工作水平和效率,顯得十分必要和緊迫。1J2EE及其多層架構(gòu)
隨著面向?qū)ο缶幊趟枷氲纳钊霊?yīng)用以及系統(tǒng)對封裝、復(fù)用、擴展、移置等方面的要求,傳統(tǒng)客戶/服務(wù)雙層架構(gòu)已不能滿足互聯(lián)網(wǎng)背景下計算處理要求,軟件分層設(shè)計具有擴展性強、維護方便、組件重用性高等優(yōu)點,有利于軟件開發(fā)的標(biāo)準(zhǔn)化,也便于對整個開發(fā)過程的管理,因此被越來越多的開發(fā)者使用。其核心思想是在客戶/服務(wù)之間加入一層數(shù)據(jù)庫中間件,形成“瘦客戶機—胖中間層—瘦服務(wù)器”的計算模式。
J2EE[2]是Java2平臺企業(yè)版(Java2 Platform,Enterprise Edition)的簡稱,該平臺提供了一個企業(yè)級的計算模型和運行環(huán)境用于開發(fā)和部署多層體系結(jié)構(gòu)的應(yīng)用,它通過提供企業(yè)計算環(huán)境所必需的各種服務(wù),使得部署在J2EE平臺上的多層應(yīng)用可以實現(xiàn)高可用性、安全性、可擴參考文獻:
裝備業(yè)務(wù)綜合信息系統(tǒng)因業(yè)務(wù)邏輯和數(shù)據(jù)處理規(guī)則都是由總部或各軍種統(tǒng)一制定,數(shù)據(jù)和程序集中在統(tǒng)一的服務(wù)器上,并且服務(wù)器運行平臺與客戶端的運行平臺不同,采用J2EE的框架結(jié)構(gòu)解決系統(tǒng)體系結(jié)構(gòu)問題比較合適。2系統(tǒng)多層體系結(jié)構(gòu)設(shè)計
裝備業(yè)務(wù)綜合信息系統(tǒng)采用基于Struts2和Hibernate框架組合的J2EE分層架構(gòu)思想,整個系統(tǒng)架構(gòu)分為5層,系統(tǒng)架構(gòu)如圖2所示。
該層次架構(gòu)中,網(wǎng)絡(luò)等基礎(chǔ)設(shè)施是底層,主要依托全軍網(wǎng)絡(luò)基礎(chǔ)設(shè)施,選擇軍隊選型廠商生產(chǎn)的計算機等設(shè)備,加裝全軍統(tǒng)一配發(fā)的安全保密設(shè)備,確保硬件平臺的安全穩(wěn)定;操作系統(tǒng)等系統(tǒng)軟件是基礎(chǔ),主要選擇國家和軍隊推薦的國產(chǎn)化系統(tǒng)軟件產(chǎn)品;WPS等辦公軟件是支撐,標(biāo)準(zhǔn)規(guī)范是保障,主要包括管理保障、基礎(chǔ)支撐和業(yè)務(wù)應(yīng)用3類,保障系統(tǒng)規(guī)范化研制、制度化管理和常態(tài)化運行。
裝備信息管理軟件是系統(tǒng)整體架構(gòu)的核心,其多層架構(gòu)主要由數(shù)據(jù)層、數(shù)據(jù)集成層、業(yè)務(wù)邏輯層、Web層和用戶表示層五層組成。
數(shù)據(jù)層(企業(yè)信息系統(tǒng)層):具體指選用的關(guān)系數(shù)據(jù)庫系統(tǒng),主要負(fù)責(zé)基礎(chǔ)數(shù)據(jù)庫以及業(yè)務(wù)數(shù)據(jù)的底層存儲。本系統(tǒng)的數(shù)據(jù)存儲在SQL Server 2008數(shù)據(jù)庫中的64個數(shù)據(jù)表中。
數(shù)據(jù)集成層:主要指與數(shù)據(jù)層中的數(shù)據(jù)表一一對應(yīng)的本地接口實體Bean組成,當(dāng)數(shù)據(jù)層發(fā)生改變時,該層向業(yè)務(wù)邏輯層提供的接口不會改變。因此,數(shù)據(jù)集成層完全向客戶端隱藏了數(shù)據(jù)源的實現(xiàn)細(xì)節(jié)。系統(tǒng)主要包括與數(shù)據(jù)庫64個表相對應(yīng)的實體Bean。
業(yè)務(wù)邏輯層:主要負(fù)責(zé)對業(yè)務(wù)邏輯的封裝,完成系統(tǒng)要求。系統(tǒng)具有3個有狀態(tài)的會話Bean,處理與數(shù)據(jù)更新有關(guān)的業(yè)務(wù)邏輯;兩個無狀態(tài)的會話Bea,處理其它業(yè)務(wù)邏輯。
Web層:主要使用JSP和Struts2提供的標(biāo)簽庫實現(xiàn),提供了接收/響應(yīng)客戶端請求,與業(yè)務(wù)邏輯層交互,能夠使業(yè)務(wù)數(shù)據(jù)格式化并生成動態(tài)Web頁面,Web層運行在Web服務(wù)器中。系統(tǒng)選用52個Servlet負(fù)責(zé)會話Bean中定義的業(yè)務(wù)邏輯,并動態(tài)生成JSP。
用戶表示層:主要通過系統(tǒng)的界面進行各自不同權(quán)限功能的相關(guān)操作。系統(tǒng)主要由198個JSP頁面負(fù)責(zé)接收用戶的請求,并把結(jié)果數(shù)據(jù)提供給用戶。
根據(jù)系統(tǒng)的總體分層架構(gòu),在充分的需求分析基礎(chǔ)上,確定系統(tǒng)的基本功能模塊及其劃分,系統(tǒng)的主要功能結(jié)構(gòu)如圖3所示。
系統(tǒng)中的多層架構(gòu)層次分明,分工明確且相對獨立,實現(xiàn)了功能層中業(yè)務(wù)邏輯和數(shù)據(jù)邏輯之間的松耦合關(guān)系,同時也降低了開發(fā)成本和開發(fā)風(fēng)險。
3系統(tǒng)多層結(jié)構(gòu)實現(xiàn)
根據(jù)系統(tǒng)的軟件分層結(jié)構(gòu)設(shè)計對系統(tǒng)的多層結(jié)構(gòu)進行詳細(xì)的代碼實現(xiàn),以“戰(zhàn)勤資料管理”功能為例,說明系統(tǒng)中多層架構(gòu)的實現(xiàn)。
(1)數(shù)據(jù)層。系統(tǒng)選用SQLServer 2008數(shù)據(jù)庫,用基于XML的JNDI[3]和JDBC方法的連接代碼如下:
(2)數(shù)據(jù)集成層。鑒于對數(shù)據(jù)的傳輸效率和實時性要求比較高,系統(tǒng)選用EJB中間件作為訪問數(shù)據(jù)庫的業(yè)務(wù)層組件。EJB能夠自動提供對象持久性、安全性和事物管理等服務(wù),大大簡化了系統(tǒng)開發(fā)周期[4]。
為了將關(guān)系數(shù)據(jù)庫的數(shù)據(jù)轉(zhuǎn)換成對象,選用CMP實體Bean[5]實現(xiàn)對數(shù)據(jù)庫的訪問。系統(tǒng)的數(shù)據(jù)集成層采用具有本地接口的實體Bean,一個實體Bean對應(yīng)數(shù)據(jù)庫中的一個表,這樣能夠保證數(shù)據(jù)集成層和數(shù)據(jù)層一致,從而降低代碼復(fù)雜度,提高可復(fù)用性。例如,在數(shù)據(jù)庫中建立一個表T_NEWTABLE,SQL語句為:
CREATE TABLE “T_NEWTABLE” (“TABLEID” CARCHAR2(5), ”TNAME” VARCHAR2(20), ”TCONTENT” VARCHAR2(100));
與數(shù)據(jù)表T_NEWTABLE對應(yīng)的實體Bean可以表示為:
Pulibc TNewTablecreate(string tableid, string tname, string tcontent) throws CreateException;
可以用如下語句為上層用于數(shù)據(jù)查詢的會話Bean提供服務(wù):
Public Collection find session() throws find Exception;
(3)業(yè)務(wù)邏輯層。根據(jù)系統(tǒng)的需求以及出于安全性和效率的考慮,本系統(tǒng)應(yīng)用框架的業(yè)務(wù)邏輯層選用具有遠程接口的會話Bean[6]。
以戰(zhàn)勤法規(guī)資料維護為例,需要對數(shù)據(jù)庫表T_HJZB_ZQZL進行添加、刪除、修改等操作,按照應(yīng)用框架的業(yè)務(wù)邏輯層的設(shè)計,本功能需要創(chuàng)建一個有狀態(tài)的會話BEAN_ZQZLWH,用于戰(zhàn)勤法規(guī)資料維護的業(yè)務(wù)邏輯。BEAN_ZQZLWH類圖如圖4所示。
(4)Web層。為減輕客戶端開銷,降低客戶端軟硬件配置要求,選用Servlet技術(shù)[7]負(fù)責(zé)Web界面的控制,采用MVC框架,使系統(tǒng)的輸入、處理和輸出區(qū)分開來,這樣能夠保證系統(tǒng)代碼的相對獨立性。
以“系統(tǒng)登錄”為例,該層需要創(chuàng)建一個Servlet:SERVLET_LOGIN調(diào)用無狀態(tài)的會話Bean_LOGIN接口,用來控制用戶登錄系統(tǒng)的界面,同時作為過濾器,將用戶的登錄信息保存在系統(tǒng)的Session中,由系統(tǒng)保存用戶的權(quán)限,轉(zhuǎn)至不同的功能界面,從而保證用戶在使用本系統(tǒng)時只需要登錄一次,而不需要每次使用一個功能都需要登錄一次。
(5)用戶表示層。本系統(tǒng)所有的用戶表示層選用JSP頁面,而JSP頁面只負(fù)責(zé)顯示,全部都是HTML代碼,頁面中的動態(tài)內(nèi)容都是由Servlet負(fù)責(zé),即JSP中顯示的結(jié)果數(shù)據(jù)都是通過Servlet的控制動態(tài)生成并顯示的,因此JSP頁面實現(xiàn)相對簡單。
4結(jié)語
介紹了基于J2EE多層架構(gòu)的基本概念,設(shè)計與實現(xiàn)了基于該多層架構(gòu)的裝備業(yè)務(wù)信息系統(tǒng),并已在軍內(nèi)裝備業(yè)務(wù)主管部門使用。實踐結(jié)果表明,采用多層架構(gòu)的軟件系統(tǒng),層次分明、分工明確且相對獨立,實現(xiàn)了功能層中業(yè)務(wù)邏輯和數(shù)據(jù)邏輯之間的松耦合關(guān)系,同時也降低了開發(fā)成本和開發(fā)風(fēng)險,提高了數(shù)據(jù)的安全性能。
參考文獻:
[1]張斌,楊長虹,石勇,等.裝備業(yè)務(wù)信息系統(tǒng)總體設(shè)計應(yīng)把握的幾個重點問題[J].裝甲兵工程學(xué)院學(xué)報,2011,25(5):5662.
[2]張少應(yīng),程傳旭.基于Hibernate的對象關(guān)系映射研究[J].電子設(shè)計工程,2016,24(6):129130.
[3]歐陽宏基,葛萌.基于Struts2與Hibernate框架的Java Web應(yīng)用研究[J].自動化技術(shù)與應(yīng)用,2016,35(2):4852.
[4]HONG WENQIANG,CHE CHAO,ZHANG QIANG,et al.Hibernate combined tableviewer in the application of medicines inventory management system[J].Computer Aided Drafting,Design and Manufacturing,2014,24(2):4853.
[5]李洋,孫永維,許冰,等.基于Ajax、Struts、Hibernate和Spring的J2EE架構(gòu)[J].吉林大學(xué)學(xué)報:信息科學(xué)版,2011,29(6):576584.
[6]安國志.基于J2EE技術(shù)的面向水利領(lǐng)域的分布式多層應(yīng)用系統(tǒng)研究與開發(fā)[D].北京:北京工業(yè)大學(xué),2013.
[7]王恩東.基于struts,hibernate和spring的J2EE架構(gòu)研究[J].現(xiàn)代電子技術(shù),2009,2(28):6163.