基于分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)的設(shè)計與實現(xiàn)_第1頁
基于分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)的設(shè)計與實現(xiàn)_第2頁
基于分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)的設(shè)計與實現(xiàn)_第3頁
基于分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)的設(shè)計與實現(xiàn)_第4頁
基于分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

長江大學(xué)工程技術(shù)學(xué)院畢業(yè)設(shè)計(論文)題目名稱基于分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)的設(shè)計與實現(xiàn)系部信息系專業(yè)班級計算機科學(xué)與技術(shù)61002班學(xué)生姓名指導(dǎo)教師講師輔導(dǎo)教師時間2013年9月至2014年6月基于分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)的設(shè)計與實現(xiàn)[摘要]近幾年來,人們對農(nóng)業(yè)滴灌系統(tǒng)的要求越來越高,這導(dǎo)致了傳統(tǒng)的農(nóng)業(yè)滴灌系統(tǒng)的業(yè)務(wù)持續(xù)膨脹和功能不斷增加,原有的系統(tǒng)架構(gòu)無法滿足水平和垂直擴展,同時也難以達到性能要求。因此,需要設(shè)計出一種新型的分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)來解決這些問題。本系統(tǒng)的研究目標(biāo)就是要提出一個在J2EE技術(shù)下構(gòu)建基于分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)的設(shè)計模型和解決方案。J2EE技術(shù)提供了開發(fā)分布式應(yīng)用的底層服務(wù)支持。本文給出了一個四層的設(shè)計模型,它包括客戶層、Web層、EJB層和數(shù)據(jù)層。以面向業(yè)務(wù)應(yīng)用系統(tǒng)的負(fù)責(zé)需求和性能為對象設(shè)計并且實現(xiàn)一套通用分布式服務(wù)框架,致力于提供高性能和透明化的RPC(RemoteProcedureCall)、基于Mysql的RDBMS(RelationalDatabaseManagementSystem)及Memcached的分布式處理方案。由于開發(fā)多層結(jié)構(gòu)的分布式應(yīng)用系統(tǒng)的過程中,開發(fā)人員勢必會面臨如何解決各層之間的耦合現(xiàn)象、提高整個系統(tǒng)的靈活性和運行效率等關(guān)鍵性的問題。為此,在設(shè)計模型中又引入了設(shè)計模式的概念。這能使新的需求功能在高版本中能快速得到響應(yīng),同時降低其對框架本身穩(wěn)定性的影響。在設(shè)計方面,遵循API(ApplicationProgrammingInterface)和擴展接口職責(zé)單一、友好的CoC(ConventionoverConfiguration)約定和增量式擴展等原則。在測試方面,結(jié)合版本約定進行迭代開發(fā)和功能回歸測試,同時對其性能進行壓力測試。最后將該框架運用于農(nóng)業(yè)滴灌系統(tǒng)開發(fā)和運營。[關(guān)鍵詞]分布式;農(nóng)業(yè)滴灌;EJB;Memcached;Mysql;設(shè)計模式TheDesignandImplementofAgriculturalIrrigationSystemBasedonDistributedStudent:DengJie,DepartmentofInformationSupervisor:WangJuehui,DepartmentofInformation[Abstract]Inrecentyears,theagriculturalirrigationsystemoftheincreasinglyhighdemand,whichledtotheagriculturalirrigationsystem,thetraditionalbusinesscontinuestoexpand,andfunctionsareadded,thesystemcannotmeetthehorizontalandverticalextension,butalsodifficulttoachievetheperformancerequirements.Therefore,weneedtodesigntheagriculturalirrigationsystem,anoveldistributedplatformtosolvetheproblem.ThegoalofthissystemistoputforwardadesignmodelofagriculturalirrigationsystembasedondistributedplatformsandsolutionsinJ2EEtechnology.ProvidestheunderlyingservicedevelopmentofdistributedapplicationsinsupportofJ2EEtechnology.Thispapergivesafourlayerdesignmodel,whichincludesclientlayer,Weblayer,EJBlayeranddatalayer.Todemandandisresponsiblefortheperformanceorientedbusinessapplicationsystemastheobjecttodesignandimplementageneralframeworkfordistributedservices,iscommittedtoprovidehighperformanceandtransparentRPC(RemoteProcedureCall),MysqlbasedRDBMS(RelationalDatabaseManagementSystem)distributedprocessingschemeandMemcached.Becausetheprocessofdistributedapplicationsystemdevelopmentofmulti-layerstructure,developerswillfacehowtosolvethecouplingphenomenonbetweenthelayers,improvingtheflexibilityandtheefficiencyofthewholesystem,thecriticalissueof.Therefore,inthedesignmodelandintroducestheconceptofdesignpatterns.Thiscanmakethefunctionofthenewdemandforrapidresponsecanbeobtainedinthehighversion,whilereducingitseffectonstabilityoftheframeworkitself.Inthedesign,accordingtotheAPI(ApplicationProgrammingInterface)andtheextendedinterfacesingleresponsibility,friendlyCoC(ConventionoverConfiguration)agreementandtheincrementalexpansionprinciple.Inthetest,withtheversionagreedtoiterativedevelopmentandfunctionalregressiontesting,andstresstestsonitsperformance.Theframeworkusedinagriculturalirrigationsystemsdevelopmentandoperations.[Keywords]Distributed;AgriculturalIrrigation;EJB;Memcached;Mysql;DesignPattern目錄任務(wù)書……………………Ⅰ開題報告…………………Ⅱ指導(dǎo)教師審查意見………………………Ⅲ評閱教師評語……………Ⅳ答辯會議記錄……………Ⅴ中文摘要…………………Ⅵ外文摘要…………………Ⅶ1前言……………………12選題背景……………12.1分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)的概念…………12.2農(nóng)業(yè)滴灌系統(tǒng)平臺搭建………12.3現(xiàn)有農(nóng)業(yè)滴灌系統(tǒng)平臺問題分析……………32.4課題的提出……………………52.5論文主要功能內(nèi)容與組織結(jié)構(gòu)………………63方案論證……………83.1分布式數(shù)據(jù)服務(wù)………………83.2分布式數(shù)據(jù)存儲………………94過程論述……………134.1系統(tǒng)總體設(shè)計…………………134.2系統(tǒng)詳細(xì)設(shè)計與實現(xiàn)…………185結(jié)果分析………………355.1測試環(huán)境………………………355.2測試程序與測試界面設(shè)計……………………355.3測試分析項目結(jié)果……………426總結(jié)……………………43參考文獻…………………44致謝………………………45附錄………………………46基于分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)的設(shè)計與實現(xiàn)1前言基于分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)是網(wǎng)絡(luò)化、信息化、智能化等有機結(jié)合的新型滴灌平臺。分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)搭建可以提升傳統(tǒng)滴灌的效率,拓展其功能。但是,一個區(qū)域往往擁有多塊農(nóng)田,而且各個區(qū)域相對來說比較分散,少則幾公里,多則幾十公里?,F(xiàn)有的農(nóng)業(yè)滴灌系統(tǒng),是在區(qū)域相對集中,網(wǎng)絡(luò)建設(shè)已經(jīng)相當(dāng)完善的基礎(chǔ)和前提下進行設(shè)計開發(fā)的,這種集中式的農(nóng)業(yè)滴灌系統(tǒng)容易產(chǎn)生信息孤島[1],在新的的環(huán)境并不適用。因此,構(gòu)建新的分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)勢在必行。本文研究了基于分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)解決方案。在對分布式數(shù)據(jù)服務(wù)、分布式數(shù)據(jù)存儲分析的基礎(chǔ)上,提出了分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)總體架構(gòu);并針對區(qū)別于集中式平臺設(shè)計遇到的一些問題,進行了分析并提出了解決方案;完成了分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)中接口的設(shè)計,業(yè)務(wù)邏輯的實現(xiàn);構(gòu)建了分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)客戶端測試程序,并進行了系統(tǒng)測試與結(jié)果分析。2選題背景2.1分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)的概念分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)是近幾年在國內(nèi)出現(xiàn)的一個名詞,它是一個網(wǎng)絡(luò)化、信息化、智能化、高度應(yīng)用化等有機結(jié)合的新型滴灌,它是以網(wǎng)絡(luò)為基礎(chǔ),利用信息化手段和工具,實現(xiàn)從環(huán)境、資源的全部分布式化[2]。同時,它是指對現(xiàn)有獨立運行的農(nóng)業(yè)滴灌系統(tǒng)的整合,統(tǒng)一技術(shù)與規(guī)范,達到基礎(chǔ)信息的互相兼容,資源合理配置,數(shù)據(jù)共享目標(biāo)的手段。2.2農(nóng)業(yè)滴灌系統(tǒng)平臺搭建為了達到上述系統(tǒng)整合、數(shù)據(jù)共享等目標(biāo),需要建立一個統(tǒng)一的管理平臺,這個平臺就稱之為分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)。分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)功能包括:表1滴灌系統(tǒng)平臺的功能名稱功能功能說明分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)數(shù)據(jù)共享按照信息化標(biāo)準(zhǔn)存儲數(shù)據(jù)數(shù)據(jù)傳輸與交換平臺數(shù)據(jù)訪問,數(shù)據(jù)傳輸與交換統(tǒng)一門戶統(tǒng)一入口,單點登錄管理與控制中心核心平臺管理與維護目前,農(nóng)業(yè)滴灌系統(tǒng)一般采用三層結(jié)構(gòu)[3]體系來設(shè)計,依次分別是:數(shù)據(jù)存儲層、業(yè)務(wù)邏輯層和表示層。數(shù)據(jù)存儲層保存著系統(tǒng)的各種數(shù)據(jù)信息;業(yè)務(wù)邏輯層控制系統(tǒng)的核心業(yè)務(wù),并提供數(shù)據(jù)訪問和數(shù)據(jù)交換的接口;表示層提供人機交互的界面及系統(tǒng)專有的業(yè)務(wù)邏輯。其中,數(shù)據(jù)存儲層和業(yè)務(wù)邏輯層合在一起,統(tǒng)稱農(nóng)業(yè)滴灌系統(tǒng)。分布式農(nóng)業(yè)滴灌系統(tǒng)結(jié)構(gòu)圖如下:氣象信息泵房能效地圖繪制滴灌控制土壤墑情氣象信息泵房能效地圖繪制滴灌控制土壤墑情表表示層業(yè)務(wù)邏輯層業(yè)務(wù)邏輯層分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)數(shù)據(jù)存儲層數(shù)據(jù)存儲層圖1滴灌系統(tǒng)系統(tǒng)結(jié)構(gòu)(1)數(shù)據(jù)存儲層目前,分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)的數(shù)據(jù)存儲層在物理上包括一臺或多臺服務(wù)器,運行大型數(shù)據(jù)庫系統(tǒng)或者其他的數(shù)據(jù)存儲系統(tǒng)。分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)需要進行共享的數(shù)據(jù),全部在平臺的數(shù)據(jù)存儲層保存。(2)業(yè)務(wù)邏輯層業(yè)務(wù)邏輯層是數(shù)據(jù)存儲層與各種控制系統(tǒng)之間的中間層。各種業(yè)務(wù)系統(tǒng)不能直接與數(shù)據(jù)存儲層發(fā)生聯(lián)系,都是通過業(yè)務(wù)邏輯層的接口與數(shù)據(jù)存儲層進行數(shù)據(jù)訪問和數(shù)據(jù)交換。目前的分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)的業(yè)務(wù)邏輯層在物理上是一臺或若干臺應(yīng)用服務(wù)器的集群[4],經(jīng)常使用的應(yīng)用服務(wù)器中間件有:IBM公司的Websphere、BEA公司的Weblogic、開源項目的JBoss、微軟公司的.Net。2.3現(xiàn)有農(nóng)業(yè)滴灌系統(tǒng)平臺問題分析現(xiàn)有的農(nóng)業(yè)滴灌系統(tǒng),是在區(qū)域相對集中,區(qū)域網(wǎng)絡(luò)建設(shè)已經(jīng)相當(dāng)完善的基礎(chǔ)和前提下進行設(shè)計開發(fā)的。在這里我們把現(xiàn)有的農(nóng)業(yè)滴灌系統(tǒng)稱之為:集中式的農(nóng)業(yè)滴灌系統(tǒng)。但是近年來隨著農(nóng)田的不斷合并擴充,一個區(qū)域往往擁有多塊農(nóng)田,而且各個區(qū)域相對來說比較分散,少則幾公里,多則幾十公里。集中式的農(nóng)業(yè)滴灌系統(tǒng)在這種環(huán)境下進行使用,就會有很大的局限性,甚至在應(yīng)用的過程中會產(chǎn)生很大的問題。這并不奇怪,因為環(huán)境已經(jīng)改變了,原有的平臺并不是為這個新的環(huán)境量身定做的,當(dāng)然就不能很好的適應(yīng)新的應(yīng)用環(huán)境了。在這個新的分布式環(huán)境中,集中式的農(nóng)業(yè)滴灌系統(tǒng)主要采用兩種部署方案:(1)各個區(qū)域平臺獨立使用這是一種平行部署集中式農(nóng)業(yè)滴灌系統(tǒng)的方案,各個區(qū)域間的平臺獨立部署,獨立使用。各個區(qū)域的平臺沒有任何的耦合性和關(guān)聯(lián)性。獨立使用的滴灌系統(tǒng)平臺的結(jié)構(gòu)圖如圖所示:控制系統(tǒng)控制系統(tǒng)控制系統(tǒng)數(shù)據(jù)存儲層數(shù)據(jù)存儲層數(shù)據(jù)存儲層數(shù)據(jù)存儲層業(yè)務(wù)邏輯層業(yè)務(wù)邏輯層業(yè)務(wù)邏輯層業(yè)務(wù)邏輯層區(qū)域B表示層表示層區(qū)域B表示層表示層控制系統(tǒng)區(qū)域A控制系統(tǒng)區(qū)域A數(shù)據(jù)存儲層區(qū)域C表示層數(shù)據(jù)存儲層區(qū)域C表示層業(yè)務(wù)邏輯層業(yè)務(wù)邏輯層圖2獨立使用的滴灌系統(tǒng)平臺結(jié)構(gòu)圖在這種方案中,各個區(qū)域的數(shù)據(jù)和資源是獨立的。由于平臺的獨立性,不同平臺的數(shù)據(jù)無法交換共享,會產(chǎn)生更大范圍的數(shù)據(jù)信息孤島。獨立的各個區(qū)域部署滴灌系統(tǒng)的方案,值可以作為一時的權(quán)宜之計,在網(wǎng)絡(luò)條件得到改善后,需要馬上采用新的方案來替代。(2)農(nóng)業(yè)滴灌系統(tǒng)的集中部署在系統(tǒng)邏輯結(jié)構(gòu)上,這種方案和一個區(qū)域的集中式農(nóng)業(yè)滴灌系統(tǒng)的部署沒什么兩樣。各個區(qū)域的廣域網(wǎng)取代了局域網(wǎng)的連接。集中部署的滴灌系統(tǒng)平臺結(jié)構(gòu)圖如下: 控制系統(tǒng)控制系統(tǒng)數(shù)據(jù)存儲層數(shù)據(jù)存儲層業(yè)務(wù)邏輯層業(yè)務(wù)邏輯層表示層區(qū)域A表示層區(qū)域A表示層控制系統(tǒng)廣域網(wǎng)表示層控制系統(tǒng)廣域網(wǎng)區(qū)域B表示層控制區(qū)域B表示層控制系統(tǒng)區(qū)域區(qū)域C圖3集中部署的滴灌系統(tǒng)平臺從圖中可以看出,在這種方案中,區(qū)域B和區(qū)域C中的數(shù)據(jù)全部流向區(qū)域A,這給區(qū)域A造成了很大的數(shù)據(jù)壓力,若接著增加區(qū)域,區(qū)域A的數(shù)據(jù)服務(wù)和存儲服務(wù)很快就會癱瘓,整個系統(tǒng)的瓶頸也很快到來。2.4課題的提出根據(jù)上面分析,在多區(qū)域存在的情況下,需要設(shè)計出一種新型的分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)來解決上述的種種問題。因此,本論文旨在設(shè)計一個以分布式平臺為基礎(chǔ)的新型的農(nóng)業(yè)滴灌系統(tǒng)。這個平臺既平行分布于各個區(qū)域,平臺之間又有一定聯(lián)系,各個區(qū)域內(nèi)大量的數(shù)據(jù)的訪問和交換通過網(wǎng)絡(luò)來進行。由于這個新型平臺的分布式的特點,所以稱之為分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)。對比于集中式的農(nóng)業(yè)滴灌系統(tǒng),設(shè)計和實現(xiàn)分布式平臺的農(nóng)業(yè)滴灌系統(tǒng),需要解決很多難題,主要有下面幾點:(1)數(shù)據(jù)透明性設(shè)計系統(tǒng)中數(shù)據(jù)存儲層的數(shù)量不再是一個,其數(shù)量應(yīng)等同于區(qū)域的數(shù)量。在設(shè)計期無法預(yù)知區(qū)域的實際數(shù)量,因此數(shù)據(jù)存儲層的數(shù)量也就不能確定,這給業(yè)務(wù)邏輯層的設(shè)計增加了很大的復(fù)雜度,應(yīng)用軟件的設(shè)計和編制上也就產(chǎn)生了很大的不確定性。數(shù)據(jù)存儲層需要提供給業(yè)務(wù)邏輯層一定程度的透明性,業(yè)務(wù)邏輯層需要提供給表示層完全的透明性才能解決這一問題。因此如何解決好兩個層次的透明性,在新的分布式平臺設(shè)計者將是一個重點。(2)冗余數(shù)據(jù)的設(shè)計由于有多個數(shù)據(jù)存儲層,而且新平臺的設(shè)計目標(biāo)之一是減少廣域網(wǎng)的數(shù)據(jù)交換量,這就需要設(shè)計一定量的冗余數(shù)據(jù)。但如果冗余數(shù)據(jù)過于泛濫,會導(dǎo)致上面分析的方案一中的情況發(fā)生,大量產(chǎn)生數(shù)據(jù)二義性的現(xiàn)象;如果冗余數(shù)據(jù)設(shè)計的過少,必然還會產(chǎn)生大量數(shù)據(jù)通過廣域網(wǎng)進行訪問交換的情況。因此,如何合理的設(shè)計冗余數(shù)據(jù)是分布式平臺設(shè)計中的另一個重點。綜上所述,分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)的設(shè)計和實現(xiàn)是一個巨大的挑戰(zhàn),也是一種全新的嘗試。本論文將以用戶數(shù)據(jù)分析要點來解決分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)設(shè)計中面臨的上述問題,論文工作也將為類似分布式系統(tǒng)的設(shè)計和實現(xiàn)提供借鑒。2.5論文主要功能內(nèi)容與組織結(jié)構(gòu)2.5.1論文主要工作內(nèi)容論文工作基于分布式服務(wù)、分布式存儲,主要工作內(nèi)容包括:(1)研究了分布式服務(wù)技術(shù)與分布式存儲;(2)分析了分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)的透明性特點,完成了各種數(shù)據(jù)對象及各種應(yīng)用接口的設(shè)計實現(xiàn)工作;(3)構(gòu)建了農(nóng)業(yè)滴灌系統(tǒng)客戶端程序,并進行了系統(tǒng)測試與分析。2.5.2論文組織結(jié)構(gòu)第一章:闡述論文工作背景與研究意義,并進行相關(guān)文獻綜述。第二章:首先簡要介紹了農(nóng)業(yè)滴灌系統(tǒng)研究現(xiàn)狀,分析了現(xiàn)有農(nóng)業(yè)滴灌系統(tǒng)中存在的問題;進而提出了設(shè)計新的分布式平臺的農(nóng)業(yè)滴灌系統(tǒng),對現(xiàn)實難點進行了分析;最后給出了論文的主要工作內(nèi)容以及論文的章節(jié)安排。第三章:深入分析研究了相關(guān)的關(guān)鍵技術(shù),是整個論文的技術(shù)支撐。第四章:提出系統(tǒng)的總體設(shè)計方案。第五章:通過對用戶數(shù)據(jù)透明性分析,設(shè)計并實現(xiàn)了系統(tǒng)的數(shù)據(jù)接口。研究了分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)的數(shù)據(jù)分布特點,提出了數(shù)據(jù)遷移的規(guī)則和算法,并在分布式平臺中加以實現(xiàn)。第六章:在局域網(wǎng)與廣域網(wǎng)中對所設(shè)計實現(xiàn)的分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)進行了測試與分析。最后,對論文工作進行了全面總結(jié)與展望。整個論文的正文框架如圖4所示。第四章結(jié)果論述第五章結(jié)果分析第六章結(jié)論或總結(jié)第三章方案論證第二章選題背景第一章前言第四章結(jié)果論述第五章結(jié)果分析第六章結(jié)論或總結(jié)第三章方案論證第二章選題背景第一章前言圖4論文框架結(jié)構(gòu)整個論文的功能圖如圖5所示:分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)作物長勢泵房能效作物長勢泵房能效導(dǎo)入配置信息保存配置信息氣象顯示土壤墑情滴灌控制地圖繪制導(dǎo)入配置信息保存配置信息氣象顯示土壤墑情滴灌控制地圖繪制采集硬件信息采集硬件信息圖5論文功能結(jié)構(gòu)3方案論證3.1分布式數(shù)據(jù)服務(wù)技術(shù)是為客戶需求而服務(wù)的,分布式服務(wù)框架也同樣如此,它不是憑空誕生的也是因為有這樣的需求才會有分布式服務(wù)框架這樣的東西誕生;本論文的分布式數(shù)據(jù)服務(wù)面向三個方面:移動客戶端、桌面電腦和瀏覽器。服務(wù)采用EJB組件[5],EJB是EnterpriseJavaBean的簡稱。EJB是sun的服務(wù)器端組建模型,設(shè)計目標(biāo)與核心應(yīng)用是部署分布式應(yīng)用程序。憑借Java跨平臺的優(yōu)勢,用EJB技術(shù)部署的分布式系統(tǒng)可以不限于特定的平臺。EJB是J2EE的一部分,定義了一個用于開發(fā)基于組件的企業(yè)多重應(yīng)用程序的標(biāo)準(zhǔn)。在J2EE里,EJB稱為Java企業(yè)Bean,是Java的核心代碼,分別是會話Bean(SessionBean),實體Bean(EntityBean)和消息驅(qū)動Bean(MessageDrivenBean)。SessionBean用于實現(xiàn)業(yè)務(wù)邏輯,它可以是有狀態(tài)的,也可以是無狀態(tài)的。每當(dāng)客戶端請求時,容器就會選擇一個SessionBean來為客戶端服務(wù)。SessionBean可以直接訪問數(shù)據(jù)庫,但更多時候,它會通過EntityBean實現(xiàn)數(shù)據(jù)訪問。EntityBean是域模型對象,用于實現(xiàn)O/R映射,負(fù)責(zé)將數(shù)據(jù)庫中的表記錄映射為內(nèi)存中的Entity對象,事實上,創(chuàng)建一個EntityBean對象相當(dāng)于新建一條記錄,刪除一個EntityBean會同時從數(shù)據(jù)庫中刪除對應(yīng)記錄,修改一個EntityBean時,容器會自動將EntityBean的狀態(tài)和數(shù)據(jù)庫同步。MessageDrivenBean是EJB2.0中引入的新的企業(yè)Bean,它基于JMS消息,只能接收客戶端發(fā)送的JMS消息然后處理。MDB實際上是一個異步的無狀態(tài)SessionBean,客戶端調(diào)用MDB后無需等待,立刻返回,MDB將異步處理客戶請求。這適合于需要異步處理請求的場合,比如訂單處理,這樣就能避免客戶端長時間的等待一個方法調(diào)用直到返回結(jié)果。本系統(tǒng)中提供給移動客戶端、桌面電腦和瀏覽器的核心服務(wù)采用EJB組件,部分框架圖如下:EJBEJB服務(wù)JMSWEB服務(wù)JMSWEB服務(wù)GrizzlyGrizzly服務(wù)智能手機智能手機PC機PC機Web瀏覽器圖6EJB服務(wù)框架圖3.2分布式數(shù)據(jù)存儲本論文的存儲[7]采用分布式的方式,存儲類型在本系統(tǒng)中采用兩種類型:MySQL數(shù)據(jù)庫和Memcached。EJB服務(wù)EJB服務(wù) MemcachedMySQLMemcachedMySQL圖7存儲服務(wù)框架圖3.2.1MySQL數(shù)據(jù)庫MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),MySQL是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),在WEB應(yīng)用方面MySQL是最好的RDBMS[8-10](RelationalDatabaseManagementSystem:關(guān)系數(shù)據(jù)庫管理系統(tǒng))應(yīng)用軟件之一。MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性。MySQL所使用的SQL語言是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言。MySQL軟件采用了雙授權(quán)政策,它分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網(wǎng)站的開發(fā)都選擇MySQL作為網(wǎng)站數(shù)據(jù)庫。與其他的大型數(shù)據(jù)庫例如Oracle、DB2、SqlServer等相比,MySQL自有它的不足之處,但是這絲毫也沒用減少它受歡迎的程度。對于一般的個人使用者和中小型企業(yè)來說,MySQL提供的功能已經(jīng)綽綽有余,而且由于MySQL是開放源碼軟件,因此可以大大降低總體擁有成本。Linux作為操作系統(tǒng),Apache和Nginx作為Web服務(wù)器,MySQL作為數(shù)據(jù)庫,PHP/Perl/Python作為服務(wù)器端腳本解釋器。由于這四個軟件都是免費或開放源碼軟件(FLOSS),因此使用這種方式不用花一分錢(除開人工成本)就可以搭建起一個穩(wěn)定、免費的網(wǎng)站系統(tǒng),被業(yè)界稱為LAMP組合。3.2.2MySQL數(shù)據(jù)庫的特性(1)使用C和C++編寫,并使用了多種編譯器進行測試,保證源代碼的可移植性。(2)支持AIX、FreeBSD、HP-UX、Linux、MacOS、NovellNetware、OpenBSD、OS/2Wrap、Solaris、Windows等多種操作系統(tǒng)。(3)為多種編程語言提供了API。這些編程語言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。(4)支持多線程,充分利用CPU資源。(5)優(yōu)化的SQL查詢算法,有效地提高查詢速度。(6)既能夠作為一個單獨的應(yīng)用程序應(yīng)用在客戶端服務(wù)器網(wǎng)絡(luò)環(huán)境中,也能夠作為一個庫而嵌入到其他的軟件中。(7)提供多語言支持,常見的編碼如中文的GB2312、BIG5,日文的Shift_JIS等都可以用作數(shù)據(jù)表名和數(shù)據(jù)列名。(8)提供TCP/IP、ODBC和JDBC等多種數(shù)據(jù)庫連接途徑。(9)提供用于管理、查詢、優(yōu)化數(shù)據(jù)庫操作的管理工具。(10)支持大型數(shù)據(jù)庫??梢蕴幚頁碛猩锨f條記錄的大型數(shù)據(jù)庫。(11)支持多種存儲引擎。(12)MySQL是開源的,所以你不需要支付額外的費用。(13)MySQL使用標(biāo)準(zhǔn)的SQL數(shù)據(jù)語言形式。(14)MySQL是可以定制的,采用了GPL協(xié)議,你可以修改源碼來開發(fā)自己的MySQL系統(tǒng)。3.2.3MemcachedMemcached是一個高性能[11]的分布式內(nèi)存對象緩存系統(tǒng),用于動態(tài)Web應(yīng)用以減輕數(shù)據(jù)庫負(fù)載。它通過在內(nèi)存中緩存數(shù)據(jù)和對象來減少讀取數(shù)據(jù)庫次數(shù),從而提高動態(tài)、數(shù)據(jù)庫驅(qū)動網(wǎng)站的速度。Memcached基于一個存儲鍵/值對的hashmap。其守護進程(daemon)是用C寫的,但是客戶端可以用任何語言來編寫,并通過Memcached協(xié)議與守護進程通信。Memcached是一套分布式的快取系統(tǒng),當(dāng)初是DangaInteractive為了LiveJournal所發(fā)展的,但被許多軟件所使用。這是一套開放源碼軟件,以BSDlicense授權(quán)協(xié)議發(fā)布。Memcached缺乏認(rèn)證以及安全管理,這代表應(yīng)該將Memcached服務(wù)器放置在防火墻后。Memcached的API使用32位元的循環(huán)冗余校驗(CRC-32)計算鍵值后,將資料分散在不同的機器上。當(dāng)表格滿了以后,接下來新增的資料會以LRU機制替換掉。由于Memcached通常只是當(dāng)作快取系統(tǒng)使用,所以使用Memcached的應(yīng)用程式在寫回較慢的系統(tǒng)時(像后端的數(shù)據(jù)庫)需要額外的程式碼更新Memcached內(nèi)的資料。Memcached是以LiveJournal旗下DangaInteractive公司的BradFitzpatric為首開發(fā)的一款軟件。已成為mixi、hatena、Facebook、Vox、LiveJournal等眾多服務(wù)中提高Web應(yīng)用擴展性的重要因素。許多Web應(yīng)用都將數(shù)據(jù)保存到RDBMS中,應(yīng)用服務(wù)器從中讀取數(shù)據(jù)并在瀏覽器中顯示。但隨著數(shù)據(jù)量的增大、訪問的集中,就會出現(xiàn)RDBMS的負(fù)擔(dān)加重、數(shù)據(jù)庫響應(yīng)惡化、網(wǎng)站顯示延時等重大影響[12]。這時就該Memcached大顯身手了。Memcached是高性能你的分布式內(nèi)存緩存服務(wù)器。一般的使用目的是,通過緩存數(shù)據(jù)庫查詢結(jié)果,減少數(shù)據(jù)庫訪問次數(shù),以提高動態(tài)Web應(yīng)用的速度、提高可擴展性[13-16]。3.2.4Memcached特性(1)高性能:當(dāng)傳統(tǒng)數(shù)據(jù)庫面臨大規(guī)模數(shù)據(jù)訪問時,磁盤I/O往往成為性能瓶頸,從而導(dǎo)致過高的響應(yīng)延遲。分布式緩存將高速內(nèi)存作為數(shù)據(jù)對象的存儲介質(zhì),數(shù)據(jù)以key/value形式存儲,理想情況下可以獲得DRAM(DynamicRandomAccessMemory)級的讀寫性能。(2)動態(tài)擴展性:支持彈性擴展,通過動態(tài)增加或減少節(jié)點應(yīng)對變化的數(shù)據(jù)訪問負(fù)載,提供可預(yù)測的性能與擴展性;同時,最大限度地提供資源利用率。(3)高可用性:可用性包含數(shù)據(jù)可用性與服務(wù)可用性兩方面?;谌哂鄼C制實現(xiàn)高可用性,無單點失效(singlepointoffailure),支持故障的自動發(fā)現(xiàn),透明地實施故障切換,不會因服務(wù)器故障而導(dǎo)致緩存服務(wù)中斷或數(shù)據(jù)丟失。動態(tài)擴展時自動均衡數(shù)據(jù)分區(qū),同時保障緩存服務(wù)持續(xù)可用。(4)易用性:提供單一的數(shù)據(jù)與管理視圖,API接口簡單,且與拓?fù)浣Y(jié)構(gòu)無關(guān);動態(tài)擴展或失效恢復(fù)時無需人工配制,自動選取備份節(jié)點,多數(shù)緩存系統(tǒng)提供了圖形化的管理控制臺,便于統(tǒng)一維護。3.2.5Memcached應(yīng)用場景(1)頁面緩存:用來緩存web頁面的內(nèi)容片段,包括HTML、CSS和圖片等,多應(yīng)用于社交網(wǎng)站等。(2)應(yīng)用對象緩存:緩存系統(tǒng)作為ORM框架的二級緩存對外提供服務(wù),目的是減輕數(shù)據(jù)庫的負(fù)載壓力,加速應(yīng)用訪問。(3)狀態(tài)緩存:緩存包括session會話狀態(tài)及應(yīng)用橫向擴展時的狀態(tài)數(shù)據(jù)等,這類數(shù)據(jù)一般是難以恢復(fù)的,對可用性要求較高,多應(yīng)用于高可用集群。(4)并行處理:通常涉及大量中間計算結(jié)果需要共享。(5)事件處理:分布式緩存提供了針對事件流的連續(xù)查詢處理技術(shù),滿足實時性需求。(6)極限事務(wù)處理:分布式緩存為事務(wù)型應(yīng)用提供高吞吐率、低延時的解決方案,支持高并發(fā)事務(wù)請求處理,多應(yīng)用于鐵路、金融服務(wù)和電信等領(lǐng)域。4過程論述4.1系統(tǒng)的總體設(shè)計4.1.1系統(tǒng)的總體架構(gòu) 基于前面的分析,論文給出了分布式平臺的農(nóng)業(yè)滴灌的總體架構(gòu)。如圖8所示,分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)采用了平行的三(N)層架構(gòu)體系。這個平臺分為兩部分:一是分布式數(shù)據(jù)存儲為主體的數(shù)據(jù)層,二是基于J2EE的分布式數(shù)據(jù)服務(wù)的業(yè)務(wù)邏輯層。基于分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)的總體架構(gòu)圖如下所示: 圖8分布式滴灌系統(tǒng)總體架構(gòu)從圖8可以看出,基于分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)與基于集中式平臺的農(nóng)業(yè)滴灌系統(tǒng)有下面相同點:(1)表示層的各個系統(tǒng)與單獨的一個平臺進行連接,并不需要連接其他區(qū)域的平臺。這樣就沒有增加原有的表示層各個系統(tǒng)的復(fù)雜性,原有的系統(tǒng)幾乎可以在不改變的情況下加入到新的系統(tǒng)中。(2)數(shù)據(jù)的訪問和交換均通過平臺的業(yè)務(wù)邏輯層來完成,所以它們不需要了解所有請求數(shù)據(jù)的實際位置。在整個系統(tǒng)的架構(gòu)上依然具有比較優(yōu)良的透明性。經(jīng)過對基于分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)和基于集中式平臺的農(nóng)業(yè)滴灌系統(tǒng)在網(wǎng)絡(luò)架構(gòu)、數(shù)據(jù)交換流程進行分析后,發(fā)現(xiàn)二者又有著顯著的區(qū)別:(1)基于分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)在各個區(qū)域均可部署平臺,各個平臺通過廣域網(wǎng)進行連接;基于集中式平臺的農(nóng)業(yè)滴灌系統(tǒng)的平臺在一個區(qū)域部署;(2)基于分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)的各個區(qū)域中的系統(tǒng)與各自區(qū)域的平臺連接,二者間的數(shù)據(jù)交換可通過局域網(wǎng)(或廣域網(wǎng))來進行;基于集中式平臺的農(nóng)業(yè)滴灌系統(tǒng)中的各個區(qū)域中的系統(tǒng)與統(tǒng)一的平臺連接,與平臺在一個區(qū)域的各個系統(tǒng)與平臺通過局域網(wǎng)進行數(shù)據(jù)交換,其他區(qū)域的系統(tǒng)通過廣域網(wǎng)與平臺進行數(shù)據(jù)交換;(3)在基于分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)中,在各個平臺通過區(qū)域間的廣域網(wǎng)來進行數(shù)據(jù)交換;在基于集中式平臺的農(nóng)業(yè)滴灌系統(tǒng)中,其他區(qū)域與平臺請求、交換數(shù)據(jù)均通過廣域網(wǎng)進行。4.1.2數(shù)據(jù)存儲層的設(shè)計數(shù)據(jù)存儲層的設(shè)計是本論文一大核心,數(shù)據(jù)存儲層設(shè)計好壞直接影響系統(tǒng)的穩(wěn)定性;同時,也會對業(yè)務(wù)邏輯層的透明性造成一定的影響,為了降低業(yè)務(wù)邏輯層軟件的設(shè)計復(fù)雜性,在數(shù)據(jù)層為業(yè)務(wù)邏輯層盡量提供分段透明性。本系統(tǒng)的服務(wù)對象是農(nóng)田、溫室大棚,服務(wù)區(qū)域在新疆,由于地理位置的因素,一個區(qū)域有很多兵團,一個兵團下面管轄很多農(nóng)場,農(nóng)場下面有分有若干塊農(nóng)田或大棚,所以這數(shù)據(jù)表的設(shè)計上尤為重要。因此,數(shù)據(jù)表的設(shè)計原則如下:(1)核心數(shù)據(jù)保存在MySQL數(shù)據(jù)庫[17]中,需要頻繁查詢的數(shù)據(jù)保存在Memcached中。(2)其他站點的MySQL數(shù)據(jù)庫作為冗余數(shù)據(jù)進行存儲,定期與核心數(shù)據(jù)同步更新。在系統(tǒng)中存儲量最大的數(shù)據(jù)就是資源數(shù)據(jù),資源數(shù)據(jù)包括結(jié)構(gòu)化的數(shù)據(jù);大部分資源數(shù)據(jù)在生成之后,在使用過程中基本上不會發(fā)生改變,所以資源數(shù)據(jù)采用在各個站點進行冗余存儲的設(shè)計原則,即在各個站點擁有資源數(shù)據(jù)的完全備份。這樣做主要有下面三點原因:(1)就近訪問可以得到較好的系統(tǒng)性能;(2)規(guī)避廣域網(wǎng)故障的影響;(3)存儲介質(zhì)相對于廣域網(wǎng)帶寬來說比較廉價。數(shù)據(jù)存儲層的設(shè)計圖:數(shù)據(jù)源冗余備份MySQL核心數(shù)據(jù)頻繁查詢的數(shù)據(jù)MemcachedMySQL數(shù)據(jù)源冗余備份MySQL核心數(shù)據(jù)頻繁查詢的數(shù)據(jù)MemcachedMySQL圖9存儲框架圖4.1.3業(yè)務(wù)邏輯層的設(shè)計業(yè)務(wù)邏輯層是農(nóng)業(yè)滴灌系統(tǒng)架構(gòu)中最能體現(xiàn)核心價值的部分,它集中體現(xiàn)了系統(tǒng)的業(yè)務(wù)規(guī)則的制定、業(yè)務(wù)流程的實現(xiàn)等與業(yè)務(wù)需求相關(guān)的系統(tǒng)設(shè)計。業(yè)務(wù)邏輯層在農(nóng)業(yè)滴灌系統(tǒng)中的位置非常關(guān)鍵,它處于數(shù)據(jù)存儲層與表示層的中間,起到了數(shù)據(jù)交換中承上啟下的作用[18]。農(nóng)業(yè)滴灌系統(tǒng)中的各個層是一種弱耦合結(jié)構(gòu),層與層之間的依賴是向下的:表示層中的各個區(qū)域的系統(tǒng)通過業(yè)務(wù)邏輯層的接口來完成數(shù)據(jù)訪問和數(shù)據(jù)交換的過程;業(yè)務(wù)邏輯層對于表示層來說是“透明”的,改變表示層中的各個控制化系統(tǒng)的設(shè)計實現(xiàn)對于其調(diào)用的業(yè)務(wù)邏輯層而言沒有任何影響。農(nóng)業(yè)滴灌系統(tǒng)的業(yè)務(wù)邏輯層需要與數(shù)據(jù)存儲層通信。在本論文實現(xiàn)的分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)中采用業(yè)界流行的Hibernate框架構(gòu)建的數(shù)據(jù)訪問層來訪問數(shù)據(jù)庫。在整體架構(gòu)上,數(shù)據(jù)訪問層可以看作業(yè)務(wù)邏輯層的一部分,是業(yè)務(wù)邏輯層的最靠近數(shù)據(jù)庫的部分。為了使控制業(yè)務(wù)邏輯中控制業(yè)務(wù)規(guī)則、業(yè)務(wù)流程的部分與數(shù)據(jù)訪問層實現(xiàn)弱依賴,數(shù)據(jù)訪問層引入接口工作集和設(shè)計模式中的工廠模式。在所有的業(yè)務(wù)流程模塊中對數(shù)據(jù)訪問層的數(shù)據(jù)對象的調(diào)用,都采用面向?qū)ο笳Z言中的多態(tài)原理和抽象接口技術(shù)。先定義出抽象的數(shù)據(jù)接口對象,然后使用工廠對象中的工廠方法創(chuàng)建出具體的數(shù)據(jù)對象。在農(nóng)業(yè)滴灌系統(tǒng)中業(yè)務(wù)邏輯層與表示層要實現(xiàn)弱耦合結(jié)構(gòu)。業(yè)務(wù)邏輯層最理想的方式是面向接口設(shè)計。在面向接口設(shè)計的系統(tǒng)中,系統(tǒng)的功能是由各個層來協(xié)作完成,各個層次中如果實現(xiàn)自身的業(yè)務(wù)流程對整個系統(tǒng)框架來說不再重要,而各個層次間的協(xié)作關(guān)系則成為系統(tǒng)設(shè)計的關(guān)鍵。由于采用面向接口的設(shè)計,農(nóng)業(yè)滴灌系統(tǒng)由于升級換代而產(chǎn)生的表示層中的發(fā)生改變,業(yè)務(wù)邏輯層中的實現(xiàn)是完全不用改變的。不同區(qū)域中使用的各個控制化系統(tǒng)的建設(shè)情況十分復(fù)雜,具體的實現(xiàn)技術(shù)也是不一而同。數(shù)據(jù)邏輯層提供的接口是標(biāo)準(zhǔn)技術(shù)規(guī)范,才能方便的把各式各樣的系統(tǒng)進行整合。目前,EJB是標(biāo)準(zhǔn)的接口技術(shù),絕大多數(shù)的技術(shù)框架均提供對它的支持[19]。因此業(yè)務(wù)邏輯層的接口發(fā)布技術(shù)采用EJB[20]對其接口進行發(fā)布。在EJB的配置文件standalone.xml中進行配置就可以完成其接口的發(fā)布功能,下面是在EJB服務(wù)器中的配置:(1)添加security-realm,安全域(即表示如果使用這個安全域的話,就使用這個域的密碼)<security-realmname="ejb-security-realm"> <server-identities> <secretvalue="c21hcnRsYWI0MTEq"/> </server-identities></security-realm>(2)在配置中新建一個外連接實例,將安全域與遠(yuǎn)程地址配置關(guān)聯(lián)起來<outbound-connections> <remote-outbound-connectionname="remote-ejb-connection"outbound-socket-binding-ref="remote-ejb"username="ejb"security-realm="ejb-security-realm"> <properties> <propertyname="SASL_POLICY_NOANONYMOUS"value="false"/><propertyname="SSL_ENABLED"value="false"/></properties></remote-outbound-connection></outbound-connections>這個遠(yuǎn)程連接實例“remote-ejb-connection”將上述所配置的連接與安全域聯(lián)系在一起,并且使用EJB服務(wù)器創(chuàng)建的applicationuser:ejb。最后這個連接實例隨著Web服務(wù)器程序的啟動而啟動。由于配置安全域的賬號和密碼是在EJB服務(wù)器那里申請,配置完Web服務(wù)器后,Web服務(wù)器就可以獲得訪問EJB服務(wù)器的權(quán)限。業(yè)務(wù)邏輯層的設(shè)計框架圖:向向EJB服務(wù)器申請訪問的權(quán)限EJBEJB服務(wù)Web服務(wù)EJB服務(wù)器授權(quán)給Web服務(wù)EJB服務(wù)器授權(quán)給Web服務(wù)器圖10業(yè)務(wù)框架圖4.2系統(tǒng)詳細(xì)設(shè)計與實現(xiàn)4.2.1用戶表的設(shè)計用戶表保存有登錄用戶的ID、密碼、身份、權(quán)限等信息。用戶表的表結(jié)構(gòu)定義為:表2用戶表結(jié)構(gòu)序號字段名稱類型長度空否主鍵說明1IDINTY用戶代碼2CNAMEVARCHAR20用戶姓名3STATUSCHAR1用戶狀態(tài)4SEXCHAR1性別5CRDATEDATE創(chuàng)建日期6CADATEDATE注銷日期7IDCARDVARCHAR24身份證號8PWDVARCHAR32用戶密碼(1)實現(xiàn)功能用戶創(chuàng)建接口提供創(chuàng)建用戶的服務(wù),將客戶端傳入的用戶數(shù)據(jù)保存到數(shù)據(jù)庫中。調(diào)用這個接口的客戶端軟件有可能是PC版的控制系統(tǒng),可能是Web版的注冊,也有可能是移動端。(2)設(shè)計思路 從本系統(tǒng)的角度出發(fā),用戶創(chuàng)建接口是一個局部應(yīng)用。它只是訪問和接口所在的應(yīng)用服務(wù)器,接口的參數(shù)是用戶的數(shù)據(jù)結(jié)構(gòu),如果用戶數(shù)據(jù)創(chuàng)建成功,則返回新創(chuàng)建的用戶代碼,失敗則返回相應(yīng)異常。(3)主要程序?qū)崿F(xiàn)描述,用戶創(chuàng)建接口流程圖如下:開始開始返回登錄狀態(tài)寫日志返回登錄狀態(tài)寫日志客戶調(diào)用客戶調(diào)用CreateUser檢查傳入數(shù)據(jù)結(jié)構(gòu)不合法檢查傳入數(shù)據(jù)結(jié)構(gòu)不合法合法合法執(zhí)行sql執(zhí)行sql語句成功成功寫日志寫日志返回登錄狀態(tài)返回登錄狀態(tài)圖11用戶創(chuàng)建接口流程圖在Java的代碼中使用throw語句直接拋出異常,異常拋出后中斷了函數(shù)調(diào)用,直接返回到被調(diào)用代碼處。這個特性在遠(yuǎn)程調(diào)用的Web服務(wù)中的函數(shù)也不例外。異常拋出后,直接返回到調(diào)用函數(shù),調(diào)用函數(shù)對異常進行處理,如果調(diào)用函數(shù)沒有對該異常進行處理,異常會再次被拋出,一直到有代碼對它進行了處理。由于EJB中有自帶的事務(wù)機制,它能夠在操作中對異常進行處理,做相應(yīng)的提交或回滾。認(rèn)證登錄日志表記錄登錄用戶ID,登錄時間、認(rèn)證登錄地點(IP地址)、是否認(rèn)證登錄成功標(biāo)示等等。在各個數(shù)據(jù)庫(將來拓展為站點)均有相同結(jié)構(gòu)的認(rèn)證登錄日志表。在某個區(qū)域進行過登錄的用戶,不論登錄成功與否,應(yīng)用系統(tǒng)均記錄該次認(rèn)證或登錄的情況。認(rèn)證登錄日志表的表結(jié)構(gòu)設(shè)計為:表3認(rèn)證登錄日志表結(jié)構(gòu)序號字段名類型大小主鍵外鍵說明1IDINTY主鍵2USRIDINTY用戶代碼3INSTIMEDATA登錄時間4OPTIPVARCHAR100登錄IP5LGNSTATUSCHAR1用戶狀態(tài)由于采用EJB編寫,EJB中集成了Hibernate框架,使用Hibernate框架操作用戶對象;如果用戶數(shù)據(jù)不存在,寫登錄日志表,返回登錄失敗。如果用戶數(shù)據(jù)存在,寫登錄日志表,筆記輸入的用戶賬號和密碼和數(shù)據(jù)庫中保存的用戶賬號和密碼是否一致,如果一致,返回登錄成功;如果不一致,返回登錄不成功。認(rèn)證流程圖如圖所示:開始開始 查詢備份數(shù)據(jù)庫查詢用戶是否存在查詢備份數(shù)據(jù)庫查詢用戶是否存在寫登錄日志表寫登錄日志表寫登錄日志表是否存在檢查密碼寫登錄日志表寫登錄日志表寫登錄日志表是否存在檢查密碼失敗失敗成功成功拋出響應(yīng)異常構(gòu)造用戶對象拋出響應(yīng)異常拋出響應(yīng)異常構(gòu)造用戶對象拋出響應(yīng)異常開始開始圖12認(rèn)證接口流程4.2.2基本信息類表結(jié)構(gòu)1預(yù)警聯(lián)系人表(1)預(yù)警聯(lián)系人表用于存儲接收預(yù)警信息的相關(guān)人員信息。(2)表標(biāo)識:XJ_PREWARMAN_B。(3)表編號:XJ_002_0001。表4序號字段名字段標(biāo)識類型及長度是否允許空值計量單位主鍵序號1姓名NAMEC(10)N12電話TELC(15)N3職務(wù)DUTYC(30)N4行政區(qū)劃名稱ADMNAMEC(30)N5行政區(qū)劃代碼ADMCODEC(30)N2灌溉設(shè)備配置表(1)灌溉設(shè)備配置表用于存儲灌溉設(shè)備對應(yīng)的實際地塊信息。(2)表標(biāo)識:XJ_CONFIGURATION_B。(3)表編號:XJ_002_0002。表5序號字段名字段標(biāo)識類型及長度是否允許空值計量單位主鍵序號1設(shè)備編號C(30)N12設(shè)備名稱C(30)N3設(shè)備序列號C(30)N4設(shè)備大類C(30)N5供電方式C(30)N6設(shè)備型號C(30)N7設(shè)備IMSIC(30)N8購買時間C(30)N9生效時間C(30)N10服務(wù)到期時間C(10)N11經(jīng)度C(30)N12設(shè)備使用狀態(tài)C(10)N13緯度C(30)N14父設(shè)備編號C(30)N15組態(tài)圖地址C(30)N16項目IDC(50)N17手機號碼C(30)N18備注C(50)19設(shè)備地址C(30)N20顯示名稱C(30)N21應(yīng)用類型C(30)N22轉(zhuǎn)發(fā)設(shè)備地址C(30)N23轉(zhuǎn)發(fā)通道序號C(30)N24設(shè)備C(30)N25業(yè)務(wù)信息C(30)N26基本信息C(30)N27GPRSC(10)N28類型編號C(30)N29網(wǎng)關(guān)列表C(30)N3灌溉流程配置表(1)灌溉流程配置表用于存儲灌溉設(shè)備控制灌溉的流程信息。(2)表標(biāo)識:XJ_PROCONF_B。(3)表編號:XJ_002_0003。表6序號字段名字段標(biāo)識類型及長度是否允許空值計量單位主鍵序號1設(shè)備編號C(30)N12設(shè)備名稱C(30)N3開閥代號C(30)N4關(guān)閥代號C(30)N5開閥通道C(30)N6關(guān)閥通道C(30)N7類型C(30)N8開閥指令C(30)N9關(guān)閥指令C(30)N10閥編號C(10)N11閥名稱C(30)N12上報狀態(tài)位C(10)N13報警通道序號C(30)N4輪灌組配置表(1)輪灌組配置表用于存儲整個項目的輪灌方式。(2)表標(biāo)識:XJ_RATIRRGRO_B。(3)表編號:XJ_002_0004。表7序號字段名字段標(biāo)識類型及長度是否允許空值計量單位主鍵序號1名稱C(30)N12項目外鍵C(30)N3編號C(30)N4序號C(20)N5灌溉種植配置表(1)灌溉種植配置表用于存儲灌溉設(shè)備對應(yīng)地塊的詳細(xì)信息(2)表標(biāo)識:XJ_PLANTCONF_B。(3)表編號:XJ_002_0005。表8序號字段名字段標(biāo)識類型及長度是否允許空值計量單位主鍵序號1編號C(30)N12閥門在用情況C(5)N3自由水頭C(30)N4閥一地塊面積C(30)N5閥二地塊面積C(30)N6閥一作物名稱C(30)N7閥二作物名稱C(30)N8閥一作物代碼C(30)N9閥二作物代碼C(30)N10閥一用戶信息C(50)N11閥二用戶信息C(50)N12閥一土壤類型C(10)N13閥二土壤類型C(10)N14閥一土壤類型C(10)N15閥二土壤類型C(10)N16閥一土層深度C(10)N17閥二土層深度C(10)N18閥一土層深度C(10)N19閥二土層深度C(10)N20閥一耗水系數(shù)C(10)N21閥二耗水系數(shù)C(10)N22閥一滴頭流量C(30)N23閥二滴頭流量C(30)N24閥一滴頭間距C(30)N25閥二滴頭間距C(30)N26閥一支管長度C(10)N27閥二支管長度C(10)N28閥一自由水頭C(30)N29閥二自由水頭C(30)N30閥一支管管徑C(30)N31閥二支管管徑C(30)N32閥一滴灌帶間距C(30)N33閥二滴灌帶間距C(30)N6設(shè)備表(1)設(shè)備表用于存儲灌溉設(shè)備的相關(guān)信息。(2)表標(biāo)識:XJ_DEVICE_B。(3)表編號:XJ_002_0006。表9序號字段名字段標(biāo)識類型及長度是否允許空值計量單位主鍵序號1設(shè)備編號C(10)N12設(shè)備名稱C(18)N3設(shè)備序列號C(18)N4設(shè)備大類C(18)5供電方式C(18)6設(shè)備型號C(18)N7設(shè)備IMSIC(18)8購買時間C(18)9生效時間C(18)10服務(wù)到期時間C(18)11經(jīng)度C(20)N12設(shè)備使用狀態(tài)C(18)N13緯度C(20)N14父設(shè)備編號C(18)N15組態(tài)圖地址C(18)N16項目IDC(18)N17手機號碼C(18)N18備注C(30)19設(shè)備地址C(10)N20顯示名稱C(18)N21應(yīng)用類型C(10)22轉(zhuǎn)發(fā)設(shè)備地址C(10)N23轉(zhuǎn)發(fā)通道序號C(10)N24設(shè)備C(10)N25業(yè)務(wù)信息C(18)26基本信息C(18)27GPRSC(10)N28類型編號C(10)N29網(wǎng)關(guān)列表C(10)N7項目表(1)項目表用于存儲灌溉項目的詳細(xì)信息及配置所屬該項目下的設(shè)備。(2)表標(biāo)識:XJ_PROJECT_B。(3)表編號:XJ_002_0007。 表10序號字段名字段標(biāo)識類型及長度是否允許空值計量單位主鍵序號1項目編號C(10)N12項目名稱C(18)N3項目創(chuàng)建者C(10)4父項目編號C(10)N5項目創(chuàng)建時間C(18)6項目描述C(30)7所屬行政區(qū)劃C(18)N8項目類型C(18)N9經(jīng)度C(20)N10緯度C(20)N11比例尺C(20)N12地圖類型C(10)N13頁面地址C(20)14開關(guān)對應(yīng)C(10)N15二級域名C(10)N16設(shè)備列表C(10)N17項目圖片C(18)18網(wǎng)關(guān)選擇C(10)N8網(wǎng)絡(luò)表(1)網(wǎng)絡(luò)表用于存儲灌溉項目的網(wǎng)絡(luò)信息及配置所屬該網(wǎng)絡(luò)下的設(shè)備。(2)表標(biāo)識:XJ_NETWORK_B。(3)表編號:XJ_002_0008。表11序號字段名字段標(biāo)識類型及長度是否允許空值計量單位主鍵序號1編號C(10)N12名稱C(18)N3父項目編號C(10)N4設(shè)備編號列表C(18)N9預(yù)警信息表(1)預(yù)警信息表用于存儲設(shè)備的預(yù)警記錄。(2)表標(biāo)識:XJ_WARMEG_B。(3)表編號:XJ_002_0009。表12序號字段名字段標(biāo)識類型及長度是否允許空值計量單位主鍵序號1外鍵C(10)N12設(shè)備地址C(10)N3通道序號C(10)N4gprs地址C(10)N5報警時間C(18)N6報警類型C(10)N7數(shù)據(jù)報文C(20)N8解析數(shù)據(jù)C(20)N10未處理設(shè)備歷史數(shù)據(jù)表(1)未處理設(shè)備歷史數(shù)據(jù)表用于存儲設(shè)備通訊的原始數(shù)據(jù)。(2)表標(biāo)識:XJ_UNTREATDATA_B。(3)表編號:XJ_002_0010。表13序號字段名字段標(biāo)識類型及長度是否允許空值計量單位主鍵序號1設(shè)備地址C(10)N12gprs地址C(10)N3日期C(18)N4最新時間C(18)N5采集時間C(18)N6上報時間C(18)N7通道一C(18)8通道二C(18)9通道三C(18)10通道四C(18)11通道五C(20)12通道六C(18)13通道七C(28)14通道八C(18)15通道九C(18)16通道十C(18)17通道十一C(18)18通道十二C(18)19通道十三C(18)20通道十四C(18)21通道十五C(18)22通道十六C(18)11處理后設(shè)備歷史數(shù)據(jù)表(1)處理后設(shè)備歷史數(shù)據(jù)表用于存儲設(shè)備通訊經(jīng)處理后的原始數(shù)據(jù)。(2)表標(biāo)識:XJ_HANDLEDATA_B。(3)表編號:XJ_002_0011。 表14序號字段名字段標(biāo)識類型及長度是否允許空值計量單位主鍵序號1設(shè)備地址C(10)N12gprs地址C(10)N3時間C(18)N4最新時間C(18)N5采集時間C(18)N6上報時間C(18)N7通道一C(18)8通道二C(18)9通道三C(18)10通道四C(18)11通道五C(28)12通道六C(18)13通道七C(18)14通道八C(18)15通道九C(18)16通道十C(18)17通道十一C(18)18通道十二C(18)19通道十三C(18)20通道十四C(18)21通道十五C(18)22通道十六C(18)4.2.3分布式服務(wù)的設(shè)計與實現(xiàn)本系統(tǒng)的核心服務(wù)采用的技術(shù)是EJB,EJB是sun的服務(wù)器端組件模型,設(shè)計目標(biāo)與核心應(yīng)用是部署分布式應(yīng)用程序。憑借Java跨平臺的優(yōu)勢,用EJB技術(shù)部署的分布式系統(tǒng)可以不限于特定的平臺。EJB(EnterpriseJavaBean)是J2EE的一部分,定義了一個用于開發(fā)基于組件的企業(yè)多重應(yīng)用程序的標(biāo)準(zhǔn)。其特點包括網(wǎng)絡(luò)服務(wù)支持和核心開發(fā)工具(SDK)。在J2EE里,EnterpriseJavaBeans(EJB)稱為Java企業(yè)Bean,是Java的核心代碼,分別是會話Bean(SessionBean),實體Bean(EntityBean)和消息驅(qū)動Bean(MessageDrivenBean)。設(shè)計分布式服務(wù)并不是只為實現(xiàn)當(dāng)前的功能,而且還來考慮將來的擴展性,所以設(shè)計的時候必須認(rèn)真、仔細(xì)的考慮;分布式服務(wù)的設(shè)計原則如下:(1)對外提供服務(wù)接口(Web瀏覽器、智能手機、PC機等調(diào)用相應(yīng)的接口)。(2)可擴展,方便以后組建EJB服務(wù)集群分布式服務(wù)實現(xiàn)框架圖如下所示:圖13分布式服務(wù)框架圖4.2.4分布式存儲設(shè)計與實現(xiàn)本系統(tǒng)的存儲采用MySQL和Memcached兩種存儲機制,采用MySQL是因為它體積小,成本低,完全可以滿足一般企業(yè)的要求;采用Memcached的好處在于,它能夠?qū)崿F(xiàn)內(nèi)存共享;同時它的可擴展性強,若將來Memcached的內(nèi)存不夠用,可以和其他的Memcached組合起來構(gòu)成Memcached集群,設(shè)計分布式存儲的原則如下:(1)雙機備份;(2)冗余數(shù)據(jù)存儲;這樣能夠保存,當(dāng)某個數(shù)據(jù)庫(MySQL或是Memcached)崩潰后,不會影響整個系統(tǒng)的運行。分布式存儲實現(xiàn)框架圖:圖14分布式存儲框架圖5結(jié)果分析5.1測試環(huán)境(1)2臺Linux操作系統(tǒng),MySQL5.5、Memcached1.4、JBoss7.0。(2)1臺Linux操作系統(tǒng),安裝Tomcat。作為客戶端軟件的Web服務(wù)器;(3)1臺PC機,Windows8操作系統(tǒng)。作為C/S軟件、B/S軟件的客戶端;(4)1臺安卓手機。作為移動客戶端;(5)100M帶寬的局域網(wǎng)和10M帶寬的ADSL廣域網(wǎng)連接;(6)Jmeter2.11壓力測試工具;5.2測試程序與測試界面設(shè)計(1)基于.Net平臺的滴灌系統(tǒng)之PC端的控制程序用戶操作滴灌系統(tǒng),操作功能包含:滴灌啟動、采集水閥狀態(tài)、電壓采集等。首先是登錄界面,如圖15所示: 圖15登錄界面登陸成功后進入主界面,如圖16所示:圖16主界面滴灌控制界面能夠顯示節(jié)點下掛的水閥個數(shù),如圖17所示:圖17滴灌控制滴灌控制功能包含信息采集,例如:水閥狀態(tài)、節(jié)點電壓。如圖18所示:圖18信息采集土壤墑情是采集當(dāng)天含水量的記錄,如圖19所示:圖19土壤墑情氣象顯示包含降雨量、風(fēng)速、風(fēng)向、太陽輻射、空氣溫度、空氣濕度和大氣壓力。圖20氣象顯示(2)基于J2EE技術(shù)的WEB應(yīng)用程序滴灌系統(tǒng)之WEB應(yīng)用程序功能包含:泵房管理、氣象數(shù)據(jù)、滴灌操作等。 圖21瀏覽器泵房管理Web滴灌控制可參考桌面電腦的操作,如圖22是滴灌控制界面:圖22瀏覽器滴灌控制 圖23瀏覽器氣象數(shù)據(jù)(3)Android手機客戶端程序農(nóng)業(yè)小助手啟動界面,如圖24所示:圖24農(nóng)業(yè)滴灌系統(tǒng)啟動界面進入登錄界面,如圖25所示:圖25農(nóng)業(yè)滴灌系統(tǒng)啟動界面農(nóng)業(yè)小助手主界面,如圖26所示:圖26農(nóng)業(yè)滴灌系統(tǒng)主界面農(nóng)業(yè)滴灌系統(tǒng)控制界面,如圖27所示: 圖27農(nóng)業(yè)滴灌系統(tǒng)滴灌控制農(nóng)業(yè)滴灌系統(tǒng)氣象顯示,如圖28所示:圖28農(nóng)業(yè)滴灌系統(tǒng)氣象顯示5.3測試分析項目結(jié)果分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)性能分析主要包括并發(fā)量和吞吐量及容錯率。下面對系統(tǒng)進行壓力測試并分析:分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)采用了三層架構(gòu),數(shù)據(jù)的訪問流程由業(yè)務(wù)邏輯層控制。下面對傳統(tǒng)的平臺和分布式平臺的應(yīng)用進行性能的類比分析。測試結(jié)果如下:表15 注:Samples表示并發(fā)量,90%Line表示響應(yīng)時間,Error%表示容錯率,KB/sec表示吞吐量。通過上面分析,當(dāng)并發(fā)量達到1000時,響應(yīng)時間和容錯率及吞吐量,在分布式平臺下明顯比傳統(tǒng)的平臺有優(yōu)勢。6總結(jié)分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)是以網(wǎng)絡(luò)為基礎(chǔ),利用控制化手段和工具,實現(xiàn)從環(huán)境、資源到活動的全部分布式化。分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)是網(wǎng)絡(luò)化、控制化、智能化、高度應(yīng)用化等有機結(jié)合的新型分布式平臺。分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)的建設(shè)可以提升傳統(tǒng)農(nóng)業(yè)滴灌系統(tǒng)的效率,拓展其功能。但是近年來隨著農(nóng)田的不斷合并擴充,一個區(qū)域往往擁有多塊農(nóng)田,而且各個區(qū)域相對來說比較分散,少則幾公里,多則幾十公里?,F(xiàn)有的農(nóng)業(yè)滴灌系統(tǒng),是在區(qū)域相對集中,網(wǎng)絡(luò)建設(shè)已經(jīng)相當(dāng)完善的基礎(chǔ)和前提下進行設(shè)計開發(fā)的,這種集中式的農(nóng)業(yè)滴灌系統(tǒng)在新的的環(huán)境并不適用。因此,構(gòu)建新的分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)勢在必行。本文提出了基于分布式數(shù)據(jù)存儲和EJB架構(gòu)的分布式數(shù)據(jù)服務(wù)解決方案,并以用戶數(shù)據(jù)和滴灌系統(tǒng)產(chǎn)生的數(shù)據(jù)為分析要點,解決了分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)設(shè)計中面臨的一些問題。論文主要工作包括:(1)研究、分析了分布式數(shù)據(jù)存儲、EJB接口技術(shù);(2)提出了分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)的總體架構(gòu);(3)分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)中數(shù)據(jù)庫對象,有效解決了分布式平臺中業(yè)務(wù)邏輯層接口設(shè)計的復(fù)雜性問題;(4)布式平臺中用戶數(shù)據(jù)分布的特點,并通過數(shù)據(jù)庫對象設(shè)計和后臺服務(wù)進程設(shè)計加以實現(xiàn);(5)構(gòu)建了分布式平臺的農(nóng)業(yè)滴灌系統(tǒng)客戶端測試程序,并進行了系統(tǒng)測試與結(jié)果分析。由于時間有限以及經(jīng)驗的不足,系統(tǒng)中仍有很多方面有待進一步的探索。例如,在滴灌系統(tǒng)中,如何保證資源數(shù)據(jù)的一致性、如何進一步提高分布式數(shù)據(jù)的效率等問題,需要在今后的工作中不斷改進和完善參考文獻[1]李曉蕾.基于信息孤島消除的資源優(yōu)化模型研究[J].科技通報,2013.[2]阮躍.分布式化工大機組智能故障診斷系統(tǒng)[J].化工自動化及儀表,2004.[3]SethLadd,DarrenDavison.深入解析SpringMVC與WebFlow[M].人民郵電出版社,2008[4]劉鵬.云計算[M].北京:電子工業(yè)出版社,2010[5]DEEPAKA,JOHNC.J2EE核心模式[M].北京:機械工業(yè)出版社,2005.[6]JohnWiley&Sons,MateringEnterpriseJavaBeans[M].電子工業(yè)出版社,2005.[7]M.TAMEROZSU,PATRICKV.PrinciplesofDistributedDatabaseSystems(英文影印版)[M].北京:清華大學(xué)出版社,2002.[8]MINORDH,BURRUSSJR.DistributedMDSplusdatabaseperformancewithLinuxclusters[J].FusionEngineeringandDesign.2006.[9]SALLYM,BRYANS,PHILIPM,etal.Knowledgediscoverybyprobabilisticclusteringofdistributeddatabases[J].Data&KnowledgeEngineering,2005.[10]ZHANGF,XUED.Distributeddatabaseandknowledgebasemodelingforconcurrentdesign[J].Computer-AidedDesign,2002.[11]HASSANA,MANALS,HAIDARS.AdistributedmobiledatabaseimplementationonPocketPCmobiledevicescommunicationoverBluetooth[J].JournalofNetworkandComputerApplications,2009.[12]ALIA,F(xiàn)AWAZS.APSOandaTabusearchheuristicsfortheassemblyschedulingproblemofthetwo-stagedistributeddatabaseapplication[J].Computer&OperationsResearch,2006.[13]NICOLAPB,DistributedDatabasesforthedevelopmentofMechanismsTopology[J].MechanismandMachineTheory,2000.[14]王君,祝永志,魏榮暉,等.基于Oracle分布式數(shù)據(jù)庫的查詢優(yōu)化[J].計算機技術(shù)與發(fā)展,2008.[15]馬程.分布式數(shù)據(jù)庫系統(tǒng)中的查詢優(yōu)化[J].科技信息(學(xué)術(shù)版),2008.[16]高維維,王海健.淺談分布式數(shù)據(jù)庫的安全管理技術(shù)[J].科技資訊,2008.[17]BHAVANIT.SecurityofDistributedDatabases[J].InformationSecurityTechnicalReport.2001.[18]XUED,XUY.Web-baseddistributedsystemanddatabasemodelingforconcurrentdesign[J].Computer-AidedDesign,2003.[19]FABRIZIOF,CLAUDIOG,F(xiàn)AUSTOR,etal.Distancebrowsingindistributedmultimediadatabases[J].FutureGenerationComputerSystems.2009.[20]LEONARDR.RESTfulWebServices[M].北京:電子工業(yè)出版社,2008.致謝非常感謝王玨輝老師,在我大學(xué)的最后學(xué)習(xí)階段——畢業(yè)設(shè)計階段給我的指導(dǎo),從最初的定題到資料收集,到寫作、修改,到論文定稿,他給了我耐心的指導(dǎo)和無私的幫助。為了指導(dǎo)我的畢業(yè)論文,他放棄了自己的休息時間,這種無私奉獻的敬業(yè)精神令人佩服,導(dǎo)師嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度、高度的責(zé)任心和實事求是的工作風(fēng)格令我受益匪淺,在此我向王玨輝老師表示我最誠摯的謝意。同時,感謝所有任課老師和所有同學(xué)在這四年來給我的指導(dǎo)和幫助,是他們教會了我專業(yè)知識,教會了我如何學(xué)習(xí),教會了我如何做人。正是由于他們,我才能在各方面取得顯著的進步,在此向他們表示我由衷的謝意,并祝所有的老師培養(yǎng)出越來越多的優(yōu)秀人才,桃李滿天下。衷心感謝我的家人,他們的愛與關(guān)懷是我力量的源泉。最后,再次向所有支持和幫助過我的老師、同學(xué)表示衷心的感謝!附錄下面是Java語言為實現(xiàn)整個農(nóng)業(yè)滴灌系統(tǒng)提供服務(wù)的數(shù)據(jù)結(jié)構(gòu):(1)農(nóng)場實體packagecom.argejb.model.entity;importjava.io.Serializable;importjava.util.HashSet;importjava.util.Set;importjavax.persistence.Column;importjavax.persistence.Entity;importjavax.persistence.FetchType;importjavax.persistence.GeneratedValue;importjavax.persistence.GenerationType;importjavax.persistence.Id;importjavax.persistence.OneToMany;importjavax.validation.constraints.Size;importorg.hibernate.validator.constraints.NotEmpty;@EntitypublicclassFarmimplementsSerializable{ privatestaticfinallongserialVersionUID=-5475036180850719561L; @Id @GeneratedValue(strategy=GenerationType.IDENTITY) privateLongid; @NotEmpty @Column(unique=true) @Size(min=1,max=20) privateStringfarmname; privatedoublelongitude; privatedoublelatitude; @Size(max=500) privateStringdescription; @OneToMany(fetch=FetchType.EAGER,mappedBy="farm") privateSet<FarmArea>farmAreas=newHashSet<FarmArea>(); publicLonggetId(){ returnid; } publicvoidsetId(Longid){ this.id=id; } publicStringgetFarmname(){ returnfarmname; } publicvoidsetFarmname(Stringfarmname){ this.farmname=farmname; } publicdoublegetLongitude(){ returnlongitude; } publicvoidsetLongitude(doublelongitude){ this.longitude=longitude; } publicdoublegetLatitude(){ returnlatitude; } publicvoidsetLatitude(doublelatitude){ this.latitude=latitude; } publicStringgetDescription(){ returndescription; } publicvoidsetDescription(Stringdescription){ this.description=description; } publicSet<FarmArea>getFarmAreas(){ returnfarmAreas; } publicvoidsetFarmAreas(Set<FarmArea>farmAreas){ this.farmAreas=farmAreas; } @Override publicStringtoString(){ return"Farm[id="+id+",farmname="+farmname+",longitude=" +longitude+",latitude="+latitude+",description=" +description+",farmAreas="+farmAreas.toString()+"]"; } @Override publicinthashCode(){ finalintprime=31; intresult=1; result=prime*result +((farmname==null)?0:farmname.hashCode()); result=prime*result+((id==null)?0:id.hashCode()); returnresult; } @Override publicbooleanequals(Objectobj){ if(this==obj) returntrue; if(obj==null) returnfalse; if(getClass()!=obj.getClass()) returnfalse; Farmother=(Farm)obj; if(farmname==null){ if(other.farmname!=null) returnfalse; }elseif(!farmname.equals(other.farmname)) returnfalse; if(id==null){ if(other.id!=null) returnfalse; }elseif(!id.equals(other.id)) returnfalse; returntrue; }}(2)EJB配置文件信息<?xmlversion='1.0'encoding='UTF-8'?><serverxmlns="urn:jboss:domain:1.4"><extensions><extensionmodule="org.jboss.as.clustering.infinispan"/><extensionmodule="org.jboss.as.connector"/><extension

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論