關(guān) 閉

新聞中心

EEPW首頁 > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 基于RMI的分布式銀行自助終端監(jiān)控系統(tǒng)的研究及實(shí)現(xiàn)

基于RMI的分布式銀行自助終端監(jiān)控系統(tǒng)的研究及實(shí)現(xiàn)

——
作者:陜西師范大學(xué)計(jì)算機(jī)科學(xué)學(xué)院 西安財(cái)經(jīng)學(xué)院 張永福 張娟 時(shí)間:2006-10-20 來源:現(xiàn)代電子技術(shù) 收藏
近年來隨著我國金融體制改革的不斷深人,銀行企業(yè)不斷利用信息技術(shù)拓寬業(yè)務(wù),其中對(duì)于自助銀行,使其得到了飛速發(fā)展,因此,依托現(xiàn)在計(jì)算機(jī)技術(shù)、網(wǎng)絡(luò)通信技術(shù)、數(shù)據(jù)安全技術(shù)開發(fā)出能對(duì)各種自助終端進(jìn)行監(jiān)控,網(wǎng)絡(luò)拓展性良好,使用靈活方便,安全的銀行自助終端監(jiān)控系統(tǒng)成為當(dāng)務(wù)之急。利用J2EE系統(tǒng)平臺(tái)[1],能有效地實(shí)現(xiàn)分布式多層體系結(jié)構(gòu)的應(yīng)用程序開發(fā)。

1 [2]

(Remote Method Invocation,遠(yuǎn)程方法調(diào)用)是J2EE技術(shù)中的一項(xiàng),是Java語言實(shí)現(xiàn)有力網(wǎng)絡(luò)功能的固有機(jī)制,允許Java編寫分布式對(duì)象,并允許對(duì)象在內(nèi)存中通信,可跨越Java虛擬機(jī)通信[3-4],也可跨越物理設(shè)備。

RMI實(shí)現(xiàn)實(shí)際上由3個(gè)抽象層建立:

Stubs/Skeletons Layer(存根/主架層);Remote Reference Layer(遠(yuǎn)程引用層);Transport Layer(傳輸層)。

2 監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

2.1 系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)

本系統(tǒng)以中國銀行內(nèi)部網(wǎng)絡(luò)為依托,采用集中式網(wǎng)絡(luò)結(jié)構(gòu)構(gòu)建而成。如圖1所示。

系統(tǒng)采用一臺(tái)監(jiān)控服務(wù)器,連在中國銀行主干網(wǎng)上,和提供數(shù)據(jù)源的前置機(jī)放入同一網(wǎng)段。服務(wù)器主機(jī)上運(yùn)行Web服務(wù)器、應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器,為用戶提供Web方式訪問。監(jiān)控客戶端以瀏覽器的形式在工作站上通過網(wǎng)絡(luò)直接訪問web服務(wù)器,進(jìn)行信息查詢、監(jiān)控管理、報(bào)表打印、系統(tǒng)維護(hù)等。環(huán)境內(nèi)其他用戶可通過路由器、DDN專線從相應(yīng)工作站以web形式訪問Web服務(wù)器。

2.2 系統(tǒng)邏輯層次結(jié)構(gòu)圖

監(jiān)控系統(tǒng)由數(shù)據(jù)庫服務(wù)器、應(yīng)用服務(wù)器、web服務(wù)器和瀏覽器組成,通過Intranet/Internet與綜合前置系統(tǒng)連接。

本文將3層結(jié)構(gòu)模式應(yīng)用于銀行自助終端監(jiān)控系統(tǒng),這3層分別是:客戶層;Web層(應(yīng)用邏輯層);層(見圖2)。

這種結(jié)構(gòu)無疑是富有生命力的,監(jiān)控臺(tái)使用瀏覽器直接與銀行Intranet連接,監(jiān)控服務(wù)器(監(jiān)控服務(wù)器由Application Server和DB Servet兩臺(tái)服務(wù)器組成)在接入Intranet之前與一個(gè)Web Server連接,再通過Web Server接入Internet。通過Internet在監(jiān)控服務(wù)器與監(jiān)控臺(tái)之間建立物理連接。

2.3 應(yīng)用系統(tǒng)結(jié)構(gòu)

自助設(shè)備監(jiān)控系統(tǒng)是監(jiān)控前端自助設(shè)備運(yùn)行狀態(tài),交易情況的網(wǎng)上應(yīng)用系統(tǒng),他的數(shù)據(jù)來自于數(shù)據(jù)采集模塊。前端自助設(shè)備運(yùn)行時(shí)發(fā)送狀態(tài)交易數(shù)據(jù)到前置機(jī)、主機(jī)系統(tǒng),由前置機(jī)、主機(jī)系統(tǒng)進(jìn)行處理,并將狀態(tài)數(shù)據(jù)、交易情況記入數(shù)據(jù)庫或LOG文件中。如圖3所示,由監(jiān)控系統(tǒng)數(shù)據(jù)采集模塊定時(shí)采集數(shù)據(jù)庫或LOG文件中的數(shù)據(jù)到監(jiān)控?cái)?shù)據(jù)庫中,監(jiān)控應(yīng)用系統(tǒng)負(fù)責(zé)對(duì)監(jiān)控?cái)?shù)據(jù)統(tǒng)一處理,并通過監(jiān)控客戶端實(shí)時(shí)請(qǐng)求發(fā)送到監(jiān)控客戶端進(jìn)行顯示及其他處理。

3 RMI技術(shù)在監(jiān)控系統(tǒng)中的應(yīng)用

中國銀行天津分行在每個(gè)地區(qū)都下設(shè)支行,每個(gè)支行負(fù)責(zé)管理本地區(qū)的ATM網(wǎng)點(diǎn),因此各個(gè)支行之間網(wǎng)點(diǎn)ATM自助設(shè)備的狀態(tài)、交易信息不能共享.那么各個(gè)地區(qū)的監(jiān)控客戶端就只能通過本地區(qū)支行的監(jiān)控服務(wù)器實(shí)時(shí)監(jiān)控本地區(qū)的ATM網(wǎng)點(diǎn)的自助終端設(shè)備,為了使身處各個(gè)地區(qū)的監(jiān)控客戶端都能夠監(jiān)控各個(gè)支行所轄的ATM網(wǎng)點(diǎn)自助終端設(shè)備,就必須采用分布式的監(jiān)控系統(tǒng)。每個(gè)支行都設(shè)置一臺(tái)監(jiān)控服務(wù)器,與各自所在支行的前置系統(tǒng)相連接,利用RMI技術(shù)將實(shí)時(shí)監(jiān)控、遠(yuǎn)程控制、查詢統(tǒng)計(jì)組件注冊(cè)為遠(yuǎn)程對(duì)象,監(jiān)控客戶機(jī)在任何支行的監(jiān)控服務(wù)器上的注冊(cè)服務(wù)表用遠(yuǎn)程對(duì)象的名字查找相應(yīng)遠(yuǎn)程對(duì)象,然后調(diào)用他的方法,就可以像監(jiān)控本地區(qū)的ATM自助終端設(shè)備那樣監(jiān)控其他地區(qū)的ATM自助終端設(shè)備。

下面本文將以對(duì)ATM狀態(tài)的實(shí)時(shí)監(jiān)控如何借助RMI技術(shù)實(shí)現(xiàn)做以討論[5]。

3.1 定義遠(yuǎn)程接口

在Java中,遠(yuǎn)程對(duì)象是實(shí)現(xiàn)遠(yuǎn)程接口的類的實(shí)例,遠(yuǎn)程接口聲明每個(gè)要遠(yuǎn)程調(diào)用的方法。在需要?jiǎng)?chuàng)建一個(gè)遠(yuǎn)程對(duì)象的時(shí)候,通過傳遞一個(gè)接口來隱藏基層的實(shí)施細(xì)節(jié),客戶通過接口句柄發(fā)送消息即可。遠(yuǎn)程接口具有如下特點(diǎn):

(1)遠(yuǎn)程接口必須為public屬性。

(2)遠(yuǎn)程接口必須擴(kuò)展接口java.rmi.Remote。

(3)除與應(yīng)用程序本身特定的例外之外,遠(yuǎn)程接口中的每個(gè)方法都必須在自己的throws從句中聲明java.rmi.RemoteException。

(4)作為參數(shù)或返回值傳遞的一個(gè)遠(yuǎn)程對(duì)象(不管是直接,還是本地對(duì)象中嵌入)必須聲明為遠(yuǎn)程接口,而不應(yīng)聲明為實(shí)施類。

下面是對(duì)ATM狀態(tài)實(shí)時(shí)監(jiān)控的遠(yuǎn)程接口ATM_StatusShow_Interface的定義。

3.2 實(shí)現(xiàn)遠(yuǎn)程接口[6]

遠(yuǎn)程對(duì)象實(shí)現(xiàn)類必須擴(kuò)展遠(yuǎn)程對(duì)象java.rmi.UnicastRemoteObject類,并實(shí)現(xiàn)所定義的遠(yuǎn)程接口。遠(yuǎn)程對(duì)象的實(shí)現(xiàn)類中包含實(shí)現(xiàn)每個(gè)遠(yuǎn)程接口所指定的遠(yuǎn)程方法的代碼。這個(gè)類也可以含有附加的方法,但客戶只能使用遠(yuǎn)程接口中的方法。因?yàn)榭蛻羰侵赶蚪涌诘囊粋€(gè)句柄,而不是他的哪個(gè)類。必須為遠(yuǎn)程對(duì)象定義構(gòu)造函數(shù),即使只準(zhǔn)備定義一個(gè)默認(rèn)構(gòu)造函數(shù),用他調(diào)用基礎(chǔ)類構(gòu)造函數(shù)。

3.3 編寫服務(wù)器類

通過ATM_StatusShow_Server創(chuàng)建一個(gè)遠(yuǎn)程對(duì)象的實(shí)例,并通過java.rmi.registry.LocateRegistry類的createRegistry方法從指定端口號(hào)啟動(dòng)注冊(cè)服務(wù)程序,注冊(cè)服務(wù)程序的缺省運(yùn)行端口為1099。必須將遠(yuǎn)程對(duì)象名字綁定到對(duì)遠(yuǎn)程對(duì)象的引用上。

3.4 編寫使用遠(yuǎn)程服務(wù)的客戶機(jī)類。

客戶機(jī)類的主要功能有2個(gè):一是通過Naming.lookup方法來構(gòu)造注冊(cè)服務(wù)程序stub程序?qū)嵗?;二是調(diào)用服務(wù)器遠(yuǎn)程對(duì)象上的遠(yuǎn)程方法。

3.5 為遠(yuǎn)程對(duì)象實(shí)現(xiàn)創(chuàng)建根和干

要?jiǎng)?chuàng)建存根程序和主架文件,應(yīng)以包含遠(yuǎn)程對(duì)象實(shí)現(xiàn)的已編譯類包全名運(yùn)行rmic編譯器。存根(Stub)是遠(yuǎn)程對(duì)象在客戶端的代理,他將RMI調(diào)用傳遞給服務(wù)器端的主架(Skeleton),后者負(fù)責(zé)將該調(diào)用傳遞給實(shí)際的遠(yuǎn)程方法:

運(yùn)行rmic,RMI目錄下就會(huì)多出2個(gè)新類:

ATM_StatusShow_Impl_Stub.class

ATM_StatusShow_Impl_Skel.class

他們分別對(duì)應(yīng)的是存根(stub)和主架(skeleton)。

4 結(jié) 論

本系統(tǒng)在中國銀行天津分行的支持下已投入使用,經(jīng)過多次測(cè)試和實(shí)際運(yùn)行,用戶對(duì)于本系統(tǒng)的評(píng)價(jià)比較滿意。在運(yùn)行速度和運(yùn)行穩(wěn)定性上都能達(dá)到要求。對(duì)于用戶的日常工作負(fù)擔(dān)起到了較大減輕的作用,提高了工作效率,簡化了溝通手續(xù),豐富了查詢能力,使統(tǒng)計(jì)結(jié)果更加實(shí)時(shí)、靈活和準(zhǔn)確。從技術(shù)角度上看,本系統(tǒng)采用RMI技術(shù)非常好地解決了分布式應(yīng)用的問題。



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉