摘要:隨著水利信息化建設(shè)的不斷深入,各級(jí)水利部門積累了大量豐富寶貴的水利數(shù)據(jù)信息。這些數(shù)據(jù)信息資源分散地存儲(chǔ)在各級(jí)水利部門的數(shù)據(jù)庫服務(wù)器上,但是由于各級(jí)水利部門所使用的數(shù)據(jù)庫類型不統(tǒng)一,阻礙了水利數(shù)據(jù)信息的共享。文中根據(jù)這一實(shí)際需求,提出了采用J2EE分層架構(gòu)技術(shù),結(jié)合XML,AJAX等相關(guān)技術(shù),運(yùn)用智能客戶端與B/S(Browser/Server)相結(jié)合的結(jié)構(gòu)模式,設(shè)計(jì)了數(shù)據(jù)庫維護(hù)管理系統(tǒng),用以實(shí)現(xiàn)對(duì)水利信息中心數(shù)據(jù)庫的數(shù)據(jù)及其系統(tǒng)的維護(hù)與管理。
關(guān)鍵詞: J2EE架構(gòu);數(shù)據(jù)庫維護(hù)管理系統(tǒng);B/S
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2012)28-6655-04
1 J2EE體系結(jié)構(gòu)介紹
1.1 J2EE介紹
J2EE是Sun公司定義的一個(gè)開發(fā)企業(yè)級(jí)應(yīng)用的規(guī)范。它的目標(biāo)是提供平臺(tái)無關(guān)的、可移植的、支持并發(fā)訪問和安全的,完全基于Java的開發(fā)服務(wù)器端中間件的標(biāo)準(zhǔn)。J2EE提供了一個(gè)多層次的應(yīng)用模型和一系列開發(fā)技術(shù)規(guī)范。多層次分布式應(yīng)用模型是指根據(jù)功能把應(yīng)用邏輯分成多個(gè)層次,每個(gè)層次支持相應(yīng)的服務(wù)器和組件,組件在分布式服務(wù)器的組件容器中運(yùn)行,如Web組件在Web容器上運(yùn)行,EJB組件在EJB容器上運(yùn)行,容器間通過相關(guān)的協(xié)議進(jìn)行通訊,實(shí)現(xiàn)組件間的相互調(diào)用。遵從這個(gè)規(guī)范的開發(fā)者將得到行業(yè)的廣泛支持,使企業(yè)級(jí)應(yīng)用的開發(fā)變得簡單、快速。而Java應(yīng)用程序具有“Write once,Run anywhere”的特性,使得J2EE技術(shù)在分布式計(jì)算領(lǐng)域得到了快速發(fā)展。
1.2 J2EE的四層結(jié)構(gòu)
J2EE使用多層的分布式應(yīng)用模型,應(yīng)用邏輯按功能劃分為組件,各個(gè)應(yīng)用組件根據(jù)他們所在的層分布在不同的機(jī)器上。事實(shí)上,Sun設(shè)計(jì)J2EE的初衷正是為了解決兩層模式(client/server)的弊端,在傳統(tǒng)模式中,客戶端擔(dān)當(dāng)了過多的角色而顯得臃腫,在這種模式中,第一次部署的時(shí)候比較容易,但難于升級(jí)或改進(jìn),可伸展性也不理想,而且經(jīng)常基于某種專有的協(xié)議,通常是某種數(shù)據(jù)庫協(xié)議。它使得重用業(yè)務(wù)邏輯和界面邏輯非常困難?,F(xiàn)在J2EE 的多層企業(yè)級(jí)應(yīng)用模型將兩層化模型中的不同層面切分成許多層。一個(gè)多層化應(yīng)用能夠?yàn)椴煌拿糠N服務(wù)提供一個(gè)獨(dú)立的層,以下是 J2EE 典型的四層結(jié)構(gòu),如圖1所示。
1.3 J2EE的優(yōu)勢(shì)
J2EE為搭建具有可伸縮性、靈活性、易維護(hù)性的商務(wù)系統(tǒng)提供了良好的機(jī)制:
1)保留現(xiàn)存的IT資產(chǎn):由于企業(yè)必須適應(yīng)新的商業(yè)需求,利用已有的企業(yè)信息系統(tǒng)方面的投資,而不是重新制定全盤方案就變得很重要。這樣,一個(gè)以漸進(jìn)的(而不是激進(jìn)的,全盤否定的)方式建立在已有系統(tǒng)之上的服務(wù)器端平臺(tái)機(jī)制是公司所需求的。J2EE架構(gòu)可以充分利用用戶原有的投資,如一些公司使用的BEA Tuxedo、IBM CICS, IBM Encina,、Inprise VisiBroker 以及Netscape Application Server。這之所以成為可能是因?yàn)镴2EE擁有廣泛的業(yè)界支持和一些重要的'企業(yè)計(jì)算'領(lǐng)域供應(yīng)商的參與。每一個(gè)供應(yīng)商都對(duì)現(xiàn)有的客戶提供了不用廢棄已有投資,進(jìn)入可移植的J2EE領(lǐng)域的升級(jí)途徑。由于基于J2EE平臺(tái)的產(chǎn)品幾乎能夠在任何操作系統(tǒng)和硬件配置上運(yùn)行,現(xiàn)有的操作系統(tǒng)和硬件也能被保留使用。
2)高效的開發(fā): J2EE允許公司把一些通用的、很繁瑣的服務(wù)端任務(wù)交給中間件供應(yīng)商去完成。這樣開發(fā)人員可以集中精力在如何創(chuàng)建商業(yè)邏輯上,相應(yīng)地縮短了開發(fā)時(shí)間。高級(jí)中間件供應(yīng)商提供以下這些復(fù)雜的中間件服務(wù):
?、贍顟B(tài)管理服務(wù),讓開發(fā)人員寫更少的代碼,不用關(guān)心如何管理狀態(tài),這樣能夠更快地完成程序開發(fā)。
②持續(xù)性服務(wù), 讓開發(fā)人員不用對(duì)數(shù)據(jù)訪問邏輯進(jìn)行編碼就能編寫應(yīng)用程序,能生成更輕巧,與數(shù)據(jù)庫無關(guān)的應(yīng)用程序,這種應(yīng)用程序更易于開發(fā)與維護(hù)。
?、鄯植际焦蚕頂?shù)據(jù)對(duì)象CACHE服務(wù),讓開發(fā)人員編制高性能的系統(tǒng),極大提高整體部署的伸縮性。
3)支持異構(gòu)環(huán)境:J2EE能夠開發(fā)部署在異構(gòu)環(huán)境中的可移植程序。基于J2EE的應(yīng)用程序不依賴任何特定操作系統(tǒng)、中間件、硬件。因此設(shè)計(jì)合理的基于J2EE的程序只需開發(fā)一次就可部署到各種平臺(tái)。這在典型的異構(gòu)企業(yè)計(jì)算環(huán)境中是十分關(guān)鍵的。J2EE標(biāo)準(zhǔn)也允許客戶訂購與J2EE兼容的第三方的現(xiàn)成的組件,把他們部署到異構(gòu)環(huán)境中,節(jié)省了由自己制訂整個(gè)方案所需的費(fèi)用。
4)可伸縮性:企業(yè)必須要選擇一種服務(wù)器端平臺(tái),這種平臺(tái)應(yīng)能提供極佳的可伸縮性去滿足那些在他們系統(tǒng)上進(jìn)行商業(yè)運(yùn)作的大批新客戶?;贘2EE平臺(tái)的應(yīng)用程序可被部署到各種操作系統(tǒng)上。例如可被部署到高端UNIX與大型機(jī)系統(tǒng),這種系統(tǒng)單機(jī)可支持64至256個(gè)處理器。(這是NT服務(wù)器所望塵莫及的)J2EE領(lǐng)域的供應(yīng)商提供了更為廣泛的負(fù)載平衡策略。能消除系統(tǒng)中的瓶頸,允許多臺(tái)服務(wù)器集成部署。這種部署可達(dá)數(shù)千個(gè)處理器,實(shí)現(xiàn)可高度伸縮的系統(tǒng),滿足未來商業(yè)應(yīng)用的需要。
5)穩(wěn)定的可用性:一個(gè)服務(wù)器端平臺(tái)必須能全天候運(yùn)轉(zhuǎn)以滿足公司客戶、合作伙伴的需要。因?yàn)镮NTERNET是全球化的、無處不在的,即使在夜間按計(jì)劃停機(jī)也可能造成嚴(yán)重?fù)p失。若是意外停機(jī),那會(huì)有災(zāi)難性后果。J2EE部署到可靠的操作環(huán)境中,他們支持長期的可用性。一些J2EE部署在WINDOWS環(huán)境中,客戶也可選擇健壯性能更好的操作系統(tǒng)如Sun Solaris、IBM OS/390。最健壯的操作系統(tǒng)可達(dá)到99.999%的可用性或每年只需5分鐘停機(jī)時(shí)間。這是實(shí)時(shí)性很強(qiáng)商業(yè)系統(tǒng)理想的選擇。
2 基于J2EE的水利信息中心數(shù)據(jù)庫維護(hù)管理系統(tǒng)設(shè)計(jì)
2.1 系統(tǒng)總體框架
該本系統(tǒng)采用J2EE框架和B/S結(jié)構(gòu),系統(tǒng)從服務(wù)器到客戶端分為數(shù)據(jù)庫層、數(shù)據(jù)操作及事務(wù)管理層、Web組件層、瀏覽器。如圖2所示:
(1)在數(shù)據(jù)庫維護(hù)管理系統(tǒng)中,數(shù)據(jù)庫采用Oracle,應(yīng)用服務(wù)器采用WebLogic或JBoss。
?。?)通用工具層是提高應(yīng)用系統(tǒng)的靈活性、可重用性、高可靠性及使用的方便性關(guān)鍵,包括:通用的可任意配置頁面和查詢條件的數(shù)據(jù)查詢工具、通用的報(bào)表工具、通用的基于數(shù)據(jù)標(biāo)準(zhǔn)規(guī)范的數(shù)據(jù)通訊與交換工具、基于Web的統(tǒng)一接口的GIS顯示工具等。
?。?)應(yīng)用層是最終面向用戶的定制化的應(yīng)用系統(tǒng)。
2.2 系統(tǒng)技術(shù)架構(gòu)
水利資源數(shù)據(jù)分中心數(shù)據(jù)庫維護(hù)管理系統(tǒng)在維護(hù)管理對(duì)象的復(fù)雜性、維護(hù)管理業(yè)務(wù)方式的多樣性、數(shù)據(jù)庫結(jié)構(gòu)標(biāo)準(zhǔn)的遲滯性等方面構(gòu)成了特別的背景條件。根據(jù)這些背景條件,數(shù)據(jù)庫維護(hù)管理系統(tǒng)開發(fā)需要考慮以下限制:
?。?)建成數(shù)據(jù)庫維護(hù)管理系統(tǒng)集成平臺(tái),支持水利資源數(shù)據(jù)分中心各專題數(shù)據(jù)庫數(shù)據(jù)和系統(tǒng)的維護(hù)管理,減少數(shù)據(jù)庫維護(hù)與管理的復(fù)雜性,提高維護(hù)與管理效率。
?。?)數(shù)據(jù)庫維護(hù)管理系統(tǒng)需要滿足數(shù)據(jù)庫查詢預(yù)覽、數(shù)據(jù)庫數(shù)據(jù)維護(hù)、數(shù)據(jù)庫系統(tǒng)維護(hù)等三個(gè)層次的功能需求,需要按這三個(gè)層次實(shí)現(xiàn)維護(hù)權(quán)限控制。
?。?)為了支持?jǐn)?shù)據(jù)庫維護(hù)管理基本系統(tǒng)與各專題數(shù)據(jù)庫個(gè)性功能的定制和配置,需要開發(fā)參數(shù)配置庫服務(wù)中間件。參數(shù)配置庫記錄了各專題數(shù)據(jù)庫對(duì)象的各種描述、維護(hù)相關(guān)規(guī)則、個(gè)性維護(hù)定義。在數(shù)據(jù)庫維護(hù)管理系統(tǒng)與各專題數(shù)據(jù)庫之間實(shí)現(xiàn)語義映射、功能配置、格式轉(zhuǎn)換等作用。
?。?)數(shù)據(jù)庫維護(hù)管理系統(tǒng)是水利資源數(shù)據(jù)分中心集成的數(shù)據(jù)庫維護(hù)管理平臺(tái),需要考慮數(shù)據(jù)分中心可能的環(huán)境異構(gòu)、軟件標(biāo)準(zhǔn)及其建設(shè)規(guī)范,采用與平臺(tái)無關(guān)的軟件架構(gòu),開發(fā)基于中間件的數(shù)據(jù)庫維護(hù)管理系統(tǒng)和數(shù)據(jù)庫訪問系統(tǒng),建成數(shù)據(jù)維護(hù)管理的基礎(chǔ)平臺(tái),支持水利資源數(shù)據(jù)分中心各專題數(shù)據(jù)庫集成化的數(shù)據(jù)維護(hù)管理。
J2EE具有可伸縮性、靈活性、易維護(hù)性等優(yōu)勢(shì)?;谝陨显颍鞠到y(tǒng)總體采用J2EE技術(shù)框架,部分結(jié)合AJAX相關(guān)技術(shù)聯(lián)接客戶層和web層(將頁面展示與用戶直接交互的層次看作客戶層)??蛻舳送ㄓ脼g覽器訪問,核心使用JSP技術(shù),且使用其他頁面技術(shù)包括CSS和JavaScript技術(shù);Web服務(wù)層主要使用Servlet技術(shù)作為控制器調(diào)用其他對(duì)象,完成操作并返回結(jié)果到客戶層展示。AJAX技術(shù)主要作為一種訪問請(qǐng)求方式,在客戶層和Web層交互,結(jié)合JavaScript技術(shù)局部改變頁面數(shù)據(jù)顯示而不刷新整個(gè)頁面(使用AJAX的開源框架DWR)。系統(tǒng)技術(shù)架構(gòu)如圖3所示。
圖3 系統(tǒng)技術(shù)架構(gòu)圖
?。?)客戶層主要指與頁面顯示相關(guān)以及能夠直接與用戶交互的部分。頁面的顯示的內(nèi)容使用JSP技術(shù)(大部分與HTML相關(guān)),頁面內(nèi)容顯示的樣式使用CSS技術(shù),頁面與用戶的動(dòng)態(tài)交互使用JavaScript編寫相關(guān)組件(包括AJAX相關(guān)的JavaScript代碼)。這三部分盡量分開為獨(dú)立的部分,便于修改和維護(hù)。
?。?)Web層為核心業(yè)務(wù)層,從客戶層獲得請(qǐng)求信息,通過數(shù)據(jù)庫訪問中間件獲得對(duì)數(shù)據(jù)庫的操作。在本層中進(jìn)行數(shù)據(jù)的封裝或處理,然后返回給客戶層顯示或?qū)⒖蛻魧拥臄?shù)據(jù)保存到數(shù)據(jù)庫中去,完成客戶層與數(shù)據(jù)庫層的數(shù)據(jù)交互。每個(gè)子系統(tǒng)在該層都對(duì)應(yīng)于一個(gè)核心的控制器Controller(主要是servlet類),它調(diào)用專門的數(shù)據(jù)庫操作類和數(shù)據(jù)庫中間件進(jìn)行聯(lián)系;在數(shù)據(jù)的處理過程中,可以創(chuàng)建獨(dú)立的個(gè)性處理類提供數(shù)據(jù)的處理方法;另外,對(duì)于部分子系統(tǒng)需要?jiǎng)?chuàng)建用于保存某類信息的JavaBean,這里指的是一個(gè)值對(duì)象,只提供數(shù)據(jù)信息的保存和讀取方法,這個(gè)對(duì)象可能需要保存在服務(wù)器的Web容器中以供隨時(shí)調(diào)用。JDBC是Java訪問數(shù)據(jù)庫的一種途徑和接口,它為不同數(shù)據(jù)提供了一個(gè)統(tǒng)一的訪問方法,屏蔽了底層不同數(shù)據(jù)的不同實(shí)現(xiàn)細(xì)節(jié),是應(yīng)用服務(wù)平臺(tái)和基礎(chǔ)數(shù)據(jù)庫實(shí)現(xiàn)透明訪問的必不可少的數(shù)據(jù)訪問邏輯層,系統(tǒng)采用JDBC訪問異種異地?cái)?shù)據(jù)庫。
(3)數(shù)據(jù)層,參數(shù)配置庫存儲(chǔ)數(shù)據(jù)庫服務(wù)器、專題數(shù)據(jù)庫、數(shù)據(jù)庫信息主題、數(shù)據(jù)庫數(shù)據(jù)表、數(shù)據(jù)庫數(shù)據(jù)列、數(shù)據(jù)庫列枚舉等相關(guān)的概念、標(biāo)識(shí)和約束的描述信息。在數(shù)據(jù)庫維護(hù)管理系統(tǒng)與各專題數(shù)據(jù)庫之間實(shí)現(xiàn)語義映射、功能配置、格式轉(zhuǎn)換等作用。專題數(shù)據(jù)庫層部署了水文、水質(zhì)、水資源、水利設(shè)施(空間)、土壤侵蝕、灌溉、水能資源調(diào)查、農(nóng)村水電8個(gè)方面的數(shù)據(jù)庫。各專題數(shù)據(jù)庫的數(shù)據(jù)庫管理系統(tǒng)基于Oracle數(shù)據(jù)庫、SqlServer數(shù)據(jù)庫以及Sybase數(shù)據(jù)庫系統(tǒng)中的任意一種數(shù)據(jù)庫系統(tǒng)。
2.3 系統(tǒng)功能設(shè)計(jì)
1)參數(shù)庫子系統(tǒng):參數(shù)配置庫在維護(hù)系統(tǒng)和數(shù)據(jù)庫之間作為中介,支持維護(hù)系統(tǒng)通用服務(wù)功能與專用維護(hù)功能之間的語義映射、功能配置和格式轉(zhuǎn)換。開發(fā)專門維護(hù)管理程序?qū)?shù)配置庫進(jìn)行維護(hù),其數(shù)據(jù)來源分別來自于人工輸入和數(shù)據(jù)庫模式抽取、同步機(jī)制。參數(shù)配置庫由Oracle系統(tǒng)存儲(chǔ)和管理。參數(shù)庫管理功能主要包括數(shù)據(jù)庫注冊(cè)、主題注冊(cè)、表注冊(cè)、列注冊(cè)等功能。
2)數(shù)據(jù)庫查詢預(yù)覽子系統(tǒng):依據(jù)各專題數(shù)據(jù)庫數(shù)據(jù)庫結(jié)構(gòu)、數(shù)據(jù)內(nèi)容及其約束特點(diǎn),為各專題數(shù)據(jù)庫定制數(shù)據(jù)編輯維護(hù)、數(shù)據(jù)校核驗(yàn)證、數(shù)據(jù)統(tǒng)計(jì)分析等個(gè)性參數(shù)存入?yún)?shù)庫。通過數(shù)據(jù)庫查詢預(yù)覽子系統(tǒng),在獲取目標(biāo)數(shù)據(jù)集的基礎(chǔ)上,對(duì)目標(biāo)數(shù)據(jù)集實(shí)現(xiàn)數(shù)據(jù)編輯維護(hù)、數(shù)據(jù)檢查校核、數(shù)據(jù)統(tǒng)計(jì)分析、數(shù)據(jù)導(dǎo)入導(dǎo)出等功能。
3)數(shù)據(jù)庫數(shù)據(jù)維護(hù)子系統(tǒng):依據(jù)各專題數(shù)據(jù)庫數(shù)據(jù)庫結(jié)構(gòu)、數(shù)據(jù)內(nèi)容及其約束特點(diǎn),為各專題數(shù)據(jù)庫定制數(shù)據(jù)編輯維護(hù)、數(shù)據(jù)校核驗(yàn)證、數(shù)據(jù)統(tǒng)計(jì)分析等個(gè)性參數(shù)存入?yún)?shù)庫。通過數(shù)據(jù)庫查詢預(yù)覽子系統(tǒng),在獲取目標(biāo)數(shù)據(jù)集的基礎(chǔ)上,對(duì)目標(biāo)數(shù)據(jù)集實(shí)現(xiàn)數(shù)據(jù)編輯維護(hù)、數(shù)據(jù)檢查校核、數(shù)據(jù)統(tǒng)計(jì)分析、數(shù)據(jù)導(dǎo)入導(dǎo)出等功能。
4)數(shù)據(jù)庫系統(tǒng)維護(hù)子系統(tǒng):通過數(shù)據(jù)庫查詢預(yù)覽的數(shù)據(jù)搜索定位、數(shù)據(jù)顯示預(yù)覽、數(shù)據(jù)篩選排序等功能獲取目標(biāo)數(shù)據(jù)集;或通過數(shù)據(jù)庫查詢預(yù)覽的數(shù)據(jù)庫服務(wù)器主機(jī)定位功能,獲取目標(biāo)數(shù)據(jù)庫主機(jī)或?qū)嵗?,?zhí)行數(shù)據(jù)庫備份恢復(fù)、數(shù)據(jù)庫安全控制、日志管理、數(shù)據(jù)庫系統(tǒng)性能監(jiān)測(cè)等維護(hù)與管理功能。
3 結(jié)束語
水利信息中心數(shù)據(jù)庫維護(hù)管理系統(tǒng)是一個(gè)結(jié)構(gòu)復(fù)雜、功能強(qiáng)、一項(xiàng)系統(tǒng)工程,本系統(tǒng)在設(shè)計(jì)與實(shí)現(xiàn)的同時(shí)遵循了實(shí)用性,安全性,規(guī)范行等原則。
1)系統(tǒng)是根數(shù)水利信息中心實(shí)際需求進(jìn)行設(shè)計(jì)和開發(fā)的,切合實(shí)際,有很強(qiáng)的實(shí)用性。
2)系統(tǒng)提供了統(tǒng)一數(shù)據(jù)訪問接口,滿足了對(duì)客戶端屏蔽數(shù)據(jù)模式以及數(shù)據(jù)庫的異構(gòu)性、操作系統(tǒng)的異構(gòu)性和網(wǎng)絡(luò)的復(fù)雜性的要求,且能夠集成Oracle、SQLServer、Sybase三種數(shù)據(jù)庫產(chǎn)品。
3)在技術(shù)方面,系統(tǒng)總體采用J2EE技術(shù)框架,結(jié)合AJAX技術(shù)局部改變頁面數(shù)據(jù)顯示而不刷新整個(gè)頁面。增加了系統(tǒng)的靈活性。
4)系統(tǒng)的安全控制模塊分為查詢預(yù)覽角色、數(shù)據(jù)維護(hù)員、參數(shù)庫管理員、用戶角色管理員以及系統(tǒng)管理員等五個(gè)角色,更好的保證了系統(tǒng)的安全。
參考文獻(xiàn):
[1] 趙強(qiáng),喬新亮. J2EE應(yīng)用開發(fā)(WebLogic+JBuilder)[M].北京:電子工業(yè)出版社,2003.
[2] 曾春平,王超,張鵬. XML教程從入門到精通[M].北京:希望電子出版社,2002:2-22.
[3] 杜軍威,隋樹林.基于XML的異構(gòu)數(shù)據(jù)庫模式轉(zhuǎn)換的實(shí)現(xiàn)[J].青島科技大學(xué)學(xué)報(bào),2005(2):158-161.
[4] 馬忠貴,葉斌,王宗杰,等.基于服務(wù)的數(shù)據(jù)交換引擎研究[J].計(jì)算機(jī)應(yīng)用.2005(12): 354-357.
[5] 田華,墻芳據(jù). Browser/Server技術(shù)-新一代的計(jì)算模式[J].計(jì)算應(yīng)用研究,1998(6):1-