版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 目 錄</b></p><p><b> 摘 要I</b></p><p> ABSTRACTII</p><p><b> 第一章 緒論1</b></p><p> 1.1 選題的背景1</p><p&g
2、t; 1.2 國(guó)內(nèi)外狀況2</p><p> 1.3 問(wèn)題的提出3</p><p> 1.4 主要研究?jī)?nèi)容3</p><p> 1.5 論文的組織結(jié)構(gòu)3</p><p> 第二章 相關(guān)理論及技術(shù)介紹5</p><p> 2.1 開(kāi)發(fā)平臺(tái)5</p><p> 2.1.1
3、 MyEclipse5</p><p> 2.1.2 NetBeans5</p><p> 2.2 相關(guān)技術(shù)5</p><p> 2.2.1 XML5</p><p> 2.2.2 Dom4j6</p><p> 2.2.3 SOAP6</p><p> 2.2.4 We
4、bService7</p><p> 2.2.5 WSDL7</p><p> 2.2.6 Velocity8</p><p> 2.2.7 Swing8</p><p> 2.2.8 Java反射9</p><p> 2.3 本章小結(jié)9</p><p> 第三章 服務(wù)開(kāi)
5、發(fā)平臺(tái)的總體框架10</p><p> 3.1 前臺(tái)可視化IDE的設(shè)計(jì)11</p><p> 3.2 后臺(tái)的總體設(shè)計(jì)12</p><p> 3.2.1 后臺(tái)RuntimeContainer容器管理模塊設(shè)計(jì)概述13</p><p> 3.2.2 后臺(tái)UDDI注冊(cè)中心模塊設(shè)計(jì)概述14</p><p>
6、3.2.3 后臺(tái)SP Agent Builder代碼生成模塊設(shè)計(jì)概述16</p><p> 3.3 本章小結(jié)20</p><p> 第四章 服務(wù)生成工具SP Agent Builder的設(shè)計(jì)與實(shí)現(xiàn)21</p><p> 4.1 三層X(jué)ML schema設(shè)計(jì)與解析模塊的設(shè)計(jì)與實(shí)現(xiàn)21</p><p> 4.1.1 功能層X(jué)ML
7、schema的設(shè)計(jì)21</p><p> 4.1.2 表示層X(jué)ML schema 的設(shè)計(jì)24</p><p> 4.1.3 傳輸層X(jué)ML schema 的設(shè)計(jì)24</p><p> 4.1.4 三層X(jué)ML文件解析的設(shè)計(jì)與實(shí)現(xiàn)26</p><p> 4.2 數(shù)據(jù)轉(zhuǎn)換模塊的設(shè)計(jì)與實(shí)現(xiàn)28</p><p>
8、 4.2.1 目標(biāo)數(shù)據(jù)格式介紹28</p><p> 4.2.2 對(duì)象與目標(biāo)數(shù)據(jù)格式之間的轉(zhuǎn)換31</p><p> 4.3 傳輸代理模塊的設(shè)計(jì)與實(shí)現(xiàn)35</p><p> 4.3.1 網(wǎng)絡(luò)傳輸協(xié)議36</p><p> 4.3.2 傳輸代理的運(yùn)作流程38</p><p> 4.4 代碼生成器模塊
9、的設(shè)計(jì)與實(shí)現(xiàn)39</p><p> 4.4.1 模板的設(shè)計(jì)39</p><p> 4.4.2 代碼生成的運(yùn)作流程40</p><p> 4.5 可視化編輯器模塊的設(shè)計(jì)與實(shí)現(xiàn)41</p><p> 4.5.1 可視化編輯器的設(shè)計(jì)41</p><p> 4.5.2 可視化編輯器的運(yùn)作流程42</
10、p><p> 4.5 本章小結(jié)42</p><p> 第五章 系統(tǒng)實(shí)現(xiàn)44</p><p> 4.1 創(chuàng)建服務(wù)44</p><p> 4.2 編輯服務(wù)48</p><p> 4.3 刪除服務(wù)50</p><p> 4.4 本章小結(jié)51</p><p>
11、<b> 第六章 結(jié)論52</b></p><p><b> 致 謝53</b></p><p><b> 參考文獻(xiàn)54</b></p><p><b> 畢業(yè)設(shè)計(jì)小結(jié)56</b></p><p> 附錄A XML數(shù)據(jù)類型和Java數(shù)
12、據(jù)類型之間的映射規(guī)則57</p><p> 附錄B 功能層X(jué)ML schema的設(shè)計(jì)58</p><p> 附錄C 表示層X(jué)ML schema的設(shè)計(jì)60</p><p> 附錄D 傳輸層X(jué)ML schema的設(shè)計(jì)61</p><p> 附錄E TXT文本的格式介紹63</p><p><
13、b> 摘 要</b></p><p> 建立社區(qū)電子服務(wù)平臺(tái),作為建設(shè)數(shù)字城市的重要環(huán)節(jié)之一,得到了眾多服務(wù)提供商的支持。因此,能否將服務(wù)提供商所提供的服務(wù)高效快速地接入服務(wù)平臺(tái),將會(huì)極大地影響到社區(qū)電子服務(wù)平臺(tái)的工作效率,而將服務(wù)接入平臺(tái)的關(guān)鍵在于為服務(wù)生成對(duì)應(yīng)的服務(wù)代理,負(fù)責(zé)服務(wù)頁(yè)面和服務(wù)器之間的通訊。</p><p> 服務(wù)生成工具,能根據(jù)服務(wù)信息自動(dòng)生成服
14、務(wù)代理。它由可視化編輯器模塊、三層X(jué)ML的設(shè)計(jì)與解析模塊、傳輸代理模塊、數(shù)據(jù)轉(zhuǎn)換模塊和代碼生成器模塊組成??梢暬庉嬈髂K負(fù)責(zé)服務(wù)信息的采集;三層X(jué)ML (功能層、表示層和傳輸層)設(shè)計(jì)模塊負(fù)責(zé)規(guī)范服務(wù)信息的存儲(chǔ)格式;解析模塊負(fù)責(zé)解析出三層X(jué)ML文件中的服務(wù)信息;傳輸代理模塊負(fù)責(zé)傳輸不同協(xié)議的信息;數(shù)據(jù)轉(zhuǎn)換模塊負(fù)責(zé)將信息轉(zhuǎn)換成與服務(wù)器約定的不同格式;代碼生成器模塊負(fù)責(zé)生成服務(wù)代理的代碼。</p><p> 服務(wù)生
15、成工具能夠?yàn)椴捎貌煌瑐鬏攨f(xié)議和不同通訊格式的服務(wù),生成服務(wù)代理,解決了將服務(wù)快速接入平臺(tái)的主要問(wèn)題。同時(shí)它具有很好的拓展性、靈活性。本文所完成的設(shè)計(jì)已用于陜西利安信息傳播有限公司新一代利安電超市的建設(shè),取得了很好的應(yīng)用效果。</p><p> 關(guān)鍵詞:數(shù)字城市,服務(wù)提供商,服務(wù)生成工具,服務(wù)代理</p><p><b> ABSTRACT</b></p>
16、;<p> As one of the important means of building Digital City, the building of the community e-service platform, has gained many service providers’ support. Therefore, whether the platform can make link with the S
17、P expeditiously, may influence the efficiency of the platform. The key of making link with the SP is generating the corresponding service agents for the service for the communication between the service page and the serv
18、er.</p><p> The SP Agent Builder can automatically build the agent according to the service information. It is made up of the visual editor module, the three-layers XML design module and parser module, tran
19、sfer agent module, data conversion module and the code generator module. The visual editor module is responsible for collecting service information; the three-layers XML (the functional layer, said layer and transport la
20、yer) design module is responsible for standardizing service information’s storage form</p><p> SP Agent Builder can build the agent for the service using different transportation protocol and different form
21、at, so it solves the main problem of making link with SP rapidly and it is expansible, flexible. It also has been used to make a new platform of Line Community Charges Supermarket for Shaanxi Line Co., Ltd. and achieved
22、good results.</p><p> KEY WORDS:digital city, service provider, SP agent builder, agent</p><p><b> 第一章 緒論</b></p><p><b> 1.1 選題的背景</b></p><p&g
23、t; 社區(qū)是指社會(huì)的一個(gè)區(qū)域,1887年由德國(guó)社會(huì)學(xué)家滕尼斯最早提出,英文名稱叫community?!吧鐓^(qū)”這個(gè)名詞最早從20世紀(jì)30年代由國(guó)外引入中國(guó),自20世紀(jì)80年代始,“社區(qū)”一詞逐漸風(fēng)靡全國(guó)。在城市信息化建設(shè)的過(guò)程中,社區(qū)作為城市的基本組成單元,與居民的生活密切相關(guān),并且發(fā)揮著越來(lái)越重要的作用。數(shù)字化社區(qū)服務(wù)[1~4]這一概念正是為了順應(yīng)城市居民居住環(huán)境日趨社區(qū)化的發(fā)展趨勢(shì),使普通老百姓能夠盡享現(xiàn)代高科技帶來(lái)的安全、高效和便
24、捷的服務(wù)而提出的。數(shù)字化社區(qū)服務(wù)平臺(tái)是為數(shù)字社區(qū)居民提供數(shù)字化應(yīng)用的綜合型的平臺(tái),包括繳費(fèi)管理、飛機(jī)訂票、業(yè)務(wù)辦理等平臺(tái),它主要由硬件設(shè)備、數(shù)字化社區(qū)服務(wù)軟件平臺(tái)和網(wǎng)絡(luò)基礎(chǔ)設(shè)施等幾個(gè)方面組成。</p><p> 建設(shè)數(shù)字化城市社區(qū)服務(wù)平臺(tái)的意義:</p><p> 數(shù)字化城市社區(qū)服務(wù),這一創(chuàng)新模式符合黨和政府的便民、利民的社區(qū)服務(wù)發(fā)展方向和精神。</p><p>
25、; 數(shù)字化城市社區(qū)服務(wù)平臺(tái)的一站式服務(wù)模式能有效地解決社區(qū)居民“繳費(fèi)難”、“ 服務(wù)難”的問(wèn)題,真正實(shí)現(xiàn)了電子商務(wù)零距離為民服務(wù)的理念,居民不用出小區(qū)就能享受到一站式服務(wù)的便利。</p><p> 由于該項(xiàng)目是以高科技信息化技術(shù)為基礎(chǔ)結(jié)合深入社區(qū)服務(wù)網(wǎng)點(diǎn)的實(shí)體運(yùn)營(yíng)的創(chuàng)新模式,不僅擴(kuò)大了生產(chǎn)力,還解決了一大批高校畢業(yè)生、下崗職工及殘疾人再就業(yè)問(wèn)題。</p><p> 對(duì)廣大運(yùn)營(yíng)商而言,數(shù)
26、字化城市社區(qū)服務(wù)平臺(tái)這一創(chuàng)新模式的首要優(yōu)點(diǎn)是資金安全,其次是渠道建設(shè)零投入無(wú)風(fēng)險(xiǎn),并且節(jié)省了大量的二級(jí)管理成本,因此吸引了眾多的運(yùn)營(yíng)商及公用事業(yè)單位的加入,使數(shù)字化城市社區(qū)服務(wù)平臺(tái)的造血功能得到了有力的加強(qiáng)。</p><p> 避免了上游各運(yùn)營(yíng)商網(wǎng)點(diǎn)的重復(fù)建設(shè),實(shí)現(xiàn)了社會(huì)資源的節(jié)約。</p><p><b> 1.2 問(wèn)題的提出</b></p>&l
27、t;p> 信息高速公路是一種高速多媒體傳輸系統(tǒng),它能在全球甚至更大的范圍內(nèi)傳輸聲像圖文并茂的多媒體信息。由美國(guó)首先提出的“信息高速公路”是指數(shù)字化大容量光纖通信網(wǎng)絡(luò),用以把政府、企業(yè)、大學(xué)、科研機(jī)構(gòu)和家庭的計(jì)算機(jī)聯(lián)網(wǎng)。一些國(guó)家和公司還提出利用衛(wèi)星架設(shè)“空中信息高速公路”的設(shè)想(北京科普之窗,2000)。這一時(shí)代的到來(lái)使得新聞在網(wǎng)絡(luò)中傳輸成為可能。今天上網(wǎng)看新聞已經(jīng)是人們?nèi)粘I畹囊徊糠?,快速及時(shí)的瀏覽新聞,能拓展人們的生活視野。
28、因此越來(lái)越多的企事業(yè)單位都很重視新聞網(wǎng)站的建設(shè)。</p><p> 校園新聞發(fā)布系統(tǒng)有利于校園網(wǎng)新聞的及時(shí)傳播,及時(shí)傳達(dá)最新動(dòng)態(tài),學(xué)術(shù)研究成功,是資源快速共享的一種方式。因此研究校園網(wǎng)新聞發(fā)布系統(tǒng)對(duì)于學(xué)校建設(shè)與發(fā)展具有重要意義,本文所闡述的系統(tǒng)就是在這樣的前提下提出的。該系統(tǒng)要求能添加新聞、刪除新聞、更新新聞,對(duì)一般用戶能查看、檢索新聞。</p><p> 1.3 校園新聞發(fā)布系統(tǒng)的現(xiàn)
29、狀</p><p> 今天校園網(wǎng)絡(luò)迅速普及,校園網(wǎng)新聞發(fā)布系統(tǒng)也層出不窮,經(jīng)Google搜索,約有1,110,000項(xiàng)符合“校園新聞發(fā)布”的查詢結(jié)果,約有522,000項(xiàng)符合“校園網(wǎng)新聞發(fā)布系統(tǒng)”的查詢結(jié)果。這說(shuō)明了校園網(wǎng)新聞的發(fā)布,隨著互聯(lián)網(wǎng)的快速發(fā)展也迅速發(fā)展起來(lái)。而現(xiàn)行的校園網(wǎng)新聞發(fā)布系統(tǒng)大多是采用ASP技術(shù)組建的。例如:第三軍醫(yī)大學(xué)校園新聞網(wǎng)、華東交通大學(xué)校園新聞發(fā)布系統(tǒng)等等。</p>&
30、lt;p> 1.4 主要研究?jī)?nèi)容</p><p> 1.5 論文的組織結(jié)構(gòu)</p><p> 本文主要分成六章,各章的主要內(nèi)容如下:</p><p> :緒論。介紹了課題的背景以及國(guó)內(nèi)外的狀況,提出本文研究的問(wèn)題,并介紹了本文的研究?jī)?nèi)容。</p><p> ?。合嚓P(guān)理論及技術(shù)介紹。介紹了研究課題所用的主要工具及相關(guān)的技術(shù)知識(shí)點(diǎn)。
31、</p><p> ?。荷鐓^(qū)電子服務(wù)平臺(tái)的服務(wù)生成平臺(tái)的總體架構(gòu)。介紹了服務(wù)生成平臺(tái)的總體框架。介紹了服務(wù)生成平臺(tái)的前臺(tái)和后臺(tái):前臺(tái)是一個(gè)能迅速定制出客戶端頁(yè)面的一個(gè)可視化的IDE;后臺(tái)負(fù)責(zé)生成和管理服務(wù)代理。</p><p> ?。悍?wù)生成工具SP Agent Builder的設(shè)計(jì)和實(shí)現(xiàn)。介紹了SP Agent的三層X(jué)ML文件格式的設(shè)計(jì)、可視化編輯器組件、代碼生成器組件、傳輸代理組件、三
32、層X(jué)ML文件的解析組件及數(shù)據(jù)轉(zhuǎn)換等組件。</p><p> :系統(tǒng)實(shí)現(xiàn)。用實(shí)例展示了SP Agent Builder生成agent的流程。</p><p> ?。嚎偨Y(jié)和展望??偨Y(jié)了本文的研究?jī)?nèi)容和工作,對(duì)系統(tǒng)的進(jìn)一步完善和優(yōu)化提出了建議和展望。</p><p> 第二章 相關(guān)理論及技術(shù)介紹</p><p><b> 2.1
33、開(kāi)發(fā)平臺(tái)</b></p><p> 2.1.1 MyEclipse </p><p> MyEclipse是Eclipse的一個(gè)插件,也是一款功能強(qiáng)大的J2EE集成開(kāi)發(fā)環(huán)境。利用它可以在數(shù)據(jù)庫(kù)和J2EE的開(kāi)發(fā)、發(fā)布以及應(yīng)用程序服務(wù)器的整合方面極大的提高工作效率。它是功能豐富的J2EE集成開(kāi)發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測(cè)試、出錯(cuò)和發(fā)布功能。最新發(fā)布的MyEclipse 7
34、.0具備可視化Swing設(shè)計(jì)器,完整支持HTML、XML、Struts、JSF、CSS、Schema、JavaScript、SQL、AJAX、Hibernate等技術(shù)。</p><p> 本項(xiàng)目使用該平臺(tái)開(kāi)發(fā)后臺(tái)的服務(wù)生成工具SP Agent Builder。</p><p> 2.1.2 NetBeans</p><p> NetBeans是一個(gè)全功能的開(kāi)放
35、源碼的Java IDE,可以幫助開(kāi)發(fā)人員編寫(xiě)、編譯、調(diào)試和部署Java應(yīng)用,并將版本控制和XML編輯融入其眾多功能之中。NetBeans 可支持Java 2平臺(tái)標(biāo)準(zhǔn)版(J2SE)應(yīng)用的創(chuàng)建、采用JSP和Servlet的2層Web應(yīng)用的創(chuàng)建,以及用于2層Web應(yīng)用的API及軟件的核心組的創(chuàng)建。所有這些都為Java開(kāi)發(fā)人員創(chuàng)造了一個(gè)可擴(kuò)展的開(kāi)源的Java IDE,以支持他們?cè)诟髯运x擇的環(huán)境中從事開(kāi)發(fā)工作。</p><p
36、> NetBeans是一個(gè)為軟件開(kāi)發(fā)者而設(shè)計(jì)的自由、開(kāi)放的IDE,你可以在這里獲得許多需要的工具,包括建立桌面應(yīng)用、企業(yè)級(jí)應(yīng)用、WEB開(kāi)發(fā)和Java移動(dòng)應(yīng)用程序開(kāi)發(fā)、C/C++等。</p><p> 本項(xiàng)目使用此平臺(tái)來(lái)開(kāi)發(fā)一個(gè)能夠快速定制用戶頁(yè)面的IDE。</p><p><b> 2.2 相關(guān)技術(shù)</b></p><p><
37、b> 2.2.1 XML</b></p><p> XML[5~11]可拓展標(biāo)記語(yǔ)言(Xtensible Markup Language),是一種具有數(shù)據(jù)描述功能、高度結(jié)構(gòu)性及可驗(yàn)證性的置標(biāo)語(yǔ)言,和HTML一樣同屬ISO8879標(biāo)準(zhǔn)SGML的簡(jiǎn)化子集。互聯(lián)網(wǎng)發(fā)展初期,HTML以簡(jiǎn)單精練的語(yǔ)法、極易掌握的通用性和易學(xué)性使Web得以普及發(fā)展以至今日輝煌。但是,隨著Web數(shù)據(jù)的海量化和實(shí)際應(yīng)用需求
38、的發(fā)展,HTML弊端日益顯露:數(shù)據(jù)和格式分離困難;缺乏空間立體面,處理圖形、圖像、音頻、視頻等多媒體能力較弱;標(biāo)記有限,不能用戶自定義擴(kuò)展。于是,XML誕生了,并迅速發(fā)展成為W3C(World Wide Web Consortium,萬(wàn)維網(wǎng)聯(lián)盟)的標(biāo)準(zhǔn)。它保留了很多SGML(Standard Generalized Markup Language,標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言)標(biāo)準(zhǔn)的優(yōu)點(diǎn),具有可擴(kuò)展性、結(jié)構(gòu)化、平臺(tái)無(wú)關(guān)性等優(yōu)勢(shì)。在描述數(shù)據(jù)內(nèi)容同時(shí)能
39、突出對(duì)結(jié)構(gòu)的描述,從而體現(xiàn)出數(shù)據(jù)之間的關(guān)系。這種組織的數(shù)據(jù)對(duì)于應(yīng)用程序和用戶都是友好的、可操作的。XML現(xiàn)以成為當(dāng)前處理結(jié)構(gòu)化文檔信息的有力工具之一。</p><p> 基于它的平臺(tái)無(wú)關(guān)性、結(jié)構(gòu)化等優(yōu)勢(shì),本文將應(yīng)用XML文件來(lái)實(shí)現(xiàn)對(duì)服務(wù)的描述。</p><p> 2.2.2 Dom4j</p><p> Dom4j是一個(gè)Java的XML API,用來(lái)讀寫(xiě)XML
40、文件。Dom4j是一個(gè)非常優(yōu)秀的Java XML API,具有性能優(yōu)異、功能強(qiáng)大和易于使用的特點(diǎn)。Dom4j是一個(gè)易用的、開(kāi)源的庫(kù),它應(yīng)用于Java平臺(tái),采用了Java集合框架并完全支持DOM,SAX和JAXP。它提供了大量的接口,造就了它更加具有靈活性,更易操作性的特點(diǎn)。</p><p> 基于它的靈活性和易于操作性,本文將應(yīng)用Dom4j來(lái)實(shí)現(xiàn)三層X(jué)ML文件的解析模塊。</p><p>
41、; 2.2.3 SOAP</p><p> SOAP就是簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(Simple Object Access Protocol ),是一種在獨(dú)立傳輸方式下交換信息的輕量級(jí)協(xié)議。在分散或分布式的環(huán)境下,它為遠(yuǎn)程過(guò)程調(diào)用和獲得XML形式相應(yīng)定義了規(guī)范。SOAP 可以和現(xiàn)存的許多因特網(wǎng)協(xié)議和格式結(jié)合使用,包括超文本傳輸協(xié)議(HTTP),簡(jiǎn)單郵件傳輸協(xié)議(SMTP),多用途網(wǎng)際郵件擴(kuò)充協(xié)議(MIME)。它還支持
42、從消息系統(tǒng)到遠(yuǎn)程過(guò)程調(diào)用(RPC)等大量的應(yīng)用程序。它也允許我們使用XML在通過(guò)低層Internet協(xié)議連接的系統(tǒng)之間進(jìn)行通信。它為通過(guò)網(wǎng)絡(luò)消息傳輸?shù)腦ML信息提供了標(biāo)準(zhǔn)的信封,并為這類消息提供了可選的約定,是Web服務(wù)傳輸XML消息的標(biāo)準(zhǔn)協(xié)議。</p><p> SOAP消息基本上是從發(fā)送端到接收端的單向傳輸,但他們常常結(jié)合起來(lái)執(zhí)行類似于請(qǐng)求/應(yīng)答的模式。所有的SOAP消息都使用XML編碼。SOAP消息主要包
43、括四個(gè)部分:SOAP封裝(envelop),封裝定義了一個(gè)描述消息中的內(nèi)容是什么,是誰(shuí)發(fā)送的,誰(shuí)應(yīng)當(dāng)接受并處理它,以及如何處理它們的框架;SOAP編碼規(guī)則(encoding rules),用于表示應(yīng)用程序需要使用的數(shù)據(jù)類型的實(shí)例;SOAP RPC表示(RPC representation),表示遠(yuǎn)程過(guò)程調(diào)用和應(yīng)答的協(xié)定;SOAP綁定(binding),使用底層協(xié)議交換信息。</p><p> 2.2.4 Web
44、Service</p><p> Web服務(wù)(Web Service)是基于XML和HTTPS的一種服務(wù),其通信協(xié)議主要基于SOAP,服務(wù)的描述通過(guò)WSDL,通過(guò)UDDI來(lái)發(fā)現(xiàn)和獲得服務(wù)的元數(shù)據(jù)[12~18]。</p><p> WebService是一種新的web應(yīng)用程序分支,他們是自包含、自描述、模塊化的應(yīng)用,可以發(fā)布、定位、通過(guò)web調(diào)用。Web Service可以執(zhí)行從簡(jiǎn)單的請(qǐng)
45、求到復(fù)雜商務(wù)處理的任何功能。一旦部署以后,其他Web Service應(yīng)用程序可以發(fā)現(xiàn)并調(diào)用它部署的服務(wù)。實(shí)際上,WebService的主要目標(biāo)是跨平臺(tái)的可互操作性。為了達(dá)到這一目標(biāo),WebService完全基于XML(可擴(kuò)展標(biāo)記語(yǔ)言)、XSD(XMLSchema)等獨(dú)立于平臺(tái)、獨(dú)立于軟件供應(yīng)商的標(biāo)準(zhǔn),是創(chuàng)建可互操作的、分布式應(yīng)用程序的新平臺(tái)。</p><p> 2.2.5 WSDL</p><
46、;p> Web服務(wù)定義語(yǔ)言(Web Services Definition Language,WSDL)是一個(gè)建議的標(biāo)準(zhǔn),用于描述Web服務(wù)的技術(shù)調(diào)用語(yǔ)法。WSDL定義了一套基于 XML的語(yǔ)法,將Web服務(wù)描述為能夠進(jìn)行消息交換的服務(wù)訪問(wèn)點(diǎn)的集合。WSDL就是描述XML、Web服務(wù)的標(biāo)準(zhǔn)XML格式。它用一種和具體語(yǔ)言無(wú)關(guān)的抽象方式定義了給定Web服務(wù)收發(fā)的有關(guān)操作和消息。WSDL服務(wù)描述是一個(gè)XML文檔,它與WSDL模式(sch
47、ema)的定義一致。WSDL文檔并不是完整的服務(wù)描述,而只包括了服務(wù)描述任務(wù)的較低層次,即:服務(wù)接口的原始技術(shù)描述。本質(zhì)上,WSDL描述說(shuō)明的是Web服務(wù)的以下三個(gè)基本屬性:</p><p> 服務(wù)做些什么--服務(wù)所提供的操作(方法);</p><p> 如何訪問(wèn)服務(wù)--數(shù)據(jù)格式詳情以及訪問(wèn)服務(wù)操作的必要協(xié)議;</p><p> 服務(wù)位于何處--由特定協(xié)議決定
48、的網(wǎng)絡(luò)地址,如URL;</p><p> WSDL文檔將Web服務(wù)定義為服務(wù)訪問(wèn)點(diǎn)或端口的集合。在WSDL中,由于服務(wù)訪問(wèn)點(diǎn)和消息的抽象定義已從具體的服務(wù)部署或數(shù)據(jù)格式綁定中分離出來(lái),因此可以對(duì)抽象定義進(jìn)行再次使用:消息,指對(duì)交換數(shù)據(jù)的抽象描述;端口類型指操作的抽象集合。用于特定端口類型的具體協(xié)議和數(shù)據(jù)格式規(guī)范構(gòu)成了可以再次使用的綁定。將Web訪問(wèn)地址與可再次使用的綁定相關(guān)聯(lián),可以定義一個(gè)端口,而端口的集合則定
49、義為服務(wù)。</p><p> 2.2.6 Velocity</p><p> Velocity是一個(gè)基于Java的模板引擎(template engine)。它允許任何人僅僅簡(jiǎn)單的使用模板語(yǔ)言(template language)來(lái)引用由Java代碼定義的對(duì)象。當(dāng)Velocity應(yīng)用于web開(kāi)發(fā)時(shí),界面設(shè)計(jì)人員可以和Java程序開(kāi)發(fā)人員同步開(kāi)發(fā)一個(gè)遵循MVC架構(gòu)的web站點(diǎn),也就是說(shuō),
50、頁(yè)面設(shè)計(jì)人員可以只關(guān)注頁(yè)面的顯示效果,而由Java程序開(kāi)發(fā)人員關(guān)注業(yè)務(wù)邏輯編碼。Velocity將Java代碼從web頁(yè)面中分離出來(lái),這樣為web站點(diǎn)的長(zhǎng)期維護(hù)提供了便利,同時(shí)也為我們?cè)贘SP和PHP之外又提供了一種可選的方案。Velocity的能力遠(yuǎn)不止web站點(diǎn)開(kāi)發(fā)這個(gè)領(lǐng)域,例如,它可以從模板(template)產(chǎn)生SQL和PostScript、XML,它也可以被當(dāng)作一個(gè)獨(dú)立工具來(lái)產(chǎn)生源代碼和報(bào)告,或者作為其他系統(tǒng)的集成組件使用。&
51、lt;/p><p> 通過(guò)模板生成代碼是比較好的選擇,模板在某種意義上來(lái)說(shuō)就是配置文件的一種,當(dāng)生成文件內(nèi)容修改后,用戶不需要修改源程序,只需要修改模板文件即可,提高了代碼的可維護(hù)性。</p><p> 本文將使用Velocity技術(shù)設(shè)計(jì)實(shí)現(xiàn)SP Agent Builder的代碼生成器模塊。</p><p> 2.2.7 Swing</p><
52、p> Swing[19]是一個(gè)用于開(kāi)發(fā)Java應(yīng)用程序用戶界面的開(kāi)發(fā)工具包。由所有Java圖形用戶界面(GUI)組件所構(gòu)成,可運(yùn)行在任意支持Java虛擬機(jī)(JVM)的本地平臺(tái)上。由于這些組件全都是用Java語(yǔ)言編寫(xiě)的,因此它們可以提供比本地平臺(tái)GUI組件更多的功能。它以抽象窗口工具包(AWT)為基礎(chǔ)使跨平臺(tái)應(yīng)用程序可以使用任何可插拔的外觀風(fēng)格。Swing開(kāi)發(fā)人員只用很少的代碼就可以利用Swing豐富、靈活的功能和模塊化組件來(lái)創(chuàng)建
53、優(yōu)雅的用戶界面。同時(shí)通過(guò)使用Swing的Jtree組件,可以較容易的滿足研發(fā)出一個(gè)可視化編輯器的要求。</p><p> 本文將使用Swing技術(shù)設(shè)計(jì)實(shí)現(xiàn)SP Agent Builder的可視化編輯器模塊。</p><p> 2.2.8 Java反射</p><p> Reflection(反射) 是Java被視為動(dòng)態(tài)語(yǔ)言的一個(gè)關(guān)鍵性質(zhì)。這個(gè)機(jī)制允許程序在運(yùn)行
54、時(shí)透過(guò)Reflection APIs取得任何一個(gè)已知名稱的class的內(nèi)部信息,允許運(yùn)行中的 Java 程序?qū)ψ陨磉M(jìn)行檢查,或者說(shuō)“自審”,并能直接操作程序的內(nèi)部屬性。通俗的說(shuō),反射就是根據(jù)給出的類名(字符串)、方法名、屬性等信息來(lái)生成對(duì)象、方法、屬性。這種編程方式可以讓對(duì)象在生成時(shí)才決定要生成哪一種對(duì)象。反射是Java獨(dú)有的特性,在其它的程序設(shè)計(jì)語(yǔ)言中根本就不存在這一特性。例如,Pascal、C 或者 C++ 中就沒(méi)有辦法在程序中獲得
55、函數(shù)定義相關(guān)的信息。</p><p> 本文將使用Java反射技術(shù)設(shè)計(jì)實(shí)現(xiàn)SP Agent Builder的數(shù)據(jù)轉(zhuǎn)換模塊。</p><p><b> 2.3 本章小結(jié)</b></p><p> 本章介紹了課題研究過(guò)程中使用的開(kāi)發(fā)平臺(tái)MyEclipse、NetBeans,以及使用到的技術(shù),如XML、Dom4j、SOAP、WebService
56、等,并介紹了它們?cè)陧?xiàng)目中的應(yīng)用。</p><p> 第三章 服務(wù)開(kāi)發(fā)平臺(tái)的總體框架</p><p> 社區(qū)電子服務(wù)平臺(tái)是利用面向服務(wù)的架構(gòu)(SOA)、Web Service技術(shù)、XML語(yǔ)言等當(dāng)今最前沿技術(shù),結(jié)合互聯(lián)網(wǎng)技術(shù),對(duì)分屬于不同行業(yè)領(lǐng)域的社會(huì)資源進(jìn)行整合的服務(wù)集成平臺(tái)。所有與服務(wù)提供商交互的數(shù)據(jù)信息都通過(guò)平臺(tái)中的服務(wù)代理提供一系列的標(biāo)準(zhǔn)接口進(jìn)行復(fù)雜數(shù)據(jù)的傳輸。社區(qū)電子服務(wù)平臺(tái)是一
57、個(gè)龐大的系統(tǒng),社區(qū)瀏覽器終端使用CPK等技術(shù)進(jìn)行身份驗(yàn)證,用戶登錄社區(qū)電子服務(wù)系統(tǒng),使用綜合電子服務(wù)。服務(wù)提供商的接入是通過(guò)社區(qū)電子服務(wù)平臺(tái)的服務(wù)適配器來(lái)實(shí)現(xiàn)的,服務(wù)適配器可以方便快捷的實(shí)現(xiàn)服務(wù)的接入、整合等。另外社區(qū)電子服務(wù)系統(tǒng)還有一系列的支撐子系統(tǒng)來(lái)實(shí)現(xiàn)其運(yùn)行,如OA系統(tǒng)、支付系統(tǒng)、服務(wù)平發(fā)平臺(tái)等,為用戶提供綜合電子信息服務(wù)。</p><p> 圖 3 - 1 社區(qū)電子服務(wù)平臺(tái)的總體架構(gòu)</p>
58、<p> 本文研究的主要內(nèi)容是社區(qū)電子服務(wù)平臺(tái)的核心部件——服務(wù)開(kāi)發(fā)平臺(tái)中的服務(wù)生成工具SP Agent Builder。服務(wù)開(kāi)發(fā)平臺(tái)可以分為前臺(tái)和后臺(tái)兩個(gè)部分:前臺(tái)指的是一個(gè)能迅速定制出客戶端頁(yè)面的一個(gè)可視化的開(kāi)發(fā)工具;后臺(tái)負(fù)責(zé)生成和管理服務(wù)代理,它是由SP Agent Builder (服務(wù)代理生成工具)、RuntimeContainer(管理容器)和UDDI注冊(cè)中心組成。SP Agent Builder是本文的研究
59、重點(diǎn),開(kāi)發(fā)工程師可以利用此服務(wù)代理生成工具,將第三方SP(Service Provider)提供的服務(wù)信息快速的封裝為服務(wù)代理(Agent)供前臺(tái)調(diào)用。管理容器RuntimeContainer用來(lái)管理生成的服務(wù)代理,而UDDI用來(lái)存儲(chǔ)生成的服務(wù)代理。前后臺(tái)的關(guān)系如圖3-2</p><p> 圖 3 - 2 服務(wù)生成平臺(tái)的前后臺(tái)關(guān)系圖</p><p> 3.1 前臺(tái)可視化IDE的設(shè)計(jì)&l
60、t;/p><p> 前臺(tái)可視化IDE是一個(gè)提供了無(wú)需使用人員書(shū)寫(xiě)代碼,只需拖拉組件和屬性配置,就可以生成服務(wù)頁(yè)面的可視化圖形編輯器。它使得用戶可以通過(guò)拖拽組件面板中的頁(yè)面片段的控件放到頁(yè)面上,通過(guò)屬性配置和綁定控件屬性,來(lái)生成服務(wù)頁(yè)面。前臺(tái)IDE主要具有以下幾個(gè)功能:</p><p> 利用項(xiàng)目模板定制開(kāi)發(fā)項(xiàng)目</p><p> 在新建項(xiàng)目時(shí),可以在項(xiàng)目類別中輸入
61、服務(wù)商,項(xiàng)目中選擇所需要?jiǎng)?chuàng)建的項(xiàng)目類別,比如航空售票,航空人身意外險(xiǎn)和人壽續(xù)保等項(xiàng)目。由于本系統(tǒng)使用的是visual web jsf的框架,所以用戶只需在新建項(xiàng)目的web頁(yè)新建頁(yè)面。用戶由于使用的是項(xiàng)目模板,所以項(xiàng)目中已經(jīng)預(yù)置了page和頁(yè)面導(dǎo)航。用戶只需按照其工作流程創(chuàng)建頁(yè)面即可。</p><p> Visual Web JSF頁(yè)面片段</p><p> 在組件面板中以控件形式出現(xiàn),
62、可在組件面板處編輯其id、外觀等屬性。該頁(yè)面片段組合了多個(gè)控件,如標(biāo)簽、文本字段等等,在頁(yè)面片段上不僅可以編輯頁(yè)面片段內(nèi)部單個(gè)控件的屬性、CSS屬性、位置等等,而且可以在頁(yè)面片段上綁定屬性。它使用戶免去了繁瑣的代碼編寫(xiě)。如果用戶覺(jué)得使用頁(yè)面片段的控件不適合自己的開(kāi)發(fā)習(xí)慣,也可以自己刪除或創(chuàng)建所需要的頁(yè)面片段。</p><p><b> 頁(yè)面導(dǎo)航</b></p><p&g
63、t; 頁(yè)面導(dǎo)航的配置可以在faces-config.xml的文件的頁(yè)面流中配置已建頁(yè)面之間跳轉(zhuǎn)。如果用戶不改變項(xiàng)目模板的流程和頁(yè)面,那么這里的頁(yè)面導(dǎo)航可以不用配置。當(dāng)用戶需要對(duì)項(xiàng)目進(jìn)行改動(dòng)的時(shí),用戶可以自己配置頁(yè)面導(dǎo)航,從而控制頁(yè)面跳轉(zhuǎn)過(guò)程。這個(gè)過(guò)程用戶也不需要寫(xiě)任何代碼,即可完成頁(yè)面跳轉(zhuǎn)。</p><p><b> 遠(yuǎn)程調(diào)用后臺(tái)程序</b></p><p>
64、項(xiàng)目模板中已經(jīng)內(nèi)置了調(diào)用后臺(tái)程序的代碼,用戶不需要書(shū)寫(xiě)代碼,即可調(diào)用后臺(tái)程序。</p><p><b> 項(xiàng)目模板管理</b></p><p> 本系統(tǒng)不僅提供已有的模板用來(lái)生成項(xiàng)目,而且,當(dāng)用戶覺(jué)得現(xiàn)有模板不能適應(yīng)其項(xiàng)目的開(kāi)發(fā),可以在原來(lái)的模板上進(jìn)行改動(dòng),并生成相應(yīng)的新模板添加到本系統(tǒng)中去。當(dāng)然也可以刪去該模板。</p><p> 3.
65、2 后臺(tái)的總體設(shè)計(jì)</p><p> 服務(wù)生成平臺(tái)后臺(tái)分為RuntimeContainer容器管理模塊、SP Agent Builder代碼生成模塊和UDDI注冊(cè)中心模塊。SP Agent Builder是本文的研究重點(diǎn),開(kāi)發(fā)工程師可以利用此服務(wù)代理生成工具,將第三方SP提供的服務(wù)信息快速的封裝成服務(wù)代理(Agent)供前臺(tái)調(diào)用。管理容器用來(lái)管理生成的服務(wù)代理,而UDDI用來(lái)存儲(chǔ)生成的服務(wù)代理。</p&g
66、t;<p> 3.2.1 后臺(tái)RuntimeContainer容器管理模塊設(shè)計(jì)概述</p><p> RuntimeContainer 容器管理模塊主要負(fù)責(zé)管理由后臺(tái)生成的Agent 服務(wù)。其主要功能有查詢服務(wù)狀態(tài)、激活服務(wù)、加載服務(wù)、修改服務(wù)方法、鈍化服務(wù)及日志管理等。</p><p> RuntimeContainer 容器管理模塊也提供了GUI界面,供工作人員對(duì)容
67、器內(nèi)部的Agent 服務(wù)進(jìn)行管理。下面分別截取了監(jiān)控服務(wù)界面3-3、服務(wù)狀態(tài)查詢界面3-4 和服務(wù)更改界面3-5。</p><p> 圖 3 - 3 監(jiān)控服務(wù)界面</p><p> 圖 3 - 4 服務(wù)狀態(tài)查詢界面</p><p> 圖 3 - 5 服務(wù)更改界面</p><p> 3.2.2 后臺(tái)UDDI注冊(cè)中心模塊設(shè)計(jì)概述&l
68、t;/p><p> UDDI(Universal Description Discovery and Integration)即統(tǒng)一描述、發(fā)現(xiàn)和集成協(xié)議。UDDI計(jì)劃是一個(gè)廣泛的、開(kāi)放的行業(yè)計(jì)劃,它使得商業(yè)實(shí)體能夠彼此發(fā)現(xiàn),并且定義他們?cè)鯓釉趇nternet上互相作用,并在一個(gè)全球的注冊(cè)體系架構(gòu)中共享信息。UDDI是這樣一種基礎(chǔ)的系統(tǒng)構(gòu)筑模塊,他使商業(yè)實(shí)體能夠快速、方便地使用他們自身的企業(yè)應(yīng)用軟件來(lái)發(fā)現(xiàn)合適的商業(yè)對(duì)
69、等實(shí)體,并與其實(shí)施電子化的商業(yè)貿(mào)易。UDDI同時(shí)也是Web服務(wù)集成的一個(gè)體系框架。它包含了服務(wù)描述與發(fā)現(xiàn)的標(biāo)準(zhǔn)規(guī)范。UDDI規(guī)范利用了W3C和Internet工程任務(wù)組織(IETF)的很多標(biāo)準(zhǔn)作為其實(shí)現(xiàn)基礎(chǔ),比如XML、HTTP和DNS這些協(xié)議。另外,在跨平臺(tái)的設(shè)計(jì)特性中,UDDI主要采用了已經(jīng)被提議給W3C的SOAP(Simple Object Access Protocol)規(guī)范的早期版本。</p><p>
70、 常規(guī)的UDDI包括4類數(shù)據(jù):商業(yè)實(shí)體(businessEntity)、服務(wù)信息(businessService)、綁定模板(bindingTemplate)和技術(shù)模型(tModel)。根據(jù)本項(xiàng)目服務(wù)注冊(cè)的實(shí)際需求,專用的UDDI中包含的數(shù)據(jù)僅包含商業(yè)實(shí)體( businessEntity)數(shù)據(jù),即:商業(yè)實(shí)體的詳細(xì)信息,包括服務(wù)提供商信息和服務(wù)信息兩部分??梢酝ㄟ^(guò)UDDI提供的查詢API對(duì)注冊(cè)信息執(zhí)行查詢操作,通過(guò)發(fā)布API對(duì)注冊(cè)信息執(zhí)
71、行存儲(chǔ)、更新、刪除操作。</p><p> 后臺(tái)UDDI注冊(cè)中心的部署圖如圖3-6。圖中的主要要點(diǎn)有SP Agent Builder、前臺(tái)、容器、服務(wù)監(jiān)控、反注冊(cè)和服務(wù)定位。下面將介紹一下上述要點(diǎn)的作用:</p><p> 圖 3 - 6 UDDI部署圖</p><p> SP Agent Builder:它產(chǎn)生Agent后,可以通過(guò)UDDI發(fā)布的API中的
72、 save_business方法注冊(cè)新的服務(wù)提供商信息businessEntity信息到UDDI中。SP Agent Builder通過(guò)Socket將Agent的class文件打包傳輸?shù)饺萜魉跈C(jī)器的指定目錄。</p><p> 容器:它通過(guò)UDDI的查詢API的find_business和get_businessDetail獲得一個(gè)服務(wù)提供商的完整信息,根據(jù)其服務(wù)名加載對(duì)應(yīng)的指定版本的服務(wù)代理Agent類文件
73、到Java虛擬機(jī),進(jìn)而在內(nèi)存中生成Agent實(shí)例。</p><p> 服務(wù)監(jiān)控:它通過(guò)RMI機(jī)制對(duì)運(yùn)行在容器中的Agent實(shí)例進(jìn)行生命周期管理,并將變更后的狀態(tài)信息通過(guò)發(fā)布API修改到UDDI中去。服務(wù)監(jiān)控還可以通過(guò)查詢API訪問(wèn)UDDI獲得服務(wù)提供商的基本信息和服務(wù)提供商包含的所有服務(wù)的信息。</p><p> 前臺(tái):它通過(guò)RMI機(jī)制遠(yuǎn)程定位到容器中指定的Agent實(shí)例,進(jìn)而與第三方
74、服務(wù)器通信。</p><p> 反注冊(cè):判斷容器中的指定服務(wù)的當(dāng)前狀態(tài)是否是鈍化,如果不是,首先鈍化該服務(wù),之后從內(nèi)存中銷毀該服務(wù)的Agent實(shí)例,其次容器通過(guò)發(fā)布API delete_businessEntity訪問(wèn)UDDI注冊(cè)中心,最后從外存上刪除指定的服務(wù)的注冊(cè)信息即可。</p><p> 服務(wù)定位:用RMI機(jī)制實(shí)現(xiàn)服務(wù)的代理Agent的定位。每一個(gè)服務(wù)可以產(chǎn)生多個(gè)Agent實(shí)例
75、,每當(dāng)前臺(tái)發(fā)起一個(gè)請(qǐng)求時(shí),就動(dòng)態(tài)地產(chǎn)生一個(gè)Agent實(shí)例為之服務(wù)。這樣每一個(gè)服務(wù)都有一個(gè)長(zhǎng)度動(dòng)態(tài)變化的Agent的隊(duì)列,當(dāng)一個(gè)請(qǐng)求結(jié)束后根據(jù)某種算法銷毀為之服務(wù)的Agent,這樣可以解決前臺(tái)針對(duì)同一個(gè)服務(wù)同時(shí)發(fā)出多個(gè)請(qǐng)求的并發(fā)性的問(wèn)題。</p><p> 3.2.3 后臺(tái)SP Agent Builder代碼生成模塊設(shè)計(jì)概述</p><p> SP Agent Builder代碼生成模塊
76、,是本文的重點(diǎn)研究對(duì)象,主要功能是根據(jù)SP提供的服務(wù)(包括文檔類型和Web服務(wù)類型),快速定制出Agent服務(wù)文件。SP Agent Builder 擁有三層X(jué)ML的設(shè)計(jì)與解析組件、可視化編輯器組件、數(shù)據(jù)轉(zhuǎn)換組件、代碼生成器組件和傳輸代理組件。下面簡(jiǎn)述一下SP Agent Builder的工作流程。</p><p> 當(dāng)SP提供的是一般服務(wù)時(shí), SP Agent Builder生成Agent的主要過(guò)程分為兩步:
77、</p><p> 可視化編輯器組件根據(jù)用戶輸入的SP提供的服務(wù)文件描述,生成三層X(jué)ML文件,當(dāng)用戶輸入的描述不符合設(shè)計(jì)的三層X(jué)ML的格式時(shí),提示錯(cuò)誤并讓用戶重新輸入,詳情見(jiàn)圖3-7。</p><p> 生成三層X(jué)ML文件后,可視化編輯器組件將調(diào)用代碼生成組件來(lái)生成服務(wù)代理Agent的Java代碼,而代碼生成組件的運(yùn)行又是基于三層X(jué)ML文件的解析模塊、傳輸代理模塊和數(shù)據(jù)轉(zhuǎn)換模塊的基礎(chǔ)之
78、上的,詳情請(qǐng)見(jiàn)圖3-9。</p><p> 當(dāng)SP提供的是Web 服務(wù)時(shí),SP Agent Builder生成Agent的主要過(guò)程如下:</p><p> 首先工作人員在上述的SP Agent Builder可視化編輯器中導(dǎo)入SP服務(wù)提供商提供的Web文件;SP Agent Builder完成WSDL的解析,并且用解析出來(lái)的元素對(duì)象生成內(nèi)部的三個(gè)Jtree,最后生成對(duì)應(yīng)的三層X(jué)ML文件
79、,詳情請(qǐng)見(jiàn)圖3-8。</p><p> 代碼生成器根據(jù)生成的三層X(jué)ML文件,在解析類的協(xié)助下,完成Agent的生成過(guò)程,詳情請(qǐng)見(jiàn)圖3-9。</p><p> 圖 3 - 7 生成三層X(jué)ML文件的組件協(xié)作圖</p><p> 圖 3 - 8 WSDL生成XML文件的組建協(xié)作圖</p><p> 圖 3 - 9 生成Agent文件的
80、組建協(xié)作圖</p><p> 下面簡(jiǎn)要介紹上圖中每個(gè)組件的簡(jiǎn)要設(shè)計(jì):</p><p> 可視化編輯器組件:當(dāng)服務(wù)商提供的是非Web服務(wù)時(shí),工作人員根據(jù)SP提供的服務(wù)文檔,把相關(guān)的信息輸入可視化編輯器組件??梢暬庉嫿M件將獲得的三層信息存儲(chǔ)在相應(yīng)的三層文件的JTree后,生成傳輸層、表示層和傳輸層的XML文件。在生成了三層X(jué)ML文件后,調(diào)用代碼生成模塊生成Agent的Java代碼;當(dāng)服務(wù)
81、商提供的是Web服務(wù)時(shí),工作人員將SP提供的WSDL文件導(dǎo)入到可視化編輯器,隨后解析模塊就會(huì)對(duì)WSDL進(jìn)行解析??梢暬庉嬈鲿?huì)調(diào)用解析后得到的元素對(duì)象生成三個(gè)Jtree,再將JTree轉(zhuǎn)換成對(duì)應(yīng)的三層X(jué)ML文件。最后它會(huì)根據(jù)生成的三層X(jué)ML文件,調(diào)用代碼生成模塊生成Agent的Java代碼。由于此編輯器組件的可視化性,可以形象生動(dòng)的看到文件中的結(jié)構(gòu)內(nèi)容,這樣有利于的避免錯(cuò)誤,且易于修改。</p><p> 三層
82、XML Schema組件:由于SP Agent Builder服務(wù)代理生成工具的其他模塊都是以三層X(jué)ML文件為基礎(chǔ)的,所以三層X(jué)ML文件必須具有統(tǒng)一的格式,以確保解析組件能解析出XML文件中信息,然后供其他組件調(diào)用。三層X(jué)ML Schema組件就是用于限制用戶輸入用的,它將被應(yīng)用于兩個(gè)方面。它一方面被封裝在可視化編輯器的添加節(jié)點(diǎn)按鈕的事件響應(yīng)中,用于限制用戶的輸入;另一方面,它將被提供給此生成工具的使用者,讓他們自己根據(jù)設(shè)計(jì)好的XML格
83、式,將服務(wù)提供商提供的服務(wù)轉(zhuǎn)換成合法的格式,然后輸入。</p><p> 解析組件: 運(yùn)用Dom4j技術(shù),解析生成的三層X(jué)ML文件,將XML中的數(shù)據(jù)信息封裝到設(shè)計(jì)的元素封裝類的對(duì)象屬性中,生成對(duì)應(yīng)的封裝類,計(jì)算機(jī)范文網(wǎng) www.jsjfw.net,對(duì)對(duì)象,然后供其他組件調(diào)用。</p><p> 傳輸代理組件:主要是作為一個(gè)中間傳輸代理,負(fù)責(zé)容器和SP服務(wù)商之間的通信。它將根據(jù)服務(wù)商要求
84、的傳輸協(xié)議,建立與服務(wù)商的服務(wù)器之間的連接,并把請(qǐng)求信息以適當(dāng)?shù)母袷桨l(fā)送給SP服務(wù)商。此組件還負(fù)責(zé)從服務(wù)商那獲得響應(yīng)信息,并將響應(yīng)信息中的有效信息解析出來(lái)。</p><p> 數(shù)據(jù)轉(zhuǎn)換組件:主要是用于實(shí)現(xiàn)從前臺(tái)獲得對(duì)象格式和服務(wù)商規(guī)定的消息格式之間的格式的轉(zhuǎn)換。首先,根據(jù)傳輸層規(guī)定的傳輸格式(URL傳輸,文本傳輸,XML傳輸和SOAP傳輸),從前臺(tái)獲取的請(qǐng)求對(duì)象中提取有效數(shù)據(jù),并將其拼接成規(guī)定的傳輸格式的字符串
85、;其次,在獲取服務(wù)器的響應(yīng)后,根據(jù)傳輸格式,從響應(yīng)信息中獲取有效信息,并將信息封裝入對(duì)應(yīng)的響應(yīng)類的對(duì)象中,返回響應(yīng)類的對(duì)象。</p><p> 代碼生成器:代碼生成器主要分為模板上下文封裝類和模板。運(yùn)用模板Velocity技術(shù),并在解析類的協(xié)助下,將上下文封裝類的對(duì)象和設(shè)計(jì)好的模板進(jìn)行融合,從而生成對(duì)應(yīng)的Agent服務(wù)代理的Java代碼。</p><p><b> 3.3 本
86、章小結(jié) </b></p><p> 本章介紹了服務(wù)開(kāi)發(fā)平臺(tái)的總體設(shè)計(jì)。它簡(jiǎn)要介紹了前臺(tái)可視化IDE提供的主要功能、后臺(tái)管理容器的主要功能、后臺(tái)UDDI注冊(cè)中心模塊的主要設(shè)計(jì)和本論文研究的重點(diǎn)SP Agent Builder服務(wù)生成工具的主要模塊設(shè)計(jì)。</p><p> 第四章 服務(wù)生成工具SP Agent Builder的設(shè)計(jì)與實(shí)現(xiàn)</p><p>
87、 SP Agent Builder 服務(wù)生成工具的主要功能是根據(jù)SP提供的服務(wù),生成服務(wù)代理Agent文件來(lái)負(fù)責(zé)用戶和SP服務(wù)器之間的通訊。</p><p> SP Agent Builder 主要有分為六個(gè)模塊:三層X(jué)ML schema的設(shè)計(jì)模塊、三層X(jué)ML schema的解析模塊、數(shù)據(jù)轉(zhuǎn)換模塊、傳輸代理模塊、可視化編輯界面模塊和代碼生成器模塊。</p><p> 4.1 三層X(jué)M
88、L schema設(shè)計(jì)與解析模塊的設(shè)計(jì)與實(shí)現(xiàn)</p><p> 三層X(jué)ML schema的設(shè)計(jì)是整個(gè)SP Agent Builder設(shè)計(jì)與實(shí)現(xiàn)的基石,XML schema文檔的作用主要是設(shè)定用于存儲(chǔ)服務(wù)信息的三層X(jué)ML文檔的格式。schema將會(huì)被可視化編輯器調(diào)用,用于規(guī)范在可視化編輯器界面上的輸入,從而生成統(tǒng)一格式的XML文件,進(jìn)而保證解析模塊能夠正常運(yùn)行和確保XML中不會(huì)遺失生成Agent服務(wù)代理需要的信息。
89、根據(jù)各自分工的不同,我們將三個(gè)schema文檔分別劃分成功能層schema文檔、表現(xiàn)層schema文檔和傳輸層schema文檔。三層文件的功能如下:</p><p> 功能層文件規(guī)定用戶可以進(jìn)行的操作;</p><p> 表示層文件規(guī)定功能層描述的接口調(diào)用如何在網(wǎng)絡(luò)協(xié)議上表示的問(wèn)題;</p><p> 傳輸層文件規(guī)定采用什么傳輸協(xié)議進(jìn)行通訊和規(guī)定協(xié)議所需要的信
90、息。 </p><p> 在明確了三層X(jué)ML schema各自的功能后,就可以根據(jù)XML數(shù)據(jù)類型和Java數(shù)據(jù)類型之間的映射規(guī)則(見(jiàn)附錄A)對(duì)三層X(jué)ML的格式進(jìn)行設(shè)計(jì)了。</p><p> 4.1.1 功能層X(jué)ML schema的設(shè)計(jì)</p><p> 功能層文件主要是規(guī)定用戶可以進(jìn)行的操作,它將用來(lái)生成接口文件,暴露給前臺(tái),供前臺(tái)調(diào)用。因此,下面我們以一個(gè)I
91、nterface代碼為例,從中提取定義XML schema中的元素。</p><p> 現(xiàn)舉一個(gè)保險(xiǎn)服務(wù)的接口文件為例:</p><p> public interface Insu extends Remote {</p><p> public GetInsuResponse GetInsu(GetInsuRequest obj) throws Remot
92、eException ;</p><p><b> }</b></p><p> 從例子中可以看出,功能層X(jué)ML需要四個(gè)主要元素:接口名、方法返回值、方法名和方法參數(shù)。</p><p> 接口 <Interface></p><p> 接口元素,用來(lái)存儲(chǔ)借口信息的元素。</p><
93、p><b> 相關(guān)屬性及子元素:</b></p><p> Name: 用來(lái)存儲(chǔ)接口名稱。</p><p> Operation :用來(lái)存儲(chǔ)接口中的方法的信息。</p><p><b> 實(shí)例如下:</b></p><p> <Interface name="Insu
94、" ></p><p> <Operation name="GetInsu"</p><p> url="http://192.168.4.24:5555/webesb/servlet/EsbServlet" ></p><p> <Parameter message="Get
95、InsuRequest" name="GetInsuRequest"</p><p> type="Input" /></p><p> <Parameter message="GetInsuResponse" name="GetInsuResponse" type="Out
96、put"/ ></p><p> <Fault message = “Fault”, name = “Fault”, type = “Output”/></p><p> </Operation></p><p> </Interface></p><p> 操作 <Opera
97、tion></p><p> 操作元素,用來(lái)存儲(chǔ)操作信息。</p><p><b> 屬性及子元素:</b></p><p> Name: 表示操作的名稱</p><p> URL: 表示處理此操作的Java代碼地址。</p><p> Parameter:存儲(chǔ)參數(shù)的相關(guān)信息。&l
98、t;/p><p> 參數(shù) < Parameter ></p><p> 參數(shù)元素,用來(lái)存儲(chǔ)接口方法的參數(shù)類型和返回類型的信息。</p><p><b> 相關(guān)屬性:</b></p><p> Name: 表示參數(shù)的名稱。</p><p> Message:表示參數(shù)的格式,一般是用
99、戶自定義的格式。</p><p> Type:表示參數(shù)的類型,輸入?yún)?shù)或輸出參數(shù)。</p><p> 消息 <Message></p><p> 消息元素,存儲(chǔ)用戶自定義的消息格式。包括發(fā)送消息的格式、服務(wù)器接收發(fā)送的消息后返回消息的格式和在傳輸過(guò)程出錯(cuò)后返回的錯(cuò)誤信息的格式。</p><p><b> 屬性及子
100、元素:</b></p><p> Name:表示消息格式的名稱,是請(qǐng)求、返回或錯(cuò)誤消息。</p><p> Part: 表示消息的組成,一個(gè)消息可以有一個(gè)或者多個(gè)Part組成。</p><p><b> 實(shí)例如下:</b></p><p> <Message name="GetInsu
101、Request" ></p><p> <Part name="INSUT" type="so:INSUT" ></Part></p><p> <Part name="CHECKBS" ischildarray="true" type="so:CHE
102、CKB" ></Part></p><p> </Message></p><p> <Message name="GetInsuResponse" ></p><p> <Part name="InsuID" type="xs:String"
103、 ></Part></p><p> <Part name="INSUT" type="so:INSUT" ></Part></p><p> <Part name="CHECKBS" ischildarray="true" type="so:CHE
104、CKB" ></Part></p><p> </Message></p><p> 組件元素 <Part></p><p> 組件元素,是用戶自定義的元素,一般是對(duì)某些消息格式的封裝。</p><p><b> 屬性:</b></p><p
105、> Name:表明組件的名稱。</p><p> Type: 表明組件的類型,可以是基礎(chǔ)類型,也可以是用戶自定義的復(fù)雜類型。</p><p> 傳輸文件格式<Transfomat></p><p> 傳輸文件格式元素,表示在網(wǎng)絡(luò)中傳輸?shù)氖荴ML格式、TXT格式還是URL格式。</p><p> 備注:功能層X(jué)ML
106、schema的詳細(xì)設(shè)計(jì)可參考附錄B。</p><p> 4.1.2 表示層X(jué)ML schema 的設(shè)計(jì)</p><p> 表示層是用來(lái)規(guī)定功能層描述的接口調(diào)用如何在網(wǎng)絡(luò)協(xié)議上表示的問(wèn)題。它詳細(xì)的描述了功能層暴露的接口的消息格式,如發(fā)送消息的消息格式、返回消息的消息格式和報(bào)錯(cuò)時(shí)候的消息格式。它主要有以下兩個(gè)作用:</p><p> 生成消息封裝類,供前臺(tái)調(diào)用。前
107、臺(tái)將搜集的數(shù)據(jù)封裝入對(duì)應(yīng)的消息封裝類中,然后將消息對(duì)象作為參數(shù),再通過(guò)RMI調(diào)用管理容器中的請(qǐng)求方法。</p><p> 輔助完成序列化和反序列化過(guò)程,即當(dāng)后臺(tái)接收到前臺(tái)發(fā)送的對(duì)象時(shí),后臺(tái)需要將對(duì)象轉(zhuǎn)換成具有合適消息格式的String流,再與SP服務(wù)器進(jìn)行通訊。</p><p> 所以,表示層文件的設(shè)計(jì)最重要的是包含消息的具體信息,現(xiàn)提取主要元素如下:</p><p
108、> 消息<Message></p><p> 消息元素,用來(lái)規(guī)定操作之間傳遞數(shù)據(jù)的邏輯定義,一個(gè)表示層文件可包含多個(gè)消息元素。</p><p><b> 屬性:</b></p><p> Name:表明操作名稱,分為請(qǐng)求方法、響應(yīng)方法和報(bào)錯(cuò)方法。</p><p> Transcontent:調(diào)
109、用方法所傳輸?shù)膬?nèi)容。</p><p> 傳輸內(nèi)容<Transcontent></p><p> 傳輸內(nèi)容元素,用來(lái)規(guī)定調(diào)用SP提供的方法時(shí),需要的數(shù)據(jù)格式。</p><p> 備注:表示層X(jué)ML schema詳細(xì)設(shè)計(jì)可參考附錄C。</p><p> 4.1.3 傳輸層X(jué)ML schema 的設(shè)計(jì)</p>&l
110、t;p> 傳輸層規(guī)定采用什么傳輸協(xié)議及傳輸中所需要的信息。當(dāng)SP提供的是一般服務(wù)時(shí),它采用的傳輸協(xié)議有可能是HTTP、UDP、TCP;當(dāng)SP運(yùn)用的是web服務(wù)時(shí),它采用的是SOAP協(xié)議。傳輸層X(jué)ML用來(lái)存儲(chǔ)數(shù)據(jù)傳輸所需的信息,它將用來(lái)協(xié)助傳輸代理完成傳輸任務(wù)。</p><p><b> <HTTP></b></p><p> HTTP元素,用于
111、包含HTTP傳輸所需要的信息。</p><p><b> 屬性:</b></p><p> Version:表示HTTP的版本信息。</p><p> Location:表示SP提供的web服務(wù)ip地址或域名信息。</p><p> URL:SP提供的web服務(wù)連接地址。</p><p>
112、 Port:表示SP提供的web服務(wù)端口信息。</p><p> TransMethod:表示使用HTTP進(jìn)行傳輸?shù)膫鬏敺椒?,有Get、Head、Post、put、delete、trace、option和connect這八種可選。它們依次表示請(qǐng)求資源的表示、返回報(bào)頭而不返回表示、向服務(wù)器提交數(shù)據(jù)、上傳資源的表示、刪除資源、返回收到的請(qǐng)求、返回服務(wù)器支持的HTTP方法的列表和用于可配置為加密隧道以提高安全性的代
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)生在線交流平臺(tái)畢業(yè)設(shè)計(jì)
- 基于asp.net的網(wǎng)絡(luò)學(xué)習(xí)交流平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)】
- 基于phpcms平臺(tái)網(wǎng)站的畢業(yè)論文
- 畢業(yè)設(shè)計(jì)--基于web的校園二手交易平臺(tái)網(wǎng)站設(shè)計(jì)
- 兒童特色繪畫(huà)交流平臺(tái)設(shè)計(jì)與實(shí)現(xiàn) 【畢業(yè)論文】
- 計(jì)量網(wǎng)絡(luò)交流平臺(tái)的設(shè)計(jì).pdf
- 搭建科技交流平臺(tái)
- 搭建科技交流平臺(tái)
- java社區(qū)網(wǎng)站畢業(yè)設(shè)計(jì)
- 基于jsp的文檔共享與交流平臺(tái)畢業(yè)設(shè)計(jì)外文翻譯、開(kāi)題報(bào)告、文獻(xiàn)綜述
- 淺析推廣網(wǎng)站的幾大問(wèn)答平臺(tái)網(wǎng)站
- 搭建創(chuàng)新成果展示交流平臺(tái)
- 中美交流平臺(tái)建設(shè)-成都1
- 基于android的花卉交流平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)——畢業(yè)論文
- 課程學(xué)習(xí)與交流平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)
- 癌癥患者交流平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 校園信息交流平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 法律案例交流平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 網(wǎng)絡(luò)即時(shí)交流平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 畢業(yè)論文-----it技術(shù)交流社區(qū)網(wǎng)站的設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論