欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

小服務(wù)器程序的遠(yuǎn)程協(xié)作方法和系統(tǒng)的制作方法

文檔序號:7656865閱讀:322來源:國知局
專利名稱:小服務(wù)器程序的遠(yuǎn)程協(xié)作方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種在面向請求/響應(yīng)的網(wǎng)絡(luò)服務(wù)環(huán)境中的各種小服務(wù)器程序(servlet)之間的協(xié)同工作的方法和系統(tǒng),特別涉及一種位于相同或不同的Java虛擬機(jī)上的各種小服務(wù)器程序之間的協(xié)同調(diào)用的方法和系統(tǒng)。
背景技術(shù)
根據(jù)SUN公司的Java(扎哇--一種程序語言)小服務(wù)器程序指南中的定義,小服務(wù)器程序(servlet)是用于擴(kuò)展諸如支持Java的網(wǎng)絡(luò)服務(wù)器的面向請求/響應(yīng)的服務(wù)器功能的Java模塊。例如,小服務(wù)器程序負(fù)責(zé)提取HTML訂單項(xiàng)表格中的數(shù)據(jù)(從請求者的瀏覽器獲得請求),并對其應(yīng)用用于更新公司的訂單數(shù)據(jù)庫的業(yè)務(wù)邏輯(動態(tài)地建立響應(yīng)并將其發(fā)送給請求者)。小服務(wù)器程序與服務(wù)器的關(guān)系就象是小應(yīng)用程序(applet)與瀏覽器的關(guān)系一樣。但是與小應(yīng)用程序不同的是,小服務(wù)器程序沒有圖形用戶界面。
實(shí)際上,小服務(wù)器程序是一個(gè)抽象的概念,它可以映射到各種具體協(xié)議的實(shí)現(xiàn)。它不僅包括用于處理HTTP(超文本傳輸協(xié)議)請求/響應(yīng)的HTTP小服務(wù)器程序,也包括其它形式的小服務(wù)器程序,比如SIP(會話初始協(xié)議)小服務(wù)器程序。由于HTTP小服務(wù)器程序非常普遍,實(shí)際上的小服務(wù)器程序大多數(shù)都是HTTP類型的,因此人們幾乎忘記了小服務(wù)器程序的其它可能形式。
圖1是示出典型的HTTP小服務(wù)器程序工作過程的示意圖。在圖1中,當(dāng)用戶在客戶機(jī)100的瀏覽器的頁面表格(未示出)上完成輸入后,將一HTTP請求發(fā)送給安裝有小服務(wù)器程序的HTTP服務(wù)器(一般的網(wǎng)絡(luò)應(yīng)用服務(wù)器)120,HTTP服務(wù)器120中的小服務(wù)器程序容器(未示出)將該HTTP請求消息映射給其中的相應(yīng)的小服務(wù)器程序,然后調(diào)用該小服務(wù)器程序。該小服務(wù)器程序在數(shù)據(jù)庫130中搜索相應(yīng)的數(shù)據(jù),建立對該HTTP請求的HTTP響應(yīng)消息,并將該HTTP響應(yīng)消息發(fā)送回客戶機(jī)100,供該用戶瀏覽和使用。這就是典型的HTTP小服務(wù)器程序的工作方式。
下面將結(jié)合圖2詳細(xì)描述現(xiàn)有技術(shù)中的小服務(wù)器程序容器。
圖2示出了服務(wù)器的內(nèi)部工作原理和一種小服務(wù)器程序容器的結(jié)構(gòu)。在圖2中,服務(wù)器類200代表通過網(wǎng)絡(luò)(未示出)(諸如因特網(wǎng)等的各種網(wǎng)絡(luò))與客戶機(jī)相連接的服務(wù)器,其通過業(yè)務(wù)類202將從客戶機(jī)接收的HTTP消息傳遞給連接器204。這里,業(yè)務(wù)類202例如是8080端口,它是服務(wù)器類200與連接器204之間的物理連接。在連接器204處,將從業(yè)務(wù)類202傳送來的HTTP消息(物理數(shù)據(jù)包)轉(zhuǎn)換為邏輯命令,形成HTTP請求并將該HTTP請求傳送給小服務(wù)器程序容器220。另外,連接器204還將從小服務(wù)器程序容器220接收的HTTP響應(yīng)轉(zhuǎn)換為HTTP消息并通過業(yè)務(wù)類202和服務(wù)器類200發(fā)送給客戶機(jī)。
與連接器204連接的小服務(wù)器程序容器(servlet container)220工作在Java虛擬機(jī)(Java Virtual Machine-JVM)的上層。一個(gè)Java虛擬機(jī)可以被看作是具有服務(wù)器功能的服務(wù)器,其可以擁有多個(gè)小服務(wù)器程序容器220。
在小服務(wù)器程序容器220中,按從低到高的層次分別包含有容器引擎206,用于啟動并維護(hù)整個(gè)小服務(wù)器程序容器220的工作;虛擬主機(jī)(Host)208,工作在容器引擎206的上層,用于模擬多個(gè)主機(jī);上下文(Context)210,工作在虛擬主機(jī)208的上層,負(fù)責(zé)管理運(yùn)行于虛擬主機(jī)中的一個(gè)具體的應(yīng)用程序;包裝(Wrapper)216,工作在上下文210的上層,用于管理組成應(yīng)用程序的某一小服務(wù)器程序;HTTP小服務(wù)器程序212,工作在小服務(wù)器程序容器220的最頂層,是完成某一項(xiàng)工作或任務(wù)的最基本的單元。
當(dāng)Java虛擬機(jī)啟動時(shí),它將使用業(yè)務(wù)類202創(chuàng)建HTTP連接器204和容器引擎206,一個(gè)容器引擎206可以包括并管理多個(gè)虛擬主機(jī)208,一個(gè)虛擬主機(jī)208可以包括并管理多個(gè)上下文210,一個(gè)上下文可以包括并管理多個(gè)包裝216,而包裝216將利用小服務(wù)器程序212對所接收的HTTP請求實(shí)際地進(jìn)行實(shí)例化和處理。
當(dāng)HTTP請求發(fā)送到小服務(wù)器程序容器220中時(shí),通常只由該小服務(wù)器程序容器220通過上下文210來調(diào)用相應(yīng)的小服務(wù)器程序212。另外,小服務(wù)器程序212可以調(diào)用在相同的小服務(wù)器程序容器220中的其它小服務(wù)器程序(未示出),或可以被在相同的小服務(wù)器程序容器220中的其它小服務(wù)器程序(未示出)調(diào)用。除此之外沒有其它的辦法來調(diào)用小服務(wù)器程序212本身。例如,使用一般的Java類來調(diào)用小服務(wù)器程序212是無效的。另外,從小服務(wù)器程序212的固有特性來看,其在由于接收到HTTP請求而被啟動后,可以調(diào)用其它的Java代碼,但是卻沒有辦法使該小服務(wù)器程序212從小服務(wù)器程序容器220的外部直接、自動地獲得一個(gè)事件。
如上所述,在同一個(gè)上下文210中的各個(gè)不同小服務(wù)器程序212可以共享一些狀態(tài)和事件。但是,對一個(gè)普通的小服務(wù)器程序212來說,除了HTTP請求外,沒有辦法模擬一個(gè)來自上下文210之外的小服務(wù)器程序。例如,對于位于兩個(gè)不同的Java虛擬機(jī)上的小服務(wù)器程序來說,它們的協(xié)作(諸如共享狀態(tài)信息或相互發(fā)送事件)是不可能的,甚至在同一個(gè)Java虛擬機(jī)上,如果兩個(gè)小服務(wù)器程序分別位于兩個(gè)不同的小服務(wù)器程序容器中,則這兩個(gè)小服務(wù)器程序之間的協(xié)作也是不可能的。這就是現(xiàn)有技術(shù)中常規(guī)的小服務(wù)器程序的局限性。
前文已提到“小服務(wù)器程序”只是一個(gè)概念,而HTTP小服務(wù)器程序只是各種可能的種類中的一種。現(xiàn)在,由于還存在另一種重要的協(xié)議,即“會話初始協(xié)議(Session Initiation Protocal-SIP)”,在Java標(biāo)準(zhǔn)化組織中又定義了一種新的小服務(wù)器程序,即“SIP小服務(wù)器程序”。HTTP小服務(wù)器程序主要用于處理Web(網(wǎng)絡(luò))請求,而SIP小服務(wù)器程序則主要用于處理VoIP(基于IP的語音)應(yīng)用。SIP小服務(wù)器程序繼承了普通HTTP小服務(wù)器程序?qū)ο蟮墓灿刑匦?,但是它們之間也有很大的區(qū)別,示于表1中。
表1

從表1中可以看出,HTTP小服務(wù)器程序只能進(jìn)行請求/響應(yīng)的一對一處理,即只能針對一個(gè)HTTP請求產(chǎn)生一個(gè)響應(yīng),并將該響應(yīng)發(fā)送回客戶機(jī)。而SIP小服務(wù)器程序則不僅可以自主產(chǎn)生請求,還可以在一個(gè)請求的基礎(chǔ)上產(chǎn)生多個(gè)分支請求,用以向不同的服務(wù)器或Java虛擬機(jī)等發(fā)送,并產(chǎn)生相應(yīng)的響應(yīng),以完成更加復(fù)雜的任務(wù)。由此可以看出,通過同時(shí)應(yīng)用HTTP小服務(wù)器程序和SIP小服務(wù)器程序,可以實(shí)現(xiàn)網(wǎng)絡(luò)應(yīng)用服務(wù)器等的更加復(fù)雜的功能(例如由多方參加的交互式會議等),從而給用戶帶來更加方便的服務(wù)。
為了完成特定的任務(wù)而需要實(shí)現(xiàn)HTTP小服務(wù)器程序和SIP小服務(wù)器程序或其它種類的小服務(wù)器程序的相互調(diào)用時(shí),我們稱之為綜合應(yīng)用業(yè)務(wù)。隨著網(wǎng)絡(luò)化進(jìn)程的不斷深化和發(fā)展,能夠綜合處理包括HTTP和SIP的各種協(xié)議在綜合應(yīng)用業(yè)務(wù)中顯得尤其重要。
在綜合應(yīng)用業(yè)務(wù)中,小服務(wù)器程序被用作特定任務(wù)和不同協(xié)議(如HTTP協(xié)議和SIP協(xié)議)的編程模型,其中必須使用多種協(xié)議,而不是諸如HTTP的單獨(dú)一種協(xié)議。這意味著需要不同的小服務(wù)器程序容器。這種綜合應(yīng)用業(yè)務(wù)的一個(gè)典型實(shí)例就是所謂的“預(yù)設(shè)的網(wǎng)絡(luò)會議系統(tǒng)”,其中HTTP協(xié)議被用來輸入會議的規(guī)劃信息,而SIP協(xié)議被用來啟動從會議服務(wù)器到參加這個(gè)會議的各個(gè)成員的呼叫。但是在現(xiàn)有技術(shù)中,服務(wù)程序模型只關(guān)心HTTP協(xié)議,并且只有屬于同一個(gè)(HTTP)小服務(wù)器程序容器中的小服務(wù)器程序才可以相互協(xié)作。目前解決上述問題的方案僅僅是對HTTP小服務(wù)器程序進(jìn)行修改。
圖3是示出現(xiàn)有技術(shù)中實(shí)現(xiàn)綜合應(yīng)用業(yè)務(wù)的模式的示意圖。如圖3所示,在現(xiàn)有技術(shù)中,要實(shí)現(xiàn)綜合應(yīng)用業(yè)務(wù),必須在同一個(gè)上下文中分別構(gòu)建HTTP小服務(wù)器程序和SIP小服務(wù)器程序,綜合應(yīng)用業(yè)務(wù)提供商必須既提供HTTP小服務(wù)器程序,又提供SIP小服務(wù)器程序。然而,在現(xiàn)有技術(shù)中這是非常困難的,因?yàn)樗鼈円揽坎煌瑓f(xié)議的支持,HTTP小服務(wù)器程序提供商可能對SIP并不專業(yè),同時(shí)SIP小服務(wù)器程序提供商對HTTP也并不專業(yè),因此,在應(yīng)用服務(wù)器中重寫現(xiàn)有的小服務(wù)器程序容器的原代碼以支持SIP協(xié)議要花費(fèi)大量的時(shí)間和資金。另外,如果服務(wù)提供商將來自不同銷售商的HTTP小服務(wù)器程序和SIP小服務(wù)器程序集中構(gòu)建在同一個(gè)上下文中,則會存在知識產(chǎn)權(quán)方面的爭議。
另外,即使通過上述方式解決了上述問題,將來需要更多的協(xié)議來支持綜合應(yīng)用業(yè)務(wù)時(shí)則又會存在更大的困難。

發(fā)明內(nèi)容
針對上面現(xiàn)有技術(shù)中存在的問題,本發(fā)明的目的是提供一種小服務(wù)器程序(servlet)的遠(yuǎn)程協(xié)作方法,其特征在于所述方法包括步驟建立一公共注冊表;響應(yīng)于來自外部的請求,建立一擴(kuò)展上下文,其中所述擴(kuò)展上下文可以調(diào)用所述公共注冊表中的資源;對多個(gè)小服務(wù)器程序進(jìn)行初始化配置,并將所述多個(gè)小服務(wù)器程序注冊到所述公共注冊表中,其中所述多個(gè)小服務(wù)器程序分別位于不同的Java虛擬機(jī)上,或位于同一Java虛擬機(jī)的不同小服務(wù)器程序容器中;以及所述多個(gè)小服務(wù)器程序通過所述擴(kuò)展上下文的調(diào)用進(jìn)行相互訪問。
本發(fā)明還提供一種小服務(wù)器程序的遠(yuǎn)程協(xié)作系統(tǒng),其特征在于所述系統(tǒng)包括多個(gè)小服務(wù)器程序容器,每個(gè)包含至少一個(gè)小服務(wù)器程序,用于處理來自客戶機(jī)的請求,并維護(hù)相應(yīng)的會話,所述多個(gè)小服務(wù)器程序容器位于同一Java虛擬機(jī)上或分別位于不同的Java虛擬機(jī)上;公共注冊表,用于管理被注冊到其中的信息;和應(yīng)用程序會話模塊,用于響應(yīng)于來自外部的請求而建立一擴(kuò)展上下文,對所述各個(gè)小服務(wù)器程序進(jìn)行初始化配置,并將所述各個(gè)小服務(wù)器程序注冊到所述公共注冊表中,其中所述擴(kuò)展上下文可以調(diào)用所述公共注冊表中的資源,并且所述各個(gè)小服務(wù)器程序通過對所述擴(kuò)展上下文的調(diào)用進(jìn)行相互協(xié)作。
本發(fā)明可實(shí)現(xiàn)對位于不同Java虛擬機(jī)、甚至位于相同的Java虛擬機(jī)但位于不同的小服務(wù)器程序容器中的小服務(wù)器程序之間的協(xié)作,因?yàn)樵诰C合應(yīng)用業(yè)務(wù)系統(tǒng)中,不僅HTTP小服務(wù)器程序之間、SIP小服務(wù)器程序之間需要協(xié)同工作,而且HTTP與SIP小服務(wù)器程序之間也需要協(xié)同工作。


通過結(jié)合附圖對本發(fā)明實(shí)施例的詳細(xì)描述,本發(fā)明的上述特點(diǎn)和優(yōu)點(diǎn)將變得更加清楚,其中圖1是示出典型的HTTP小服務(wù)器程序的工作過程的示意圖。
圖2示出了服務(wù)器的內(nèi)部工作原理和一種小服務(wù)器程序容器的結(jié)構(gòu)。
圖3是示出現(xiàn)有技術(shù)實(shí)現(xiàn)綜合應(yīng)用業(yè)務(wù)的方式的示意圖。
圖4是根據(jù)本發(fā)明的實(shí)施例支持綜合應(yīng)用業(yè)務(wù)的系統(tǒng)的框圖。
圖5是根據(jù)本發(fā)明的實(shí)施例實(shí)現(xiàn)HTTP小服務(wù)器程序和SIP小服務(wù)器程序之間的遠(yuǎn)程調(diào)用的圖,其中HTTP小服務(wù)器程序和SIP小服務(wù)器程序位于同一個(gè)擴(kuò)展上下文中。
圖6是根據(jù)本發(fā)明的實(shí)施例實(shí)現(xiàn)HTTP小服務(wù)器程序和SIP小服務(wù)器程序之間的遠(yuǎn)程調(diào)用的圖,其中HTTP小服務(wù)器程序、SIP小服務(wù)器程序和擴(kuò)展上下文分別位于不同的Java虛擬機(jī)上。
圖7是根據(jù)本發(fā)明的實(shí)施例實(shí)現(xiàn)HTTP小服務(wù)器程序和SIP小服務(wù)器程序之間的遠(yuǎn)程調(diào)用的圖,其適用于傳統(tǒng)的Web服務(wù)器提供商。
圖8是根據(jù)本發(fā)明的實(shí)施例實(shí)現(xiàn)HTTP小服務(wù)器程序和SIP小服務(wù)器程序之間的遠(yuǎn)程調(diào)用的圖,其適用于新興的SIP服務(wù)器提供商。
圖9是按照本發(fā)明支持綜合應(yīng)用業(yè)務(wù)的系統(tǒng)所執(zhí)行的處理的流程圖。
具體實(shí)施例方式
下面將結(jié)合附圖對本發(fā)明的具體實(shí)施例進(jìn)行詳細(xì)的描述。
圖4是根據(jù)本發(fā)明的實(shí)施例支持綜合應(yīng)用業(yè)務(wù)的系統(tǒng)400的框圖。本發(fā)明的系統(tǒng)400包括遠(yuǎn)程應(yīng)用會話部件410,遠(yuǎn)程HTTP小服務(wù)器程序容器420,和SIP小服務(wù)器程序容器430。其中,遠(yuǎn)程應(yīng)用會話部件410對應(yīng)于一個(gè)綜合應(yīng)用業(yè)務(wù),它可以管理包括HTTP會話和SIP會話在內(nèi)的多個(gè)會話。遠(yuǎn)程應(yīng)用會話部件410的功能可以用RMI(Remote Method Invacation-遠(yuǎn)程方法調(diào)用,是現(xiàn)有技術(shù)中一種公知的方法)接口來實(shí)現(xiàn),或者其可以被打包成EJB模塊。
該遠(yuǎn)程應(yīng)用會話部件410維護(hù)著一組XML(可擴(kuò)展標(biāo)識語言)文件,包括布署描述文件(Deployment Description file)和配置文件,用于當(dāng)啟動時(shí)裝載必要的資源和配置,如,啟動定時(shí)器、創(chuàng)建構(gòu)成該綜合應(yīng)用業(yè)務(wù)的遠(yuǎn)程小服務(wù)器程序之間的關(guān)系等,其中這些服務(wù)于特定應(yīng)用業(yè)務(wù)的遠(yuǎn)程小服務(wù)器程序構(gòu)成了遠(yuǎn)程小服務(wù)器程序組。
遠(yuǎn)程HTTP小服務(wù)器程序容器420(可以是多個(gè))支持基于Web的操作。它從客戶機(jī)(如圖1中的客戶機(jī)100)接收HTTP請求,向外發(fā)送HTTP響應(yīng),并維護(hù)該HTTP會話(請求/響應(yīng))。即,純粹的HTTP請求/響應(yīng)是在HTTP小服務(wù)器程序容器420內(nèi)部處理的。另外,根據(jù)HTTP小服務(wù)器程序的邏輯,遠(yuǎn)程HTTP小服務(wù)器程序容器420也向遠(yuǎn)程SIP小服務(wù)器程序容器430或遠(yuǎn)程應(yīng)用會話部件410(具體說是其管理的擴(kuò)展上下文-下面將進(jìn)行詳述)發(fā)送事件。
遠(yuǎn)程SIP小服務(wù)器程序容器430(可以是多個(gè))支持呼叫控制或即時(shí)消息。它接收并發(fā)送SIP請求/響應(yīng),并維護(hù)該SIP會話(請求/響應(yīng))。即,純粹的SIP請求/響應(yīng)是在遠(yuǎn)程SIP小服務(wù)器程序容器430內(nèi)部處理的。另外,根據(jù)SIP小服務(wù)器程序的邏輯,遠(yuǎn)程SIP小服務(wù)器程序容器430也向遠(yuǎn)程HTTP小服務(wù)器程序容器420或遠(yuǎn)程應(yīng)用會話部件410(具體說是其管理的擴(kuò)展上下文-下面將進(jìn)行詳述)發(fā)送事件。
下面將結(jié)合附圖5、6、7和8說明實(shí)現(xiàn)本發(fā)明的具體方式。
圖5是根據(jù)本發(fā)明實(shí)施例實(shí)現(xiàn)HTTP小服務(wù)器程序和SIP小服務(wù)器程序之間的遠(yuǎn)程調(diào)用的圖,其中HTTP小服務(wù)器程序和SIP小服務(wù)器程序位于同一個(gè)擴(kuò)展上下文中。如圖5所示,為了實(shí)現(xiàn)在HTTP小服務(wù)器程序和SIP小服務(wù)器程序之間的遠(yuǎn)程調(diào)用,首先要將HTTP小服務(wù)器程序530的接口和SIP小服務(wù)器程序520的接口擴(kuò)充成為遠(yuǎn)程接口。
擴(kuò)充接口的操作是按照下面詳細(xì)描述的方式進(jìn)行的。即,尋找一個(gè)正在運(yùn)行中的輕型目錄訪問協(xié)議(LDAP)注冊表(以下簡稱為“注冊表”)540。如果找不到,則建立一個(gè)新的LDAP注冊表540,并獲得該注冊表540所運(yùn)行的端口號。輕型目錄訪問協(xié)議是一個(gè)標(biāo)準(zhǔn)協(xié)議,它使得來自不同銷售商的應(yīng)用程序(產(chǎn)品)可以共享符合該標(biāo)準(zhǔn)的注冊表。注冊表540位于Java虛擬機(jī)500上,也可以位于能夠共享的其它設(shè)備上,用于維護(hù)被注冊到其中的各種信息。
然后,當(dāng)Java虛擬機(jī)500因接收到某一應(yīng)用請求而啟動時(shí),動態(tài)地建立一個(gè)擴(kuò)展上下文510。所建立的擴(kuò)展上下文510可以有多個(gè),其中每一個(gè)對應(yīng)于一個(gè)不同的應(yīng)用實(shí)例,并且所建立的擴(kuò)展上下文510可以通過注冊表540所運(yùn)行的端口號對在其中所注冊的信息資源進(jìn)行調(diào)用。
我們知道,通常的“上下文”是指來自同一個(gè)小服務(wù)器程序容器的各個(gè)小服務(wù)器程序共享信息的場所,其位于某個(gè)小服務(wù)器程序容器內(nèi)部。而本發(fā)明提出的“擴(kuò)展上下文”的概念則是指遠(yuǎn)程小服務(wù)器程序和非遠(yuǎn)程小服務(wù)器程序共享信息的場所,其位于Java虛擬機(jī)500上,但是不位于某個(gè)小服務(wù)器程序容器的內(nèi)部。“擴(kuò)展上下文”本身可以是依賴于具體實(shí)現(xiàn)的遠(yuǎn)程對象,也可以被構(gòu)建為EJB模塊,由遠(yuǎn)程應(yīng)用會話部件410進(jìn)行管理。
在建立擴(kuò)展上下文510后,遠(yuǎn)程應(yīng)用會話部件410利用其本身維護(hù)的相關(guān)文件對各個(gè)HTTP小服務(wù)器程序容器中的HTTP小服務(wù)器程序530和各個(gè)SIP小服務(wù)器程序容器中的SIP小服務(wù)器程序520(圖5中只示出了一個(gè)HTTP小服務(wù)器程序和一個(gè)SIP小服務(wù)器程序,但是它們分別可以是多個(gè))進(jìn)行初始化(如配置各個(gè)接口的參數(shù)、啟動定時(shí)器等)。
然后,由遠(yuǎn)程應(yīng)用會話部件410將HTTP小服務(wù)器程序530和SIP小服務(wù)器程序520的名稱(也可以是其它標(biāo)識符)分別注冊到注冊表540中,并使它們的名稱可以識別。這樣,注冊表540中就包括了HTTP小服務(wù)器程序530和SIP小服務(wù)器程序520的名稱等信息。這個(gè)注冊的過程是通過RMI來實(shí)現(xiàn)的。
另外,在將HTTP小服務(wù)器程序530和/或SIP小服務(wù)器程序520的參數(shù)(如名稱或其它識別符等)注冊到注冊表540中時(shí),遠(yuǎn)程應(yīng)用會話部件410還根據(jù)需要,在注冊表540中對每個(gè)小服務(wù)器程序設(shè)置了相應(yīng)的生命周期,并對該生命周期進(jìn)行維護(hù)。當(dāng)計(jì)數(shù)器(未示出)指示某個(gè)小服務(wù)器程序的生命周期結(jié)束時(shí),遠(yuǎn)程應(yīng)用會話部件410將該小服務(wù)器程序的相關(guān)參數(shù)從注冊表540的條目中刪除,從而使該小服務(wù)器程序不再具有遠(yuǎn)程調(diào)用和被遠(yuǎn)程調(diào)用的功能。
這樣,HTTP小服務(wù)器程序530和SIP小服務(wù)器程序520的接口就被擴(kuò)充成為遠(yuǎn)程接口,即圖5中的HTTP遠(yuǎn)程接口532和SIP遠(yuǎn)程接口522。具體實(shí)現(xiàn)這個(gè)擴(kuò)充接口的HTTP實(shí)例代碼如下所示<pre listing-type="program-listing">public abstract class RemoteHttpServlet extends HttpServlet implements Remote{protected Registry registry;//The registry for the servlet/**Begins the servlet’s RMI operations.Causes the servlet to export itself and then binditself to the registry.**/public void init(ServletConfig config)throws ServletException{...}/**Halts the servlet’s RMI operations.Causes the servlet to unbind itself from theregistry**/public void destroy(){unbind();}/**Returns the name under which the servlet should be bound in the registry.**/protected String getRegistryName(){...}/**Returns the port where the registry should be running.**/protected int getRegistryPort(){...}&lt;dp n="d8"/&gt;/**Binds the servlet to the registry.Creates the registry if necessary.**/protected void bind(){//Try to find the appropriate registry already running//If we couldn’t find it,we need to create it.//If we get here,we must have a valid registry.//Now registry this servlet instance with that registry.}/**Unbinds the servlet from the registry.Logs any errors.**/protected void unbind(){...}</pre>在完成將HTTP小服務(wù)器程序530和SIP小服務(wù)器程序520的接口分別擴(kuò)充為HTTP遠(yuǎn)程接口532和SIP遠(yuǎn)程接口522后,還要利用RMI編譯器對這些小服務(wù)器程序進(jìn)行編譯。
通過識別注冊表540所運(yùn)行的端口號,擴(kuò)展上下文510可以對注冊表540中的資源進(jìn)行利用。也就是說,對于擴(kuò)展上下文510,HTTP小服務(wù)器程序530和SIP小服務(wù)器程序520都是可見的,并且這些小服務(wù)器程序之間也是可見的。當(dāng)在Java虛擬機(jī)500上運(yùn)行某一應(yīng)用程序時(shí),與該應(yīng)用程序相對應(yīng)的擴(kuò)展上下文510可以通過注冊表540中所注冊的條目對所需要的HTTP小服務(wù)器程序530和/或SIP小服務(wù)器程序520進(jìn)行調(diào)用,并利用它們各自的業(yè)務(wù)邏輯完成相應(yīng)的功能。我們將由擴(kuò)展上下文510通過利用注冊表540調(diào)用或管理的這些小服務(wù)器程序稱為一個(gè)遠(yuǎn)程小服務(wù)器程序組。
一個(gè)遠(yuǎn)程小服務(wù)器程序組可以包括位于同一個(gè)或不同的Java虛擬機(jī)500上的許多不同種類的遠(yuǎn)程小服務(wù)器程序,它們需要通過擴(kuò)展上下文510相互之間交換消息,就象在共享一個(gè)“聊天室”,并通過隨時(shí)相互調(diào)用、相互協(xié)作來完成某些特定的任務(wù),這些任務(wù)例如是一個(gè)綜合應(yīng)用業(yè)務(wù)。各個(gè)遠(yuǎn)程小服務(wù)器程序向擴(kuò)展上下文510中發(fā)送各種事件,并由此將這些事件廣播給所有其它的遠(yuǎn)程小服務(wù)器程序。這些小服務(wù)器程序在擴(kuò)展上下文510中所能“看見”的信息不是一般概念上的文字,而是各種事件,例如是呼叫完成,或者是從網(wǎng)絡(luò)瀏覽器獲得的請求等。
例如,各個(gè)遠(yuǎn)程小服務(wù)器程序之間相互作用(調(diào)用)的實(shí)例可以用代碼實(shí)現(xiàn)如下
<pre listing-type="program-listing">public class InvokerServlet extends RemoteHTTPServlet{//Assume Invoker Servlet is also a remote servletprivate String getRegistryHost(){...}private int getRegistryPort(){...}private String getRegistryName(){...}private String InvokeUsingRMIObject(){Registry registry=LocateRegistry.getRegistry(getRegistryHost(),getRegistryPort());InvokedServlet invoked=(InvokedServlet)registry.lookup(getRegistryName());return...;}}</pre>遠(yuǎn)程小服務(wù)器程序組的形成可以是動態(tài)的。即,構(gòu)成該遠(yuǎn)程小服務(wù)器程序組的遠(yuǎn)程小服務(wù)器程序可以根據(jù)實(shí)施描述文件(與一般用于網(wǎng)絡(luò)應(yīng)用(J2EE)中的實(shí)施描述文件一樣)動態(tài)地建立,并在其生命周期內(nèi)在擴(kuò)展上下文510中監(jiān)聽各種事件。
這樣,就建立了實(shí)現(xiàn)HTTP小服務(wù)器程序和SIP小服務(wù)器程序之間的遠(yuǎn)程調(diào)用的環(huán)境配置。當(dāng)然,上述的環(huán)境配置也可以通過如圖6、7和8中所示的其它形式來建立。
在圖6中,HTTP小服務(wù)器程序530和SIP小服務(wù)器程序520分別位于不同的Java虛擬機(jī)1和2上,而擴(kuò)展上下文510位于Java虛擬機(jī)3上。圖7和圖8分別示出了另外兩種不同的分布方式,其中圖7中的配置適用于傳統(tǒng)的web服務(wù)器提供商,而圖8中的配置則適用于新興的SIP服務(wù)器提供商。這些不同的分布方式與以上所述的實(shí)現(xiàn)HTTP小服務(wù)器程序530和SIP小服務(wù)器程序520之間的遠(yuǎn)程調(diào)用的環(huán)境配置實(shí)質(zhì)上是相同的,只是它們所處的位置不同。
另外,在本發(fā)明中,為了網(wǎng)絡(luò)安全起見,在遠(yuǎn)程小服務(wù)器程序能夠通過擴(kuò)展上下文510訪問其它遠(yuǎn)程小服務(wù)器程序之前,其必須得到安全管理器(未示出)的驗(yàn)證,以驗(yàn)證該遠(yuǎn)程小服務(wù)器程序是否是合法的調(diào)用者或被調(diào)用者。只有當(dāng)該遠(yuǎn)程小服務(wù)器程序合法時(shí),才允許其調(diào)用其它的遠(yuǎn)程小服務(wù)器程序或被其它的遠(yuǎn)程小服務(wù)器程序調(diào)用;否則是不允許的。
下面將結(jié)合圖9詳細(xì)描述按照本發(fā)明支持綜合應(yīng)用業(yè)務(wù)的系統(tǒng)所執(zhí)行的處理的流程。
圖9是按照本發(fā)明的支持綜合應(yīng)用業(yè)務(wù)的系統(tǒng)所執(zhí)行的處理的流程圖。其中,在步驟S902,在Java虛擬機(jī)(例如是網(wǎng)絡(luò)服務(wù)器)500上建立一公共注冊表540,該公共注冊表540是使得來自不同銷售商的產(chǎn)品可以共享其中的信息的注冊表,例如是符合LDAP協(xié)議的注冊表。然后,在步驟S904,響應(yīng)于來自客戶機(jī)的請求,建立一擴(kuò)展上下文510,該擴(kuò)展上下文510對應(yīng)于一特定的應(yīng)用,并且可以通過公共注冊表540所運(yùn)行的端口調(diào)用所述公共注冊表540中的資源。
接下來,在步驟S906,遠(yuǎn)程應(yīng)用會話部件410利用其所具有的實(shí)施描述文件和配置文件對多個(gè)小服務(wù)器程序520和530進(jìn)行初始化配置,然后處理流程前進(jìn)到步驟S908。在步驟S908中,遠(yuǎn)程應(yīng)用會話部件410將所述多個(gè)小服務(wù)器程序520和530注冊到所述公共注冊表540中。這里,所述多個(gè)小服務(wù)器程序520和530可以分別位于不同的Java虛擬機(jī)上,也可以位于同一Java虛擬機(jī)的不同小服務(wù)器程序容器中。在步驟S910中,通過所述擴(kuò)展上下文510調(diào)用所述多個(gè)小服務(wù)器程序520和530,使各個(gè)小服務(wù)器程序520和530之間可以相互進(jìn)行訪問和協(xié)作,以完成特定的任務(wù)。
通過本發(fā)明,可以實(shí)現(xiàn)多個(gè)小服務(wù)器程序之間的協(xié)作,這些小服務(wù)器程序位于不同的Java虛擬機(jī)(JVM)上,或即使位于同一個(gè)Java虛擬機(jī)上,它們也位于不同的小服務(wù)器程序容器中。利用本發(fā)明的方法和系統(tǒng),即使再有新的協(xié)議和應(yīng)用出現(xiàn),也可以容易地、低成本地實(shí)現(xiàn)支持各個(gè)協(xié)議的小服務(wù)器程序之間的相互調(diào)用和協(xié)作,更好地為用戶提供綜合應(yīng)用業(yè)務(wù)。
上面結(jié)合附圖對本發(fā)明的具體實(shí)施例進(jìn)行了詳細(xì)地描述。本領(lǐng)域的普通技術(shù)人員應(yīng)該明白,按照本發(fā)明的精神及指導(dǎo)思想,對本發(fā)明做出的各種修改和變化都在本發(fā)明所要求保護(hù)的范圍之內(nèi)。
權(quán)利要求
1.一種小服務(wù)器程序(servlet)的遠(yuǎn)程協(xié)作方法,其特征在于所述方法包括步驟(1)建立一公共注冊表;(2)響應(yīng)于來自外部的請求,建立一擴(kuò)展上下文,其中所述擴(kuò)展上下文可以調(diào)用所述公共注冊表中的資源;(3)對多個(gè)小服務(wù)器程序進(jìn)行初始化配置,并將所述多個(gè)小服務(wù)器程序注冊到所述公共注冊表中,其中所述多個(gè)小服務(wù)器程序分別位于不同的Java虛擬機(jī)上,或位于同一Java虛擬機(jī)的不同小服務(wù)器程序容器中;以及(4)所述多個(gè)小服務(wù)器程序通過對所述擴(kuò)展上下文的調(diào)用進(jìn)行相互協(xié)作。
2.如權(quán)利要求1所述的遠(yuǎn)程協(xié)作方法,其特征在于所述擴(kuò)展上下文從所述多個(gè)小服務(wù)器程序接收事件,并將該事件廣播給其它小服務(wù)器程序。
3.如權(quán)利要求1所述的遠(yuǎn)程協(xié)作方法,其特征在于所述多個(gè)小服務(wù)器程序包括超文本傳輸協(xié)議(HTTP)小服務(wù)器程序和會話初始協(xié)議(SIP)小服務(wù)器程序。
4.如權(quán)利要求1所述的遠(yuǎn)程協(xié)作方法,其特征在于所述方法還包括(5)對所述多個(gè)小服務(wù)器程序進(jìn)行生命周期管理,并將生命周期已經(jīng)結(jié)束的小服務(wù)器程序從所述公共注冊表中刪除。
5.如權(quán)利要求1所述的遠(yuǎn)程協(xié)作方法,其特征在于所述擴(kuò)展上下文與所述多個(gè)小服務(wù)器程序位于同一Java虛擬機(jī)或不同的Java虛擬機(jī)上。
6.一種小服務(wù)器程序的遠(yuǎn)程協(xié)作系統(tǒng),其特征在于所述系統(tǒng)包括多個(gè)小服務(wù)器程序容器,每個(gè)包含至少一個(gè)小服務(wù)器程序,用于處理來自客戶機(jī)的請求,并維護(hù)相應(yīng)的會話,所述多個(gè)小服務(wù)器程序容器位于同一Java虛擬機(jī)上或分別位于不同的Java虛擬機(jī)上;公共注冊表,用于管理被注冊到其中的信息;和應(yīng)用程序會話模塊,用于響應(yīng)于來自外部的請求而建立一擴(kuò)展上下文,對所述各個(gè)小服務(wù)器程序進(jìn)行初始化配置,并將所述各個(gè)小服務(wù)器程序注冊到所述公共注冊表中,其中所述擴(kuò)展上下文可以調(diào)用所述公共注冊表中的資源,并且所述各個(gè)小服務(wù)器程序通過所述擴(kuò)展上下文的調(diào)用進(jìn)行相互訪問。
7.如權(quán)利要求6所述的遠(yuǎn)程協(xié)作系統(tǒng),其特征在于所述擴(kuò)展上下文從所述各個(gè)小服務(wù)器程序接收事件,并將該事件廣播給其它小服務(wù)器程序。
8.如權(quán)利要求6所述的遠(yuǎn)程協(xié)作系統(tǒng),其特征在于所述各個(gè)小服務(wù)器程序包括超文本傳輸協(xié)議(HTTP)小服務(wù)器程序和會話初始協(xié)議(SIP)小服務(wù)器程序。
9.如權(quán)利要求6所述的遠(yuǎn)程協(xié)作系統(tǒng),其特征在于所述應(yīng)用程序會話模塊還對所述各個(gè)小服務(wù)器程序進(jìn)行生命周期管理,并將生命周期已經(jīng)結(jié)束的小服務(wù)器程序從所述公共注冊表中刪除。
10.如權(quán)利要求6所述的遠(yuǎn)程協(xié)作系統(tǒng),其特征在于所述應(yīng)用程序會話模塊是通過遠(yuǎn)程方法調(diào)用(RMI)接口來實(shí)現(xiàn)的。
全文摘要
一種在小服務(wù)器程序之間進(jìn)行協(xié)作的方法和系統(tǒng),包括建立公共注冊表;響應(yīng)于來自外部的請求,建立擴(kuò)展上下文,擴(kuò)展上下文可以調(diào)用公共注冊表中的資源;對多個(gè)小服務(wù)器程序進(jìn)行初始化配置,并將多個(gè)小服務(wù)器程序注冊到公共注冊表中,多個(gè)小服務(wù)器程序分別位于不同的Java虛擬機(jī)上,或位于同一Java虛擬機(jī)的不同小服務(wù)器程序容器中;和多個(gè)小服務(wù)器程序通過上下文的調(diào)用進(jìn)行相互訪問。本發(fā)明可實(shí)現(xiàn)位于不同Java虛擬機(jī)、甚至位于相同的Java虛擬機(jī)但位于不同的小服務(wù)器程序容器中的小服務(wù)器程序之間的協(xié)作,因?yàn)樵诰C合應(yīng)用業(yè)務(wù)系統(tǒng)中,不僅HTTP小服務(wù)器程序之間、SIP小服務(wù)器程序之間需要協(xié)同工作,而且HTTP與SIP小服務(wù)器程序之間也需要協(xié)同工作。
文檔編號H04L29/06GK1577251SQ0314367
公開日2005年2月9日 申請日期2003年7月28日 優(yōu)先權(quán)日2003年7月28日
發(fā)明者蔡弘, 陸薇, 楊博, 湯利華 申請人:國際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
高清| 固阳县| 仪征市| 金寨县| 彰化市| 肥乡县| 威信县| 北票市| 霸州市| 清水县| 平陆县| 商洛市| 长兴县| 嘉善县| 睢宁县| 鸡西市| 历史| 古浪县| 武义县| 安龙县| 营山县| 镇原县| 镇江市| 惠水县| 张家口市| 宜阳县| 察雅县| 澄江县| 静海县| 缙云县| 兰溪市| 舟山市| 林西县| 汉阴县| 新丰县| 临沂市| 搜索| 怀柔区| 建德市| 扎赉特旗| 乌审旗|