《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > 基于Java&XML技術(shù)構(gòu)建植物病蟲害遠(yuǎn)程診斷系統(tǒng)

基于Java&XML技術(shù)構(gòu)建植物病蟲害遠(yuǎn)程診斷系統(tǒng)

2009-01-15
作者:武守忠 高靈旺

1.引言?

????網(wǎng)絡(luò)服務(wù)已經(jīng)影響到整個社會的方方面面,Web應(yīng)用程序也變的越來越復(fù)雜,近年來,我國農(nóng)業(yè)生產(chǎn)形勢發(fā)生了諸多變化,生態(tài)環(huán)境的改變使得新的病蟲害開始發(fā)生,在植物類產(chǎn)品生產(chǎn)過程中因未能及時診斷病蟲害而造成的損失是巨大的,對植物病蟲害診斷工作提出了挑戰(zhàn)。因此,建立和完善植物病蟲害診斷系統(tǒng)是新世紀(jì)的一個重要內(nèi)容,而植物病蟲害的遠(yuǎn)程診斷是智能農(nóng)業(yè)的一個重要技術(shù)功能,網(wǎng)絡(luò)通信技術(shù)的快速發(fā)展,使植物病蟲害診斷技術(shù)突破了時空限制。系統(tǒng)通過使用先進(jìn)的領(lǐng)先技術(shù)Java和XML來提供優(yōu)秀的診斷服務(wù)。

??? 在傳統(tǒng)的小型JSP應(yīng)用程序中,數(shù)據(jù)、業(yè)務(wù)邏輯和用戶界面通常組合在一個代碼模塊中,應(yīng)用程序通常還包含用來控制應(yīng)用程序流程的邏輯,這樣由于文件中HTML和Java的強(qiáng)耦合,會有邏輯混亂,調(diào)試?yán)щy等很多問題。本文介紹的植物病蟲害遠(yuǎn)程診斷系統(tǒng),采用了基于J2EE的分布式應(yīng)用體系結(jié)構(gòu)和MVC開發(fā)模型,是分布在不同地理位置上的數(shù)據(jù)庫與遠(yuǎn)程診斷系統(tǒng)通過Internet互聯(lián)在一起。MVC模式將復(fù)雜的系統(tǒng)劃分為M(model)、V(view)、C(controller)三層結(jié)構(gòu)。MVC模式不僅實(shí)現(xiàn)了功能模塊和顯示模塊的分離,同時它還提高了應(yīng)用系統(tǒng)的可維護(hù)性、可擴(kuò)展性、可移植性和組件的可復(fù)用性。MVC模式是目前基于B/S結(jié)構(gòu)開發(fā)的最為有效的一種模式。

2.技術(shù)背景?

????J2EE已經(jīng)成為企業(yè)應(yīng)用開發(fā)的標(biāo)準(zhǔn)。平臺為創(chuàng)建、部署和管理企業(yè)級類應(yīng)用以及代碼的可移植性及重用提供了一個安全的、伸縮的和可擴(kuò)展的環(huán)境。基于它,開發(fā)者只需要集中精力編寫代碼來表達(dá)企業(yè)應(yīng)用的商業(yè)邏輯和表示邏輯,至于其他系統(tǒng)問題,如內(nèi)存管理、多線程、資源分布、垃圾收集等,都將由J2EE自動完成。J2EE方案的實(shí)施可顯著地提高系統(tǒng)的可移植性、安全性、可伸縮性、負(fù)載平衡和可重用性。J2EE的發(fā)展,讓Java語言與MVC模式設(shè)計思想達(dá)到了完美的結(jié)合,使早就提出但一直未能突破語言障礙的MVC模式得以實(shí)現(xiàn)。

????由Apache組織開發(fā)的Struts框架是一個基于J2EE平臺的Web應(yīng)用系統(tǒng)框架,它采用MVC模型規(guī)范,結(jié)合了Servlet、JSP、JavaBean的技術(shù)特點(diǎn),使這些技術(shù)合理分工,緊密配合,達(dá)到程序結(jié)構(gòu)清晰,易于開發(fā)、維護(hù)的目的。Struts的主要部件是一個通用的控制組件。這個控制組件提供了處理所有發(fā)送到Struts的HTTP請求的入口點(diǎn)。它截取和分發(fā)這些請求到相應(yīng)的動作類(都是Action類的子類)。同時,控制組件也負(fù)責(zé)用相應(yīng)的請求參數(shù)填充FormBean,并傳給動作類。動作類實(shí)現(xiàn)核心業(yè)務(wù)邏輯,它可以訪問JavaBean或調(diào)用EJB。最后,動作類把控制權(quán)傳給后續(xù)的JSP文件,后者則生成視圖。所有的這些控制邏輯都是利用一個XML文件來配置。

????XML與生俱來的可擴(kuò)展、跨平臺、開放的特性無疑與Java相呼應(yīng),形成了完美搭檔。在Web這樣一個公共的、開放的資源平臺與計算環(huán)境上,Java技術(shù)提供了豐富的實(shí)現(xiàn)機(jī)制;XML為信息的有效管理和數(shù)據(jù)集成提供了強(qiáng)大的功能,它提供了一種人和程序都能閱讀的描述機(jī)制。XLST用來把XML文件轉(zhuǎn)換成HTML文件,其中XML信息可由JSP動態(tài)生成,通過將數(shù)據(jù)庫中的信息檢索轉(zhuǎn)換成XML數(shù)據(jù)信息增大數(shù)據(jù)的通用性。

????在對數(shù)據(jù)庫的處理時我們采用面向?qū)ο蟮臄?shù)據(jù)持久化技術(shù)hibernate,它是現(xiàn)在對數(shù)據(jù)庫處理的一個非常優(yōu)秀的O/R Mapping(對象關(guān)系映射框架)產(chǎn)品,它對JDBC進(jìn)行了輕量級的對象封裝,使Java程序員可以隨心所欲的使用對象編程思想來操縱數(shù)據(jù)庫。Hibernate不僅僅管理Java類到數(shù)據(jù)庫表的映射,還提供數(shù)據(jù)查詢和獲取數(shù)據(jù)的方法,主要包括以下幾個特點(diǎn):

1.具有開源和免費(fèi)的License

2.輕量級封裝,避免引入過多復(fù)雜的問題,調(diào)試容易,減輕程序員負(fù)擔(dān)

3.具有可擴(kuò)展性,API開放,當(dāng)本身功能不夠用的時候可以允許自己遍碼進(jìn)行擴(kuò)展

4.開發(fā)者活躍,產(chǎn)品有穩(wěn)定發(fā)展的保障

5.具有豐富的文檔資料

6.有成功的項(xiàng)目開發(fā)實(shí)施案例

7.在開發(fā)者當(dāng)中有良好的口碑

3.系統(tǒng)功能?

????系統(tǒng)利用人工智能技術(shù),在internet上24小時運(yùn)轉(zhuǎn),遠(yuǎn)程擁護(hù)自助生產(chǎn)中的疑難病蟲,運(yùn)行成本低,這也是遠(yuǎn)程診斷的發(fā)展方向?;趯Σ『拖x診斷的不同特點(diǎn),在推理機(jī)上也采用了不同的方法,對害蟲的診斷上采用了二叉樹推理機(jī),而對病害的診斷采用神經(jīng)網(wǎng)絡(luò)推理機(jī)。

????系統(tǒng)主要包括以下功能:

1.?用戶認(rèn)證。系統(tǒng)所有用戶的密碼采取MD5算法加密,任何人無法從數(shù)據(jù)庫(或者數(shù)據(jù)包)中獲取到其他人員的密碼。

2.?系統(tǒng)管理員對系統(tǒng)的維護(hù),包括對用戶的管理和對病蟲害數(shù)據(jù)的填加、更新、刪除等操作。

3.?用戶對信息的搜索。用戶可以通過站內(nèi)搜索來查找自己需要的信息內(nèi)容。

4.?推理與診斷。根據(jù)用戶輸入的信息,系統(tǒng)將自動的來推理診斷得出結(jié)論,反饋給用戶。

????系統(tǒng)還有一部分其他的附屬功能,但以上是整個系統(tǒng)最為核心的內(nèi)容。其他功能在此就不再贅述。下面我們以病害診斷為例看一下系統(tǒng)的構(gòu)成,蟲害診斷基本與病害系統(tǒng)構(gòu)成相同,就是中間的推理機(jī)和數(shù)據(jù)庫字段設(shè)置不同,以下是病害系統(tǒng)的構(gòu)成圖(圖1)。用戶通過登陸界面經(jīng)身份驗(yàn)證確認(rèn)后進(jìn)入開始頁面,在此頁面上就可一步一步的按系統(tǒng)的流程來進(jìn)行診斷,經(jīng)遠(yuǎn)程服務(wù)器端推理機(jī)推理即可將結(jié)果反饋給用戶,這樣用戶不出門就可完成遠(yuǎn)程診斷,節(jié)約了大量的人力、財力,縮短了診斷時間,減少了因病蟲害延誤而使植物生產(chǎn)中造成大量的損失。在后臺我們可以方便的對數(shù)據(jù)資料進(jìn)行適時的管理,保證了診斷信息的時效性,使診斷更為客觀、真實(shí)。

????

?圖1 植物病害遠(yuǎn)程診斷系統(tǒng)構(gòu)成

4.系統(tǒng)設(shè)計?

????在系統(tǒng)的設(shè)計中我們實(shí)現(xiàn)松耦合,系統(tǒng)里的所有組件都是服務(wù)。整個系統(tǒng)采用Struts結(jié)構(gòu),圖2是系統(tǒng)的主體框架設(shè)計圖,圖3為系統(tǒng)的底層結(jié)構(gòu)。

???

????????????????????????????????????????????????? 圖2 系統(tǒng)主體框架設(shè)計

圖3 底層結(jié)構(gòu)

????在Model中,用一個表單Bean來保存HTTP請求傳來的數(shù)據(jù),兩個業(yè)務(wù)邏輯Bean來處理業(yè)務(wù)邏輯,因?yàn)閷Σ『拖x的診斷機(jī)理不同,所以才用了兩個業(yè)務(wù)邏輯Bean,其中一個為進(jìn)行二叉樹推理,另一個為神經(jīng)網(wǎng)絡(luò)推理,只所以分成兩個也是盡量的讓系統(tǒng)松耦合,隨著系統(tǒng)的升級以后可能采用更為先進(jìn)的準(zhǔn)確的推理機(jī),那么到時我們只需更換相應(yīng)的業(yè)務(wù)邏輯Bean就可以了,而對別的都不夠成影響,這對以后的系統(tǒng)升級無疑是一件很好的事。在系統(tǒng)的推理過程中,勢必會有很多的會話信息,這里我們用系統(tǒng)狀態(tài)Bean來保存跨越多個HTTP請求的單個客戶的會話信息。

????視圖使用JSP建立,用JSP產(chǎn)生XML文件,再由XLST把XML文件轉(zhuǎn)換成HTML文件,然后傳送到客戶端。

????控制器處理所有發(fā)送到Struts的HTTP請求。根據(jù)對病和蟲的不同診斷需求,他截取的請求分發(fā)到相應(yīng)的動作類,負(fù)責(zé)用相應(yīng)的請求參數(shù)填充FormBean并傳給動作類。在動作類通過訪問Model中的不同業(yè)務(wù)邏輯Bean實(shí)現(xiàn)核心業(yè)務(wù)邏輯后,根據(jù)動作類的返回值把控制權(quán)交給相應(yīng)的JSP文件,生成試圖。

????以上是系統(tǒng)的主體框架設(shè)計,在系統(tǒng)的開發(fā)中是按圖一的各個模塊來開發(fā),將系統(tǒng)分為前臺和后臺兩部分,在前臺也就是客戶的登陸和推理界面,然后提供系統(tǒng)的搜索功能。后臺則為系統(tǒng)管理員對整個系統(tǒng)的維護(hù)功能。在整個系統(tǒng)的開發(fā)過程中就是按照系統(tǒng)的主體框架路線和系統(tǒng)的構(gòu)成圖兩條線來做的,系統(tǒng)整體層次清晰,結(jié)構(gòu)合理,把各個模塊都組件化,使得系統(tǒng)在后續(xù)的維護(hù)和升級中都變的比較容易。

5.結(jié)束語?

????系統(tǒng)基于Web及人工智能,可大大縮小“發(fā)現(xiàn)——診斷”的時滯。由于在整個診斷過程中需要對大量數(shù)據(jù)進(jìn)行傳遞和處理,而Java和XML的完美組合正使得這一問題得到了很好的解決。系統(tǒng)的松耦合性也使系統(tǒng)以后的升級中得以順利進(jìn)行,在升級部分只需更換相應(yīng)組件即可,而對系統(tǒng)的其他部分沒有影響,免去了傳統(tǒng)系統(tǒng)升級中的“牽一發(fā)而動全身”之痛。

????現(xiàn)在信息技術(shù)的發(fā)展使得遠(yuǎn)程診斷成為以后的發(fā)展趨勢,為了保證診斷的準(zhǔn)確性和可靠性,我們還需繼續(xù)利用數(shù)據(jù)挖掘技術(shù),發(fā)現(xiàn)蘊(yùn)涵在歷年病蟲害發(fā)生的統(tǒng)計數(shù)據(jù)中的知識和規(guī)則,從而為診斷和決策支持提供服務(wù)。隨著數(shù)據(jù)量的不端增加,全文的檢索速度也慢慢的成為系統(tǒng)的瓶頸,以后將用lucene來完成對大量信息的全文索引/檢索功能,使系統(tǒng)性能更為強(qiáng)大。

參考文獻(xiàn)?

[1] http://www-900.ibm.com/developerWorks/cn/java/j-strutscol

[2] http://gceclub.sun.com.cn/NASApp/sme/controller/teclist?tid=0102

[3] http://www.hibernate.org/

[4] http://java.sun.com/j2ee/

[5] Stephen Asbury,Scott R.Weiner著.王強(qiáng),田原,王軍,等譯.Java企業(yè)級應(yīng)用開發(fā)指南.機(jī)械工業(yè)出版社,中信出版社,2004

[6] 封傳紅,廖華明,羅林明,涂建華.病蟲生物災(zāi)害遠(yuǎn)程診斷技術(shù)探討. 中國植保導(dǎo)刊,2004(5)

?

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。