【正文】
標準,用于描述Web服務的技術調(diào)用語法?;谒撵`活性和易于操作性,本文將應用Dom4j來實現(xiàn)三層XML文件的解析模塊。所有這些都為Java開發(fā)人員創(chuàng)造了一個可擴展的開源的Java IDE,以支持他們在各自所選擇的環(huán)境中從事開發(fā)工作。第三章 :社區(qū)電子服務平臺的服務生成平臺的總體架構。由美國首先提出的“信息高速公路”是指數(shù)字化大容量光纖通信網(wǎng)絡,用以把政府、企業(yè)、大學、科研機構和家庭的計算機聯(lián)網(wǎng)。關鍵詞:數(shù)字城市,服務提供商,服務生成工具,服務代理ABSTRACTAs one of the important means of building Digital City, the building of the munity eservice platform, has gained many service providers’ support. Therefore, whether the platform can make link with the SP 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 munication between the service page and the server.The SP Agent Builder can automatically build the agent according to the service information. It is made up of the visual editor module, the threelayers XML design module and parser module, transfer agent module, data conversion module and the code generator module. The visual editor module is responsible for collecting service information。本文所完成的設計已用于陜西利安信息傳播有限公司新一代利安電超市的建設,取得了很好的應用效果。 問題的提出 信息高速公路是一種高速多媒體傳輸系統(tǒng),它能在全球甚至更大的范圍內(nèi)傳輸聲像圖文并茂的多媒體信息。介紹了研究課題所用的主要工具及相關的技術知識點。NetBeans 可支持Java 2平臺標準版(J2SE)應用的創(chuàng)建、采用JSP和Servlet的2層Web應用的創(chuàng)建,以及用于2層Web應用的API及軟件的核心組的創(chuàng)建。它提供了大量的接口,造就了它更加具有靈活性,更易操作性的特點。為了達到這一目標,WebService完全基于XML(可擴展標記語言)、XSD(XMLSchema)等獨立于平臺、獨立于軟件供應商的標準,是創(chuàng)建可互操作的、分布式應用程序的新平臺。通過模板生成代碼是比較好的選擇,模板在某種意義上來說就是配置文件的一種,當生成文件內(nèi)容修改后,用戶不需要修改源程序,只需要修改模板文件即可,提高了代碼的可維護性。 本章小結(jié)本章介紹了課題研究過程中使用的開發(fā)平臺MyEclipse、NetBeans,以及使用到的技術,如XML、Dom4j、SOAP、WebService等,并介紹了它們在項目中的應用。2) Visual Web JSF頁面片段在組件面板中以控件形式出現(xiàn),可在組件面板處編輯其id、外觀等屬性。RuntimeContainer 容器管理模塊也提供了GUI界面,供工作人員對容器內(nèi)部的Agent 服務進行管理。2) 容器:它通過UDDI的查詢API的find_business和get_businessDetail獲得一個服務提供商的完整信息,根據(jù)其服務名加載對應的指定版本的服務代理Agent類文件到Java虛擬機,進而在內(nèi)存中生成Agent實例??梢暬庉嫿M件將獲得的三層信息存儲在相應的三層文件的JTree后,生成傳輸層、表示層和傳輸層的XML文件。 本章小結(jié) 本章介紹了服務開發(fā)平臺的總體設計。實例如下:Interface name=Insu Operation name=GetInsuurl=:5555/webesb/servlet/EsbServlet Parameter message=GetInsuRequest name=GetInsuRequesttype=Input /Parameter message=GetInsuResponse name=GetInsuResponse type=Output/ Fault message = “Fault”, name = “Fault”, type = “Output”//Operation/Interface 操作 Operation操作元素,用來存儲操作信息。 表示層XML schema 的設計表示層是用來規(guī)定功能層描述的接口調(diào)用如何在網(wǎng)絡協(xié)議上表示的問題。URL:SP提供的web服務連接地址。備注:傳輸層XML schema詳細設計可參考附錄D。Private ArrayListParameter getParameters(Element elt)返回獲得的Operation中的Parameter列表。因此,當從前臺獲得請求對象后,數(shù)據(jù)裝換模塊將對象中信息封裝入SOAP的信封中,并且將其拼接成字符串形式進行發(fā)送。然后,將從前臺獲得的對象的屬性值,按一定格式轉(zhuǎn)換成目標格式的字符串。c) 當屬性值為基礎類型、字符串類型和日期類型時,將屬性名作為元素追加到childElement后,并且得到新的葉子節(jié)點grandElement,并且將屬性值賦值給grandElement。b) 通過讀取傳輸層XML文件,如果應用的傳輸協(xié)議是HTTP且傳輸方法是POST,就讀取功能層operation元素的URL值,并將URL?request=追加到stringBuffer上。URL格式的響應信息轉(zhuǎn)換為對象的主要步驟類似于TXT格式的響應信息轉(zhuǎn)換為對象的過程。采用這種方式可以節(jié)省傳輸時間。TCP傳輸協(xié)議是使用流套接字進行通訊的。 接口文件模板 接口文件模板,用來生成描述服務的接口文件。5) 替換模板中的值生成代碼調(diào)用模板類的公共成員方法merge方法,生成代碼。 模板的設計用Velocity生成代碼,需要設計兩個組件,一個是模板,另一個則是模板中的數(shù)據(jù)。(2) UDP不對收到的數(shù)據(jù)進行排序,在UDP報文的首部中并沒有關于數(shù)據(jù)順序的信息(如TCP所采用的序號),而且報文不一定按順序到達的,所以接收端無從排起。(3) 靈活:HTTP允許傳輸任意類型的數(shù)據(jù)對象。c) 獲取表示層XML文件中對應的請求元素,根據(jù)元素在用Java反射機制在請求對象中找到元素對應屬性的值,然后按“屬性名=屬性值amp。c) 如果是ArrayList類型的話,主要的思想是先新建一個ArrayList型的對象,然后對ArrayList對應的封裝類的對象中的成員賦值,最后將賦值后的對象賦值給主對象。c) 在字符序列上追加頭?xml version=\\ encoding=\GBK\?,使得XML中可以用中文描述,然后再最加遞歸調(diào)用后的節(jié)點的信息。而且需注意的是,本平臺與服務商約定當提供的是URL格式請求時,返回的響應是XML格式的。在項目實際運行中,后臺會接收到前臺會發(fā)送出一個服務請求類的對象,而后臺和服務器之間的約定的通信格式并非是對象格式,所以,后臺需要將從前臺獲取的請求類的對象轉(zhuǎn)換成為符合約定的格式(XML格式、文本格式、URL格式和SOAP格式),同時要轉(zhuǎn)化成對應的字符串,再進行消息通訊。對于上述的Operation元素,現(xiàn)定義OperationParser類: Operation解析類 OperationParserOperation解析類負責獲取Operation中屬性和子元素的相關信息。當傳輸?shù)氖欠莣eb服務時,將SOAP的子元素全置空,設置為不可用狀態(tài)。傳輸層XML用來存儲數(shù)據(jù)傳輸所需的信息,它將用來協(xié)助傳輸代理完成傳輸任務。屬性:Name:表明組件的名稱。}從例子中可以看出,功能層XML需要四個主要元素:接口名、方法返回值、方法名和方法參數(shù)。5) 數(shù)據(jù)轉(zhuǎn)換組件:主要是用于實現(xiàn)從前臺獲得對象格式和服務商規(guī)定的消息格式之間的格式的轉(zhuǎn)換。2) 生成三層XML文件后,可視化編輯器組件將調(diào)用代碼生成組件來生成服務代理Agent的Java代碼,而代碼生成組件的運行又是基于三層XML文件的解析模塊、傳輸代理模塊和數(shù)據(jù)轉(zhuǎn)換模塊的基礎之上的,詳情請見圖39。后臺UDDI注冊中心的部署圖如圖36。SP Agent Builder是本文的研究重點,開發(fā)工程師可以利用此服務代理生成工具,將第三方SP提供的服務信息快速的封裝成服務代理(Agent)供前臺調(diào)用。前臺IDE主要具有以下幾個功能:1) 利用項目模板定制開發(fā)項目在新建項目時,可以在項目類別中輸入服務商,項目中選擇所需要創(chuàng)建的項目類別,比如航空售票,航空人身意外險和人壽續(xù)保等項目。這種編程方式可以讓對象在生成時才決定要生成哪一種對象。它允許任何人僅僅簡單的使用模板語言(template language)來引用由Java代碼定義的對象。WebService是一種新的web應用程序分支,他們是自包含、自描述、模塊化的應用,可以發(fā)布、定位、通過web調(diào)用。基于它的平臺無關性、結(jié)構化等優(yōu)勢,本文將應用XML文件來實現(xiàn)對服務的描述。它是功能豐富的J2EE集成開發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測試、出錯和發(fā)布功能。例如:第三軍醫(yī)大學校園新聞網(wǎng)、華東交通大學校園新聞發(fā)布系統(tǒng)等等。2) 數(shù)字化城市社區(qū)服務平臺的一站式服務模式能有效地解決社區(qū)居民“繳費難”、“ 服務難”的問題,真正實現(xiàn)了電子商務零距離為民服務的理念,居民不用出小區(qū)就能享受到一站式服務的便利。它由可視化編輯器模塊、三層XML的設計與解析模塊、傳輸代理模塊、數(shù)據(jù)轉(zhuǎn)換模塊和代碼生成器模塊組成。 data conversion module is responsible for converting the information in special format。因此越來越多的企事業(yè)單位都很重視新聞網(wǎng)站的建設。介紹了SP Agent的三層XML文件格式的設計、可視化編輯器組件、代碼生成器組件、傳輸代理組件、三層XML文件的解析組件及數(shù)據(jù)轉(zhuǎn)換等組件?;ヂ?lián)網(wǎng)發(fā)展初期,HTML以簡單精練的語法、極易掌握的通用性和易學性使Web得以普及發(fā)展以至今日輝煌。它還支持從消息系統(tǒng)到遠程過程調(diào)用(RPC)等大量的應用程序。WSDL服務描述是一個XML文檔,它與WSDL模式(schema)的定義一致。它以抽象窗口工具包(AWT)為基礎使跨平臺應用程序可以使用任何可插拔的外觀風格。另外社區(qū)電子服務系統(tǒng)還有一系列的支撐子系統(tǒng)來實現(xiàn)其運行,如OA系統(tǒng)、支付系統(tǒng)、服務平發(fā)平臺等,為用戶提供綜合電子信息服務。如果用戶不改變項目模板的流程和頁面,那么這里的頁面導航可以不用配置。UDDI同時也是Web服務集成的一個體系框架。6) 服務定位:用RMI機制實現(xiàn)服務的代理Agent的定位。2) 三層XML Schema組件:由于SP Agent Builder服務代理生成工具的其他模塊都是以三層XML文件為基礎的,所以三層XML文件必須具有統(tǒng)一的格式,以確保解析組件能解析出XML文件中信息,然后供其他組件調(diào)用。schema將會被可視化編輯器調(diào)用,用于規(guī)范在可視化編輯器界面上的輸入,從而生成統(tǒng)一格式的XML文件,進而保證解析模塊能夠正常運行和確保XML中不會遺失生成Agent服務代理需要的信息。Message:表示參數(shù)的格式,一般是用戶自定義的格式。所以,表示層文件的設計最重要的是包含消息的具體信息,現(xiàn)提取主要元素如下: 消息Message消息元素,用來規(guī)定操作之間傳遞數(shù)據(jù)的邏輯定義,一個表示層文件可包含多個消息元素。屬性:Location:表示SP提供的web服務ip地址或域名信息。下面以為功能層的元素Operation設計數(shù)據(jù)封裝類為例:Operation name=GetInsu url=:5555/webesb/servlet/EsbServlet Parameter message=GetInsuRequest name=GetInsuRequest type=Input/ParameterParameter message=GetInsuResponse name=GetInsuResponse type=Output /Parameter Fault message = “Fault”, name = “Fault”, type = “Output”//Operation OperationBean類屬性:Name :string 類型,其屬性值代表操作名稱。3) 方法parseOperation調(diào)用getURL方法,從而獲得URL值,然后將其賦值給元素封裝類對象。不過這種格式的傳輸只限于簡單的數(shù)據(jù)傳輸,只有當請求和響應元素封裝類中的屬性是基礎類型或者string類型時候,才能用文本格式表示。具體實例如下:Field[] fields = ().getDeclaredFields()。此時的根元素的名稱就是響應封裝類的名稱,通過此名稱在Agent代碼中查找到響應類,并且通過Java反射獲得其所有的屬性名、方法名和創(chuàng)建一個響應類的對象。b) 通過解析組件,解析表示層XML文件,并獲得其中的所有message元素,然后在其中找到與className對應的mess