基于J2EE的校園一卡通系統(tǒng)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)
文章出處:http://m.luckydriving.com 作者: 人氣: 發(fā)表時(shí)間:2011年09月08日
J2EE是SUN公司為開(kāi)發(fā)企業(yè)級(jí)應(yīng)用程序提供的強(qiáng)大的平臺(tái),是用來(lái)簡(jiǎn)化企業(yè)解決方案的開(kāi)發(fā)、部署和管理相關(guān)的復(fù)雜問(wèn)題的體系結(jié)構(gòu)。在這個(gè)體系結(jié)構(gòu)中,應(yīng)用開(kāi)發(fā)者的注意力集中在封裝商業(yè)邏輯和商業(yè)規(guī)則上,而一切與基礎(chǔ)結(jié)構(gòu)服務(wù)相關(guān)的問(wèn)題及底層分配問(wèn)題都由應(yīng)用程序容器或服務(wù)器來(lái)處理。作為J2EE一部分的企業(yè)Java組件(Enterprise Java Bean,EJB)是一種服務(wù)器端組件體系結(jié)構(gòu),它簡(jiǎn)化了用Java開(kāi)發(fā)企業(yè)級(jí)的分布式組件應(yīng)用程序的過(guò)程。EJB被設(shè)計(jì)為支持應(yīng)用程序可移植性和可重用性,這些特性適用于任何廠商的企業(yè)中間件服務(wù)。
Weblogic是J2EE的純Java實(shí)現(xiàn),長(zhǎng)期以來(lái)被認(rèn)為是市場(chǎng)最好的J2EE工具之一。Weblogic的高性能、可靠性、跨平臺(tái)能力、多功能性、對(duì)J2EE標(biāo)準(zhǔn)的支持以及Jbuilder對(duì)Weblogic良好的支持,使得Weblogic與Jbuilder的組合成為J2EE應(yīng)用開(kāi)發(fā)的最佳選擇。
校園一卡通的主要應(yīng)用包括2大方面:①校園消費(fèi):食堂消費(fèi)、機(jī)房上機(jī)、超市消費(fèi)等;②身份認(rèn)證:門(mén)禁、考勤系統(tǒng)、學(xué)籍管理、醫(yī)療、圖書(shū)館等。在學(xué)校的管理中,如果能開(kāi)發(fā)一個(gè)系統(tǒng)使得教師和學(xué)生能夠僅僅憑一張CPU卡就能完成以上日常事務(wù),這將大大方便師生員工以及管理者的管理。
1 一卡通系統(tǒng)的開(kāi)發(fā)
一卡通系統(tǒng)采用EJB有以下好處:EJB服務(wù)器提供了諸如事務(wù)和安全之類中間件服務(wù),應(yīng)用開(kāi)發(fā)人員只需關(guān)注于業(yè)務(wù)邏輯的實(shí)現(xiàn)而不是底層的實(shí)現(xiàn)機(jī)制;可擴(kuò)展性:EJB可以根據(jù)您應(yīng)用的增長(zhǎng)而擴(kuò)展,EJB服務(wù)器往往還提供了負(fù)載均衡并考慮到記錄數(shù)據(jù)的突發(fā)性、時(shí)間集中性以及對(duì)系統(tǒng)要求的穩(wěn)定性和安全性,利用CMB(容器管理Bean)來(lái)完成這項(xiàng)重要的任務(wù)是一個(gè)較好的選擇。
1.1 EJB的基本思想
EJB的實(shí)現(xiàn)是基于RMI—IIOP,其基本思想?yún)⒖磮D1,具體如下:①客戶端調(diào)用本地stub;②stub將參數(shù)整理成適合網(wǎng)絡(luò)傳輸形式;③stub通過(guò)網(wǎng)絡(luò)與Skeleton連接;④Skeleton將參數(shù)整理成適合Java的形式;⑤Skeleton調(diào)用EJB對(duì)象;⑥EJB對(duì)象完成所需的中間件服務(wù);⑦企業(yè)Bean完成工作后以上步驟將在返回Home途中重復(fù)執(zhí)行。
圖1 EJB基本思想
1.2 EJB的應(yīng)用
EJB 2.0規(guī)范里,Bean分為3類,分別是EntityBean(實(shí)體Bean)、Session Bean(會(huì)話Bean)和Mes—sageDrive Bean(消息驅(qū)動(dòng)Bean)。
根據(jù)EJB實(shí)例是否保存客戶端的狀態(tài),會(huì)話Bean還可分為有狀態(tài)會(huì)話Bean和無(wú)狀態(tài)會(huì)話Bean。實(shí)體Bean可分為BMP(Bean管理持久Bean)和CMP(容器管理持久Bean),兩者的區(qū)別在于數(shù)據(jù)存儲(chǔ)的實(shí)現(xiàn)方式。前者由Bean開(kāi)發(fā)人員指定,后者則由容器自動(dòng)實(shí)現(xiàn)。
在本系統(tǒng)中,EJB模塊由1個(gè)會(huì)話Bean和2個(gè)實(shí)體Bean組成,分別為無(wú)狀態(tài)會(huì)話bean:Record—Ses,2個(gè)容器管理Bean:Schedule和CheckRecord。采用這樣的設(shè)計(jì)模式有以下好處:使用1個(gè)會(huì)話Bean作為前端可以隱藏實(shí)體Bean提供的功能,客戶端不知道您在使用實(shí)體Bean,以后可以更換為其他技術(shù),對(duì)客戶端影響最??;與使用實(shí)體Bean相比,使用會(huì)話Bean的成本較小。本文以考勤終端子系統(tǒng)為例,闡述基于J2EE應(yīng)用系統(tǒng)的方法。考勤終端子系統(tǒng)部署圖見(jiàn)圖2。
圖2 考勤終端子系統(tǒng)部署圖
1.3 數(shù)據(jù)庫(kù)設(shè)計(jì)
定義考勤項(xiàng)目時(shí),同一時(shí)間段,如有同一個(gè)人在不同地點(diǎn)需要考勤的情況,則在考勤記錄表(見(jiàn)表1)中設(shè)置其考勤狀態(tài)為沖突(StatusID=4);考勤項(xiàng)目表(見(jiàn)表2)要定義一些時(shí)間字段以確定師生在不同時(shí)間打卡時(shí)的狀態(tài)(遲到、早退等);師生每一次打卡僅僅在其需要考勤的時(shí)間段才有效,否則不予記錄。
表1 考勤記錄表
表2 考勤項(xiàng)目定義表
1.4 EJB開(kāi)發(fā)
1.4.1 開(kāi)發(fā)的準(zhǔn)備工作 按照Borland的白皮書(shū)[ 《E]B Development Using Borland JBuilder 8and Oracle9i Application Server)進(jìn)行Jbuilder和Weblogic的配置。新建項(xiàng)目指定應(yīng)用服務(wù)器為Weblogic 7.0添加EJB模塊。引入數(shù)據(jù)庫(kù)模式,其中數(shù)據(jù)源名設(shè)為RecordDataSource,分別為考勤記錄表和考勤項(xiàng)目定義表。創(chuàng)建容器管理實(shí)體Bean,分別為Check—Record和Schedule,再添加一個(gè)無(wú)狀態(tài)會(huì)話Bean:RecordSes。在Weblogic創(chuàng)建數(shù)據(jù)源條目,包括一個(gè)數(shù)據(jù)連接池和一個(gè)事務(wù)數(shù)據(jù)源。數(shù)據(jù)源名為RecordData—Source。
1.4.2 實(shí)體Bean的關(guān)系對(duì)于每個(gè)教師的每一個(gè)考勤項(xiàng)目,需要2次打卡,另外還有教師多次打卡的情況,因此,考勤項(xiàng)目定義表與考勤記錄表是1對(duì)多的關(guān)系,相應(yīng)的,這樣的關(guān)系也映射到了兩個(gè)實(shí)體Bean上。右鍵點(diǎn)擊Schedule,創(chuàng)建一個(gè)關(guān)系,只需將鼠標(biāo)移動(dòng)到CheckRecord上就可以建立好。點(diǎn)擊新建的關(guān)系,然后編輯數(shù)據(jù)庫(kù)關(guān)系,將一個(gè)表中的SchedulelD和Staff1D拖到另一表中就定義好了數(shù)據(jù)庫(kù)的關(guān)系。
1.4.3 處理自動(dòng)增長(zhǎng)字段ScheduleRecord的主鍵是自動(dòng)增加的,必須要在部署描述里注明,以使得容器正確處理數(shù)據(jù)得持久化。這可以在開(kāi)發(fā)工具Jbuilder里可視化地實(shí)現(xiàn)。在項(xiàng)目控制面板Projectpane雙擊ScheduleRecord,然后點(diǎn)擊Weblogic 7.XGeneral標(biāo)簽,找到Automatic key generation,輸入以下信息:Generator type:SQL廣SERVER,Generatorname:SchedulelD,Key cache size:1。
1.4.4 主要方法 客戶端需要調(diào)用會(huì)話Bean的addRecord方法來(lái)實(shí)現(xiàn)添加記錄的功能。會(huì)話Bean里的addRecord方法要做以下工作:查找合適的考勤項(xiàng)目,創(chuàng)建考勤記錄,根據(jù)打卡時(shí)間設(shè)定持卡人的狀態(tài)。因此,實(shí)體Bean Schedule需要一個(gè)查找合適的考勤項(xiàng)目的定位器方法和一個(gè)創(chuàng)建(Create)方法。在Jbuilder里添加方法,然后在查詢(Query)窗口寫(xiě)上Ejb_Ql語(yǔ)言即可。
1.5 客戶端
JBuilder根據(jù)所編寫(xiě)的Bean提供一個(gè)向?qū)?,幫助客戶端?lái)測(cè)試編寫(xiě)好的Bean。作為一個(gè)包裝類,只需要將這個(gè)客戶端測(cè)試類進(jìn)行一些符合自己要求的改動(dòng)就可以直接使用。一般需要以下步驟:實(shí)例化這個(gè)類,調(diào)用類的Create方法,調(diào)用類的方法,這個(gè)方法實(shí)現(xiàn)的是在會(huì)話Bean里編寫(xiě)的方法,它們具有相同的名稱。
2 一卡通平臺(tái)和其他平臺(tái)的集成
2.1 基于J2EE的系統(tǒng)平臺(tái)的體系架構(gòu)
校園一卡通系統(tǒng)平臺(tái)體系架構(gòu)見(jiàn)圖3。
圖3 校園一卡通系統(tǒng)平臺(tái)的體系架構(gòu)
系統(tǒng)平臺(tái)采用J2EE標(biāo)準(zhǔn),基于J2EE標(biāo)準(zhǔn)開(kāi)發(fā)的應(yīng)用可以跨平臺(tái)移植,并提供了企業(yè)計(jì)算中需要的各種服務(wù);J2EE中多數(shù)標(biāo)準(zhǔn)定義了接口,例如JNDI,JDBC等,因此可以和許多廠商的產(chǎn)品配合,容易得到廣泛支持;J2EE樹(shù)立了一個(gè)廣泛而通用的標(biāo)準(zhǔn),大大簡(jiǎn)化了應(yīng)用開(kāi)發(fā)和部署過(guò)程。操作系統(tǒng)可以使用基于MS Windows或者UNIX、LUNIX等操作系統(tǒng)。
在系統(tǒng)平臺(tái)層之上是系統(tǒng)的數(shù)據(jù)層,數(shù)據(jù)庫(kù)可以使用XML。XML具有良好的可擴(kuò)展性,語(yǔ)言簡(jiǎn)單有效,可自行定義標(biāo)記;內(nèi)容與形式的分離,主要刻畫(huà)數(shù)據(jù)內(nèi)容,不考慮顯示效果;有嚴(yán)格的語(yǔ)法要求,便于分析統(tǒng)一和與數(shù)據(jù)庫(kù)信息轉(zhuǎn)換,便于傳輸,為純文本形式,可通過(guò)Http協(xié)議直接傳輸,可跨越防火墻等。系統(tǒng)還可以采用MS SQL Server、DB2、MySql等其他數(shù)據(jù)庫(kù)。
在系統(tǒng)平臺(tái)層和數(shù)據(jù)層的支持下,系統(tǒng)通過(guò)服務(wù)層對(duì)整個(gè)平臺(tái)提供服務(wù),提供應(yīng)用的支持和標(biāo)準(zhǔn)化的應(yīng)用接口。用戶認(rèn)證中心就建立在服務(wù)層,給每一個(gè)用戶一個(gè)建立用戶標(biāo)識(shí),并負(fù)責(zé)對(duì)每一個(gè)登錄客戶進(jìn)行系統(tǒng)認(rèn)證。
在服務(wù)層之上系統(tǒng)構(gòu)架了應(yīng)用層。應(yīng)用層包括校園內(nèi)的其他各種綜合應(yīng)用系統(tǒng),如指揮自動(dòng)化網(wǎng)、政治工作宣傳網(wǎng)、財(cái)務(wù)網(wǎng)等。由于系統(tǒng)提供標(biāo)準(zhǔn)化接口,因此,單位內(nèi)部已有的應(yīng)用系統(tǒng)和以后開(kāi)發(fā)的應(yīng)用只要使用標(biāo)準(zhǔn)化接口,就可以方便、無(wú)縫地構(gòu)架在系統(tǒng)平臺(tái)應(yīng)用中。
整個(gè)多層次結(jié)構(gòu)組成了的系統(tǒng)的整體,通過(guò)多層次的結(jié)構(gòu)應(yīng)用,系統(tǒng)的擴(kuò)展性和靈活性都得以保證,并且具有更廣闊的適用性。
2.2 系統(tǒng)間互操作的要領(lǐng)
在數(shù)字化校園中,數(shù)據(jù)層面所需的信息集中存儲(chǔ),并給各應(yīng)用子系統(tǒng)共享,有效防止了信息的冗余和不一致,保證數(shù)據(jù)的準(zhǔn)確性和可靠性;可以方便地實(shí)現(xiàn)核心數(shù)據(jù)的集中管理與備份,提高系統(tǒng)的安全性,減少設(shè)備的投資和管理的人力成本。數(shù)據(jù)中心在數(shù)據(jù)級(jí)對(duì)“一卡通”和其他系統(tǒng)的數(shù)據(jù)進(jìn)行無(wú)縫集成,便于信息的共享、交流和各項(xiàng)業(yè)務(wù)的協(xié)作。
一卡通系統(tǒng)應(yīng)該充分使用統(tǒng)一共享數(shù)據(jù)平臺(tái)提供的公共數(shù)據(jù)編碼、身份信息等數(shù)據(jù),而不應(yīng)該單獨(dú)維護(hù)一套獨(dú)立、非標(biāo)準(zhǔn)的信息。同時(shí),一卡通系統(tǒng)擁有自己的業(yè)務(wù)數(shù)據(jù)庫(kù),將其他應(yīng)用系統(tǒng)需要的信息納入共享數(shù)據(jù)庫(kù)的統(tǒng)一設(shè)計(jì)中,實(shí)現(xiàn)校園一卡通系統(tǒng)數(shù)據(jù)對(duì)整個(gè)數(shù)字化校園的共享。通過(guò)數(shù)字化校園應(yīng)用建設(shè),形成一套符合高校自身實(shí)際的管理信息化標(biāo)準(zhǔn),也是數(shù)字化校園建設(shè)中的一項(xiàng)重要內(nèi)容。筆者結(jié)合大量案例,根據(jù)學(xué)校信息化現(xiàn)狀提出信息代碼編碼標(biāo)準(zhǔn)、軟硬件平臺(tái)標(biāo)準(zhǔn)、應(yīng)用系統(tǒng)規(guī)范、業(yè)務(wù)流程規(guī)范和數(shù)據(jù)交換標(biāo)準(zhǔn)等,為今后的應(yīng)用系統(tǒng)的建設(shè)制定了規(guī)范。一卡通作為重要的應(yīng)用系統(tǒng)必須符合整體標(biāo)準(zhǔn)。
為了集成,一卡通使用的公共信息字典必須遵循學(xué)校的信息編碼規(guī)范,數(shù)據(jù)模式必須遵循數(shù)據(jù)庫(kù)第三范式,一卡通使用的用戶及其信息必須與業(yè)務(wù)系統(tǒng)提供的信息一致,可以相互關(guān)聯(lián),以保證一卡通的數(shù)據(jù)和學(xué)校的其他信息數(shù)據(jù)同時(shí)進(jìn)行查詢、分析、統(tǒng)計(jì)。針對(duì)于卡的門(mén)戶應(yīng)用,共享數(shù)據(jù)中心的數(shù)據(jù)既要能展示相關(guān)的信息,如校園卡選課后學(xué)生的選課課程、選課的繳費(fèi)等,又能統(tǒng)計(jì)相關(guān)的信息,如不同專業(yè)的學(xué)生費(fèi)用使用總計(jì)及平均消費(fèi)情況等,這些都需要充分的集成設(shè)計(jì)。
3 結(jié)語(yǔ)
一卡通系統(tǒng)是以非接觸卡為信息載體,適用于各式各樣消費(fèi)和管理的多功能網(wǎng)絡(luò)系統(tǒng),目前已實(shí)現(xiàn)就餐收費(fèi)管理、圖書(shū)借閱管理、醫(yī)療收費(fèi)管理、上機(jī)計(jì)時(shí)收費(fèi)管理、校內(nèi)消費(fèi)管理、早操出勤管理等,本文簡(jiǎn)要說(shuō)明了利用JBuilder和Weblogie快速開(kāi)發(fā)基于J2EE的應(yīng)用。由于采用了容器管理的持久性(Container-Managed Persistent,CMP),由容器負(fù)責(zé)將entity beans的更新同步(保存)到數(shù)據(jù)庫(kù),即由容器負(fù)責(zé)entity beans的持久性管理,開(kāi)發(fā)人員只需考慮業(yè)務(wù)邏輯,大大減輕了開(kāi)發(fā)人員的負(fù)擔(dān),而且還提供了良好的事務(wù)與安全保障;JBuilder是個(gè)功能強(qiáng)大的工具,熟練掌握這個(gè)開(kāi)發(fā)工具,可以大大提高J2EE應(yīng)用的開(kāi)發(fā)效率。(文/楊志和 上海電機(jī)學(xué)院電子信息學(xué)院)
參考文獻(xiàn):
[1] Girdley M.J2EE應(yīng)用與BEA Weblogic Server EM].邢國(guó)慶,譯.北京:電子工業(yè)出版社,2003.
[2] 楊芙清,梅宏,李克勤.軟件復(fù)用與軟件構(gòu)件技術(shù)EJ].電子學(xué)報(bào),1999,27(2):68—75.
[3] 趙芳,韋群.基于構(gòu)件的軟件工程研究I-J].裝備指揮技術(shù)學(xué)院學(xué)報(bào),2002,13(4):56-58、
[4]劉海巖,梁建龍.基于中間件的分布式系統(tǒng)開(kāi)發(fā)過(guò)程的研究[J].計(jì)算機(jī)應(yīng)用研究,2004(1):85—87.
[5]楊志和,李業(yè)榮.基于Web Services的企業(yè)電子商務(wù)應(yīng)用集成技術(shù)的研究[J].廣西科學(xué)院學(xué)報(bào),2006,22(3):161— 163.
[6]楊志和.RFID系統(tǒng)與第三方應(yīng)用的信息集成技術(shù)[J].華東理工大學(xué)學(xué)報(bào):自然科學(xué)版,2007,33(增刊):141— 144.
[7]楊志和.基于Web Services的教育資源共享平臺(tái)的設(shè)計(jì)與研究EJ].上海電機(jī)學(xué)院學(xué)報(bào),2007,10(1):49—52.
[8]楊志和,李業(yè)榮.基于中間件和RFID技術(shù)的第三方物流MIS的應(yīng)用研究I-J].計(jì)算機(jī)應(yīng)用研究,2006(增刊):592—593.