亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

分布式處理系統(tǒng)中含消息傳送核心的集團(tuán)型企業(yè)java的制作方法

文檔序號(hào):6419294閱讀:137來源:國知局

專利名稱::分布式處理系統(tǒng)中含消息傳送核心的集團(tuán)型企業(yè)java的制作方法
技術(shù)領(lǐng)域
:本發(fā)明涉及分布式處理系統(tǒng),具體地涉及分布式處理系統(tǒng)中的計(jì)算機(jī)軟件。相互參照相關(guān)申請本申請要求1998年11月5日提出的美國臨時(shí)申請No.60/107,167的權(quán)益。下列同時(shí)待審的美國專利申請已轉(zhuǎn)讓給本申請的受讓人,將它們的公開文本插在這里以供參考(A)申請?zhí)柹胁恢?代理人備案號(hào)(AttorneyDocket)No.BEAS1029),由DeanB.Jacobs和EricM.Halpern提出申請(尚不知),名稱為分布式處理系統(tǒng)中的智能存根模塊或企業(yè)JAVATM豆模塊(“ASMARTSTUBORENTERPRISEJAVATMBEANINADISTRIBUTEDPROCESSINGSYSTEM”);(B)申請?zhí)柹胁恢?代理人備案號(hào)BEAS1030),由DeanB.Jacobs和EricM.Halpern提出申請(申請日尚不知),名稱為分布式處理系統(tǒng)中的復(fù)制命名服務(wù)(“ADUPLICATEDNAMINGSERVICEINADISTRIBUTEDPROCESSINGSYSTEM”);和(C)申請?zhí)柹胁恢?代理人備案號(hào)BEAS1031),由DeanB.Jacobs和AnnoR.Langen提出申請(申請日尚不知),原名稱為在安全分布式處理系統(tǒng)中的集團(tuán)型企業(yè)JAVATM(“CLUSTEREDENTERPRISEJAVATMINASECUREDISTRIBUTEDPROCESSINGSYSTEM”)。
背景技術(shù)
:存在若干種類型的分布式處理系統(tǒng)。一般地說,分布式處理系統(tǒng)包括多個(gè)處理設(shè)備,例如,兩個(gè)與通信媒體連接的計(jì)算機(jī)。通信媒體可以包括有線媒體、無線媒體、或它們的組合,例如,以太(Ethernet)局域網(wǎng)或蜂窩網(wǎng)。在分布式處理系統(tǒng)中,至少有一個(gè)處理設(shè)備可以將通信媒體上的信息傳送到另一個(gè)處理設(shè)備上。圖1所示的客戶機(jī)/服務(wù)器結(jié)構(gòu)110是一種類型的分布式處理系統(tǒng)??蛻魴C(jī)/服務(wù)器結(jié)構(gòu)110包括至少兩個(gè)處理設(shè)備,表示為客戶機(jī)105和應(yīng)用程序服務(wù)器103。附加的客戶機(jī)也可以與通信媒體104連接,例如客戶機(jī)108。通常,服務(wù)器103是商用邏輯模塊(businesslogic)的宿主和/或協(xié)調(diào)事務(wù)處理以向另外的處理設(shè)備,例如客戶機(jī)105和/或客戶機(jī)108提供服務(wù)。應(yīng)用程序服務(wù)器103通常用提供服務(wù)的軟件編程。軟件可以利用各種各樣的編程模型,例如圖1a-b所示的EnterpriseJavaTMBean(“EJB”)100b編程。服務(wù)可以包括,例如,檢索和傳送來自數(shù)據(jù)庫的數(shù)據(jù),提供圖像和/或解方程。例如,服務(wù)器103可以響應(yīng)來自客戶機(jī)105的請求,通過通信媒體102從永久性存儲(chǔ)器件101中的數(shù)據(jù)庫101a檢索數(shù)據(jù)。然后,應(yīng)用程序服務(wù)器103可以通過通信媒體104傳送請求數(shù)據(jù)到客戶機(jī)105。客戶機(jī)是利用來自服務(wù)器的服務(wù)和可以請求服務(wù)的處理設(shè)備。用戶106經(jīng)常與客戶機(jī)105交互操作,并可以使客戶機(jī)105通過通信媒體104從應(yīng)用程序服務(wù)器103請求服務(wù)。客戶機(jī)經(jīng)常處理與最終用戶的直接交互操作,例如接受請求和顯示結(jié)果。各種各樣不同類型的軟件可以用于編程應(yīng)用程序服務(wù)器103和/或客戶機(jī)105。一種編程語言是JavaTM編程語言。JavaTM應(yīng)用程序目標(biāo)代碼被裝載到JavaTM虛擬機(jī)(“JVM”)中。JVM是裝載到模擬特定機(jī)器或處理設(shè)備的處理設(shè)備中的程序。關(guān)于JavaTM編程語言的更多信息可以從http//www.javasoft.com站點(diǎn)上獲得,將這個(gè)站點(diǎn)列在這里以供參考。圖1b表示若干種JavaTM企業(yè)應(yīng)用編程接口(“API”)100,這些接口允許JavaTM應(yīng)用代碼仍然獨(dú)立于基本事務(wù)處理系統(tǒng)、數(shù)據(jù)庫、和網(wǎng)絡(luò)基礎(chǔ)設(shè)施。JavaTM企業(yè)API100包括例如,遠(yuǎn)程方法調(diào)用(“RMI”)100a、EJB100b、和JavaTM命名和目錄接口(JNDI)100c。RMI100a是經(jīng)常用在如下所述的對等結(jié)構(gòu)(peer-peerarchitecture)中的分布式編程模型。具體地說,一組類別和接口使一個(gè)JavaTM對象能夠調(diào)用在不同JVM上運(yùn)行的另一個(gè)JavaTM對象的公開方法。EJB100b的示例通常用在如上所述的客戶機(jī)/服務(wù)器結(jié)構(gòu)中。EJB100b的示例是軟件成分或可以與其它成分組合的可重用預(yù)建的一段封裝的應(yīng)用程序代碼。通常,EJB100b的示例包括商用邏輯單元。存儲(chǔ)在服務(wù)器103中的EJB100b示例通常管理永久性、事務(wù)處理、并發(fā)性、線程處理和安全性。JNDI100c向JavaTM軟件應(yīng)用程序提供目錄和命令功能??蛻魴C(jī)/服務(wù)器結(jié)構(gòu)110存在著許多缺點(diǎn)。首先,因?yàn)榉?wù)器103不得不處理許多連接,所以結(jié)構(gòu)110的規(guī)模不能太大。換言之,可以附加到服務(wù)器103上的客戶機(jī)的數(shù)量受到限制。另外,加倍地添加處理設(shè)備(客戶機(jī))未必向你提供加倍的性能。其次,難以維護(hù)客戶機(jī)105和108上的應(yīng)用程序代碼。第三,結(jié)構(gòu)110易遭受一些系統(tǒng)故障或單點(diǎn)故障。如果服務(wù)器101發(fā)生故障并無法備份,那么客戶機(jī)105將不能獲得服務(wù)。圖1c表示多層結(jié)構(gòu)160??蛻魴C(jī)151和152管理與最終用戶的直接交互操作,接受請求和顯示結(jié)果。應(yīng)用程序服務(wù)器153寄存應(yīng)用程序代碼、協(xié)調(diào)通信、同步和事務(wù)處理。數(shù)據(jù)庫服務(wù)器154和便攜式存儲(chǔ)裝置155提供數(shù)據(jù)的持續(xù)事務(wù)型管理。多層結(jié)構(gòu)160具有與客戶機(jī)/服務(wù)器結(jié)構(gòu)110相似的上述缺點(diǎn)。圖2表示對等結(jié)構(gòu)214。處理設(shè)備216、217和218與通信媒體213連接。處理設(shè)備216、217和218包括通過媒體213通信用的網(wǎng)絡(luò)軟件210a、210b、和210c。通常,在對等結(jié)構(gòu)中的每個(gè)處理設(shè)備具有相似的處理能力和應(yīng)用程序。對等程序模型的例子包括CommonObjectRequestBrokerArchitecture(公用對象請求中介架構(gòu))(“CORBA”,)和DistributedObjectComponentModel(分布式對象組件模型)(“DCOM”)結(jié)構(gòu)。在一個(gè)平臺(tái)特定的分布式處理系統(tǒng)中,各個(gè)處理設(shè)備可以運(yùn)行相同的操作系統(tǒng)。這樣就允許諸如共享盤、多尾盤(multi-taileddisk)和高速互連之類的專有硬件用于處理設(shè)備之間的通信。該特定的分布式處理系統(tǒng)平臺(tái)的例子包括IBMCorporation′sS/390ParallelSysplex、Compaq′sTandemDivisionHimalaya服務(wù)器、Compaq′sDigitalEquipmentCorporationTM(DECTM)DivisionOpenVMSTMCluster軟件、和MicrosoftCorporationWindowsNTClusterServices(Wolfpack)。圖2b示出了事務(wù)處理(TP)結(jié)構(gòu)220。具體地說,TP結(jié)構(gòu)220示出了BEASystems,Inc.TUXEDO結(jié)構(gòu)。TP監(jiān)視器224分別通過通信媒體280、281和282與處理設(shè)備ATM221、PC222和TP監(jiān)視器223連接。ATM221可以是自動(dòng)出納機(jī),PC222可以是個(gè)人計(jì)算機(jī),和TP監(jiān)視器223可以是另一個(gè)事務(wù)處理監(jiān)視器。TP監(jiān)視器224通過通信媒體283、284和285與后臺(tái)服務(wù)器225、226和227連接。服務(wù)器225通過通信媒體286與永久性存儲(chǔ)裝置287、存儲(chǔ)數(shù)據(jù)庫289連接。TP監(jiān)視器224包括工作流控制器224a,工作流控制器224a用于將來自諸如ATM221、PC222、或TP監(jiān)視器223的處理設(shè)備的服務(wù)請求擇徑(routing)到諸如服務(wù)器225、226和227的各種服務(wù)器。工作流控制器224a允許做到(1)服務(wù)器之間的工作負(fù)載平衡,(2)受限制的規(guī)??缮炜s性或允許附加的服務(wù)器和/或客戶機(jī),(3)冗余后臺(tái)服務(wù)器的容錯(cuò)性(或服務(wù)請求可以由工作流控制器發(fā)送到?jīng)]有故障的服務(wù)器),和(4)會(huì)話集中以限制同時(shí)連接到后臺(tái)服務(wù)器的數(shù)量。其它事務(wù)處理結(jié)構(gòu)的例子包括IBMCorporation′sCICS、Compaq′sTandemDivisionPathway/Ford/TS、Compaq′sDECTMACMS、和TransarcCorporation′sEncina。TP結(jié)構(gòu)220也存在著許多缺點(diǎn)。首先,單個(gè)處理設(shè)備或TP監(jiān)視器224的故障可以使網(wǎng)絡(luò)變成不能工作。其次,規(guī)??缮炜s性或與TP監(jiān)視器224連接的處理設(shè)備(服務(wù)器和客戶機(jī)兩者)的數(shù)量可能受TP監(jiān)視器224的硬件或軟件的限制。第三,將客戶機(jī)請求擇徑到服務(wù)器的靈活性受到限制。例如,如果通信媒體280不能工作,但通信媒體290可以使用,那么,ATM221通常不可以通過通信媒體290直接從服務(wù)器225請求服務(wù),而必須訪問IP監(jiān)視器224。第四,客戶機(jī)通常不知道后臺(tái)服務(wù)器或其它處理設(shè)備的狀態(tài)。第五,沒有工業(yè)標(biāo)準(zhǔn)軟件或API用于負(fù)載平衡。和第六,即使客戶機(jī)含有能夠進(jìn)行高效服務(wù)的相關(guān)信息,客戶機(jī)通常也不可以選擇特定的服務(wù)器。因此,最好是能提供一種分布式處理系統(tǒng),尤其是能提供一種具有現(xiàn)有技術(shù)分布式處理系統(tǒng)的優(yōu)點(diǎn)而沒有其固有缺點(diǎn)的分布式處理系統(tǒng)軟件。該軟件應(yīng)該考慮到通常用在客戶機(jī)/服務(wù)器、多層或?qū)Φ确植际教幚硐到y(tǒng)中的工業(yè)標(biāo)準(zhǔn)API。該軟件應(yīng)該支持各種各樣的計(jì)算機(jī)編程模型。并且,該軟件還應(yīng)該能允許(1)提高容錯(cuò)性、(2)有效率的規(guī)??缮炜s性、(3)有效的負(fù)載平衡、和(4)會(huì)話集中控制。改進(jìn)了的計(jì)算機(jī)軟件應(yīng)該考慮到重新?lián)駨交蚓W(wǎng)絡(luò)重新配置。此外,該計(jì)算機(jī)軟件還應(yīng)該允許處理設(shè)備狀態(tài)的確定。發(fā)明概述本發(fā)明的目的是提供一種改進(jìn)分布式處理系統(tǒng),尤其提供一種供分布式處理系統(tǒng)用的計(jì)算機(jī)軟件。該計(jì)算機(jī)軟件改進(jìn)了分布式處理系統(tǒng)的容錯(cuò)性,以及能有高效率的規(guī)模可伸縮性。該計(jì)算機(jī)軟件允許有效的負(fù)載平衡和會(huì)話集中。該計(jì)算機(jī)軟件支持重新?lián)駨交蛴?jì)算機(jī)網(wǎng)絡(luò)的重新配置。該計(jì)算機(jī)軟件支持各種各樣的計(jì)算機(jī)編程模型和允許用在客戶機(jī)/服務(wù)器和對等分布式處理結(jié)構(gòu)兩者中的工業(yè)標(biāo)準(zhǔn)API的使用。該計(jì)算機(jī)軟件允許服務(wù)器或其它處理設(shè)備狀態(tài)的確定。該計(jì)算機(jī)軟件還支持在包括安全性模型在內(nèi)的各種情況下的消息轉(zhuǎn)發(fā)。根據(jù)本發(fā)明的一個(gè)方面,分布式處理系統(tǒng)包括與第一處理設(shè)備和第二處理設(shè)備連接的通信媒體。第一處理設(shè)備包括模擬處理設(shè)備(“JVM1”)的第一軟件程序,含有具有數(shù)據(jù)結(jié)構(gòu)(“RJVM1”)的第一核心軟件層。第二處理設(shè)備包括模擬處理設(shè)備(“JVM2”)的第一軟件程序,含有具有數(shù)據(jù)結(jié)構(gòu)(“RJVM2”)的第一核心軟件層。來自第一處理設(shè)備的消息通過第一處理設(shè)備中的第一核心軟件層和第一軟件程序傳送到第二處理設(shè)備中的第一核心軟件層和第一軟件程序。根據(jù)本發(fā)明的另一個(gè)方面,在第一處理設(shè)備中的第一軟件程序是JavaTM虛擬機(jī)(“JVM”),和在第一處理設(shè)備中的數(shù)據(jù)結(jié)構(gòu)是遠(yuǎn)程JavaTM虛擬機(jī)(“RJVM”)。類似地,在第二處理設(shè)備中的第一軟件程序是JVM,和在第二處理設(shè)備中的數(shù)據(jù)結(jié)構(gòu)是RJVM。第二處理設(shè)備中的RJVM對應(yīng)于第一處理設(shè)備中的JVM。根據(jù)本發(fā)明的另一個(gè)方面,第一處理設(shè)備中的RJVM包括接頭(socket)管理器軟件部分、線程(thread)管理器軟件部分、消息擇徑軟件部分、消息壓縮軟件部分、和/或?qū)Φ认?peer-gone)檢測軟件部分。根據(jù)本發(fā)明的另一個(gè)方面,第一處理設(shè)備利用從由下列協(xié)議組成的協(xié)議組中選擇的協(xié)議與第二處理設(shè)備進(jìn)行通信TransmissionControlProtocol(傳輸控制協(xié)議)(“TCP”)、SecureSocketsLayer(安全接頭協(xié)議)(“SSL”)、HypertextTransportProtocol(超文本傳輸協(xié)議)(“HTTP”)隧道技術(shù)、和InternetInterORBProtocol(互聯(lián)網(wǎng)ORB間協(xié)議)(“IIOP”)隧道技術(shù)。根據(jù)本發(fā)明的另一個(gè)方面,第一處理設(shè)備包括存儲(chǔ)JavaTM應(yīng)用程序的存儲(chǔ)器。根據(jù)本發(fā)明的另一個(gè)方面,第一處理設(shè)備是第二處理設(shè)備的對等物。此外,第一處理設(shè)備是服務(wù)器,和第二處理設(shè)備是客戶機(jī)。根據(jù)本發(fā)明的另一個(gè)方面,第二通信媒體與第二處理設(shè)備連接。第三處理設(shè)備與第二通信媒體連接。第三處理設(shè)備包括模擬處理設(shè)備(“JVM3”)的第一軟件程序,含有具有第一數(shù)據(jù)結(jié)構(gòu)(“RJVM1”)和第二數(shù)據(jù)結(jié)構(gòu)(“RJVM2”)的核心軟件層。根據(jù)本發(fā)明的另一個(gè)方面,第一處理設(shè)備包括含有復(fù)制管理器軟件部分的存根模塊(“stub”)。復(fù)制管理器軟件部分包括負(fù)載平衡軟件部分和故障處理(failover)軟件部分。根據(jù)本發(fā)明的另一個(gè)方面,第一處理設(shè)備包括EnterpriseJavaTMBean對象。根據(jù)本發(fā)明的另一個(gè)方面,第一處理設(shè)備包括存儲(chǔ)在樹節(jié)點(diǎn)上的、含有存根模塊庫的命名樹,和第二處理設(shè)備包括該命名樹的復(fù)制件。根據(jù)本發(fā)明的另一個(gè)方面,第一處理設(shè)備包括以無狀態(tài)程序模型(statelessprogrammodel)編碼的應(yīng)用程序,和該應(yīng)用程序包括無狀態(tài)會(huì)話豆模塊(statelesssessionbean)。根據(jù)本發(fā)明的另一個(gè)方面,第一處理設(shè)備包括以無狀態(tài)工廠程序模型(statelessfactoryprogrammodel)編碼的應(yīng)用程序,和該應(yīng)用程序包括有狀態(tài)會(huì)話豆模塊(statefulsessionbean)。根據(jù)本發(fā)明的另一個(gè)方面,第一處理設(shè)備包括以有狀態(tài)程序模型(statefulprogrammodel)編碼的應(yīng)用程序,和該應(yīng)用程序包括實(shí)體會(huì)話豆模塊(entitysessionbean)。根據(jù)本發(fā)明的另一個(gè)方面,提供包括信息存儲(chǔ)媒體的制品。該制品包含將消息從第一處理設(shè)備中的RJVM傳送到第二處理設(shè)備中的RJVM的第一組數(shù)字信息。根據(jù)本發(fā)明的另一個(gè)方面,該制品包含第一組數(shù)字信息,包括含有從多個(gè)服務(wù)提供者中選擇一個(gè)服務(wù)提供者的負(fù)載平衡軟件程序的存根模塊。根據(jù)本發(fā)明的另一個(gè)方面,存根模塊含有從多個(gè)服務(wù)提供者中刪除一個(gè)發(fā)生了故障的服務(wù)提供者的故障處理軟件部分。根據(jù)本發(fā)明的另一個(gè)方面,負(fù)載平衡軟件部分基于對一個(gè)特定服務(wù)提供者的親緣關(guān)系(affinity)選擇一個(gè)服務(wù)提供者。根據(jù)本發(fā)明的另一個(gè)方面,負(fù)載平衡軟件部分以循環(huán)(roundrobin)方式選擇服務(wù)提供者。根據(jù)本發(fā)明的另一個(gè)方面,負(fù)載平衡軟件部分以隨機(jī)方式選擇服務(wù)提供者。根據(jù)本發(fā)明的另一個(gè)方面,負(fù)載平衡軟件部分根據(jù)每個(gè)服務(wù)提供者的負(fù)載從多個(gè)服務(wù)提供者中選擇一個(gè)服務(wù)提供者。根據(jù)本發(fā)明的另一個(gè)方面,負(fù)載平衡軟件部分根據(jù)所請求的數(shù)據(jù)類型從多個(gè)服務(wù)提供者中選擇一個(gè)服務(wù)提供者。根據(jù)本發(fā)明的另一個(gè)方面,負(fù)載平衡軟件部分根據(jù)物理上最接近的服務(wù)提供者從多個(gè)服務(wù)提供者中選擇一個(gè)服務(wù)提供者。根據(jù)本發(fā)明的另一個(gè)方面,負(fù)載平衡軟件部分根據(jù)每個(gè)服務(wù)提供者響應(yīng)的時(shí)間周期從多個(gè)服務(wù)提供者中選擇一個(gè)服務(wù)提供者。根據(jù)本發(fā)明的另一個(gè)方面,該制品包含第一組數(shù)字信息,包括從多個(gè)服務(wù)提供者中選擇一個(gè)服務(wù)提供者的EnterpriseJavaTMBean對象。根據(jù)本發(fā)明的另一個(gè)方面,存根模塊存儲(chǔ)在分布式處理系統(tǒng)中的處理設(shè)備中。存根模塊包括由下列步驟組成的方法獲取服務(wù)提供者列表,和從該服務(wù)提供者列表中選擇一個(gè)服務(wù)提供者。根據(jù)本發(fā)明的另一個(gè)方面,該方法還包括從服務(wù)提供者列表中刪除發(fā)生故障的服務(wù)提供者。根據(jù)本發(fā)明的另一個(gè)方面,一種設(shè)備包括與第一處理設(shè)備和第二處理設(shè)備連接的通信媒體。第一處理設(shè)備存儲(chǔ)命名樹,該命名樹包括用于訪問服務(wù)提供者的遠(yuǎn)程方法調(diào)用(“RMI”)存根模塊。第二處理設(shè)備含有復(fù)制的命名樹和服務(wù)提供者。根據(jù)本發(fā)明的另一個(gè)方面,命名樹含有包括當(dāng)前服務(wù)提供者的服務(wù)庫的節(jié)點(diǎn)。根據(jù)本發(fā)明的另一個(gè)方面,服務(wù)庫包括存根模塊(stub)。根據(jù)本發(fā)明的另一個(gè)方面,分布式處理系統(tǒng)包括與第二計(jì)算機(jī)連接的第一計(jì)算機(jī)。第一計(jì)算機(jī)含有命名樹,包括訪問服務(wù)提供者的遠(yuǎn)程調(diào)用存根模塊。第二計(jì)算機(jī)含有復(fù)制的命名樹和服務(wù)提供者。根據(jù)本發(fā)明的另一個(gè)方面,提供了包括與第二處理設(shè)備連接的第一處理設(shè)備的分布式處理系統(tǒng)。第一處理設(shè)備具有JVM和包括第一RJVM的第一核心軟件層。第二處理設(shè)備具有第一JVM和包括第二RJVM的第一核心軟件層。當(dāng)在第一JVM和第二JVM之間沒有可用的接頭時(shí),可以將消息從第一處理設(shè)備傳送到第二處理設(shè)備。根據(jù)本發(fā)明的另一個(gè)方面,第一處理設(shè)備在防火墻之后,在小應(yīng)用程序(applet)安全模型下運(yùn)行,或者是一個(gè)客戶機(jī),和第二處理設(shè)備也是一個(gè)客戶機(jī)。通過參照隨后的附圖、詳細(xì)說明和權(quán)利要求書,可以看出本發(fā)明的其它特征和優(yōu)點(diǎn)。通過參照附圖和如下的詳細(xì)說明,可以更好地理解本發(fā)明。在附圖中,相同的標(biāo)號(hào)表示相同的部分。詳細(xì)說明I.集團(tuán)型企業(yè)JavaTM分布式處理系統(tǒng)A.集團(tuán)型企業(yè)JavaTM軟件結(jié)構(gòu)圖3a示出了根據(jù)本發(fā)明實(shí)施例的、在集團(tuán)型企業(yè)JavaTM系統(tǒng)的處理設(shè)備中的軟件層的簡化方塊圖380。下面描述集團(tuán)型企業(yè)JavaTM分布式處理系統(tǒng)的詳細(xì)說明。軟件的第一層包括通信媒體軟件驅(qū)動(dòng)器351,用于傳送和接收在諸如以太網(wǎng)局域網(wǎng)之類的通信媒體上的信息。包括傳輸控制協(xié)議(“TCP”)軟件部分353和因特網(wǎng)(“IP”)軟件部分352的操作系統(tǒng)310是以特定格式檢索提取和發(fā)送信息包或信息塊的上層軟件層?!吧蠈印避浖右话愣x為一個(gè)利用或訪問一個(gè)或多個(gè)“下層”軟件層的軟件部分或幾個(gè)軟件部分。接著,實(shí)現(xiàn)JVM354。然后,將含有遠(yuǎn)程JavaTM虛擬機(jī)356的核心模塊層355放置在JVM354的上面。下面要詳述的核心模塊355用于在集團(tuán)型企業(yè)JavaTM分布式處理系統(tǒng)中的處理設(shè)備之間傳送消息。遠(yuǎn)程方法調(diào)用357和企業(yè)JavaTM豆模塊(bean)358是核心模塊355的上層軟件層。EJB358是用于各種JavaTM應(yīng)用程序的容器。圖3b表示圖3a所示的核心模塊355的細(xì)節(jié)圖。核心模塊355包括接頭管理器部分363、線程管理器部分364、和RJVM356。RJVM356是包括消息擇徑軟件部分360、含有簡表161c的消息壓縮軟件部分361、和對等消失檢測軟件部分362的數(shù)據(jù)結(jié)構(gòu)。RJVM356和線程管理器部分364與接頭管理器部分363交互操作以在處理設(shè)備之間傳輸信息。B.分布式處理系統(tǒng)圖3表示集團(tuán)型企業(yè)JavaTM分布式處理系統(tǒng)300的簡化方塊圖。處理設(shè)備與通信媒體301連接。通信媒體301可以是有線和/或無線的通信媒體,或它們的組合。在一個(gè)實(shí)施例中,通信媒體301是局域網(wǎng)(LAN)。在另一個(gè)實(shí)施例中,通信媒體301是廣域網(wǎng)(WAN),例如,因特網(wǎng)或萬維網(wǎng)(WWW)。再在另一個(gè)實(shí)施例中,通信媒體301是LAN和WAN兩者。各種不同類型的處理設(shè)備都可以與通信媒體301連接。在一個(gè)實(shí)施例中,處理設(shè)備可以是如下所述的、如圖8所示的通用計(jì)算機(jī)100。本領(lǐng)域的普通技術(shù)人員應(yīng)該理解,圖8和下列說明僅描述了一種特定類型的處理設(shè)備,而按照本發(fā)明的實(shí)施例可以使用帶有不同軟件和硬件配置的許多其它類型的處理設(shè)備。在另一個(gè)實(shí)施例中,處理設(shè)備可以是打印機(jī)、手持式計(jì)算機(jī)、膝上型計(jì)算機(jī)、掃描儀、蜂窩式電話、尋呼機(jī)、或它們的等效物。圖3c表示本發(fā)明中服務(wù)器302和303與通信媒體301連接的實(shí)施例。服務(wù)器303還與通信媒體305連接,通信媒體305可以具有與上面針對通信媒體301所述相似的實(shí)施例。客戶機(jī)304也與通信媒體305連接。在另一個(gè)實(shí)施例中,客戶機(jī)304可以如圖3中虛線和方塊所示的那樣與通信媒體301連接。應(yīng)該理解為,在另一個(gè)實(shí)施例中,服務(wù)器302是(1)客戶機(jī)和服務(wù)器兩者、或(2)客戶機(jī)。類似地,圖3表示了其中表示三個(gè)處理設(shè)備的實(shí)施例,而本發(fā)明的其它實(shí)施例包括了如省略號(hào)所示的許多其它處理設(shè)備或通信媒體。服務(wù)器302分別利用網(wǎng)絡(luò)軟件302a和網(wǎng)絡(luò)軟件303a將通信媒體301上的信息傳輸?shù)椒?wù)器303。在一個(gè)實(shí)施例中,網(wǎng)絡(luò)軟件302a、303a、和304a包括通信媒體軟件驅(qū)動(dòng)器351、傳輸控制協(xié)議軟件353和因特網(wǎng)協(xié)議軟件352(“TCP/IP”)??蛻魴C(jī)304還包括網(wǎng)絡(luò)軟件304a,用于通過通信媒體305將信息傳輸?shù)椒?wù)器303。服務(wù)器303中的網(wǎng)絡(luò)軟件303a還用于通過通信媒體305將信息傳輸?shù)娇蛻魴C(jī)304。根據(jù)本發(fā)明的實(shí)施例,集團(tuán)型企業(yè)JavaTM結(jié)構(gòu)300中的每個(gè)處理設(shè)備都包括支持多層和對等功能兩者的消息傳遞核心模塊355。核心模塊是用于向處理設(shè)備上的其它軟件程序提供基本服務(wù)的軟件程序。具體地說,服務(wù)器302、服務(wù)器303、和客戶機(jī)304分別含有核心模塊302b、303b、和304b。具體地,為了使兩個(gè)JVM交互操作,無論它們是客戶機(jī)還是服務(wù)器,每個(gè)JVM都構(gòu)造代表另一個(gè)的RJVM。消息從一側(cè)上的上層發(fā)出,通過相應(yīng)的RJVM,跨過通信媒體,再通過對等的RJVM,最后被傳送到另一側(cè)上的上層。在各種實(shí)施例中,消息可以利用各種不同的協(xié)議傳輸,包括(但不限于)TransmissionControlProtocol/InternetProtocol(“TCP/IP”)、SecureSocketsLayer(“SSL”)、HypertextTransportProtocol(“HTTP”)隧道技術(shù)、和InternetInterORBProtocol(“IIOP”)隧道技術(shù)、和它們的組合。RJVM和接頭管理器創(chuàng)建和維護(hù)以這些協(xié)議為基本接頭和在上層中的所有對象之間共享它們。接頭(socket)是代表分布式處理系統(tǒng)中的處理設(shè)備之間的端點(diǎn)(terminal)的邏輯位置。核心模塊維護(hù)執(zhí)行線程庫,和線程管理器軟件部分364多路復(fù)用接頭讀取和請求執(zhí)行之間的線程。線程是執(zhí)行程序代碼段或功能的序列。例如,服務(wù)器302包括JVM1和JavaTM應(yīng)用程序302c。服務(wù)器302還包括代表服務(wù)器303的JVM2的RJVM2。如果消息要從服務(wù)器302發(fā)送到服務(wù)器303,則消息通過服務(wù)器302中的RJVM2發(fā)送到服務(wù)器303中的RJVM1。C.消息轉(zhuǎn)發(fā)集團(tuán)型企業(yè)JavaTM網(wǎng)絡(luò)300能夠通過中間服務(wù)器轉(zhuǎn)發(fā)消息。如果客戶機(jī)通過前臺(tái)網(wǎng)關(guān)從后臺(tái)服務(wù)器請求服務(wù),則這種功能是重要的。例如,來自服務(wù)器302(客戶機(jī)302)的消息并具體地JVM1可以通過服務(wù)器303(前臺(tái)網(wǎng)關(guān))或JVM2轉(zhuǎn)發(fā)到客戶機(jī)304(后臺(tái)服務(wù)器304)或JVM3。這種功能在控制會(huì)話集中或在服務(wù)器與各種客戶機(jī)之間建立多少個(gè)連接時(shí)是重要的。并且,消息轉(zhuǎn)發(fā)可以用在在兩個(gè)JVM之間不能創(chuàng)建接頭的情況中。例如,消息的發(fā)送者正在小應(yīng)用程序安全模式下運(yùn)行,而這種模式不允許創(chuàng)建到原始服務(wù)器的接頭。小應(yīng)用程序安全模型的詳細(xì)說明可以從http//www.javasoft.com站點(diǎn)上獲得,將這個(gè)站點(diǎn)列在這里以供參考。另一個(gè)例子包括當(dāng)消息的接收者處于防火墻之后時(shí)。此外,如下所述,消息轉(zhuǎn)發(fā)也可以應(yīng)用在發(fā)送者是客戶機(jī)和接收者是客戶機(jī)時(shí),因此不接受任何輸入接頭。例如,如果消息從服務(wù)器302發(fā)送到客戶機(jī)304,則該消息將不得不通過服務(wù)器303擇徑。具體地說,將使RJVM3(代表客戶機(jī)304)之間的、如302f所示的消息切換是切換到服務(wù)器302中的RJVM2(代表服務(wù)器303)。消息將利用接頭302e在服務(wù)器302中的RJVM2和服務(wù)器303中的RJVM1之間傳輸。然后,消息按虛線303f所示的那樣,從服務(wù)器303中的RJVM1切換到服務(wù)器303中的RJVM3。接著,消息將在服務(wù)器303中的RJVM3和客戶機(jī)304中的RJVM2的接頭之間傳送。最后,消息將按虛線304f所示的那樣,從客戶機(jī)304中的RJVM2傳送到客戶機(jī)304中的RJVM1。D.重新?lián)駨娇蛻魴C(jī)/服務(wù)器中的RJVM能夠在任何時(shí)候?qū)⑼ㄐ怕窂交蛲ㄐ琶襟w切換到其它的RJVM。例如,如果客戶機(jī)304創(chuàng)建到服務(wù)器302的直接接頭,則服務(wù)器302就能夠開始使用該接頭來代替通過服務(wù)器303的消息轉(zhuǎn)發(fā)。這個(gè)實(shí)施例用代表客戶機(jī)304的虛線和方塊示出。在一個(gè)實(shí)施例中,通過RJVM傳輸消息的使用確保了在出現(xiàn)網(wǎng)絡(luò)重新配置之后可靠有序的消息傳送。例如,如果客戶機(jī)304被重新配置成通信媒體301來代替圖3所示的通信媒體305。在另一個(gè)實(shí)施例中,消息可以不按順序傳送。RJVM進(jìn)行幾種通過路由擇徑(routing)實(shí)現(xiàn)的端到端操作。首先,RJVM負(fù)責(zé)各個(gè)客戶機(jī)/服務(wù)器意外死機(jī)時(shí)的檢測。在一個(gè)實(shí)施例中,如圖3b所示對等消失選擇軟件部分362負(fù)責(zé)這種功能。在一個(gè)實(shí)施例中,當(dāng)在預(yù)定時(shí)間間隔內(nèi)沒有發(fā)送其它消息時(shí),RJVM將心跳(heartbeat)消息發(fā)送到其它客戶機(jī)/服務(wù)器。如果客戶機(jī)/服務(wù)器在預(yù)定計(jì)數(shù)時(shí)間內(nèi)沒有接收到心跳消息,則檢測到應(yīng)該發(fā)送心跳的客戶機(jī)/服務(wù)器發(fā)生故障了。在一個(gè)實(shí)施例中,通過連接超時(shí)或發(fā)生故障的客戶機(jī)/服務(wù)器是否在預(yù)定時(shí)間量內(nèi)不發(fā)送消息來檢測發(fā)生故障的客戶機(jī)/服務(wù)器。在另一個(gè)實(shí)施例中,發(fā)生故障的接頭指示發(fā)生故障的客戶機(jī)/服務(wù)器。其次,在消息串行化期間,各個(gè)RJVM,特別是消息壓縮軟件360,縮減共同傳輸?shù)臄?shù)據(jù)值以降低消息大小。為了實(shí)現(xiàn)這個(gè)目的,每個(gè)JVM/RJVM對保持匹配縮減表。例如,JVM1包括縮減表,和RJVM1包括匹配縮減表。在消息在中間服務(wù)器之間轉(zhuǎn)發(fā)期間,在路由中的中間服務(wù)器上消息的主體不進(jìn)行去串行化。E.多層/對等功能集團(tuán)型企業(yè)JavaTM結(jié)構(gòu)300考慮到多層和對等編程。集團(tuán)型企業(yè)JavaTM結(jié)構(gòu)300支持與多層分布式處理結(jié)構(gòu)一致的、用于客戶機(jī)/服務(wù)器編程的顯式語法。舉例來說,如下的客戶機(jī)方代碼片段將信息消息寫入服務(wù)器日志文件中<prelisting-type="program-listing"><![CDATA[  T3Clientclnt=newT3Client(″t3//acme7001″);  LogServiceslog=clnt.getT3Services().log();  Log.info(″Hellofromaclient″);]]></pre>第一行利用t3協(xié)議建立與頂級(acme)服務(wù)器會(huì)話。如果RJVM還不存在,則每個(gè)JVM構(gòu)造關(guān)于另一方的RJVM,并建立底層(underlying)TCP接頭。這個(gè)會(huì)話的客戶機(jī)方表示-T3Client對象-和服務(wù)器方表示通過這些RJVM進(jìn)行通信。服務(wù)器方支持各種各樣的服務(wù),包括數(shù)據(jù)庫訪問、遠(yuǎn)程文件訪問、工作空間、事件和日志記錄。第二行獲得LogServices對象,和第三行寫消息。集團(tuán)型企業(yè)JavaTM計(jì)算機(jī)結(jié)構(gòu)300還支持與對等分布式處理結(jié)構(gòu)一致的服務(wù)器中性的語法。舉例來說,如下的代碼片段從服務(wù)器上的遵從JNDI的命名服務(wù)中獲得關(guān)于RMI對象的存根模塊,并調(diào)用其方法之一。<prelisting-type="program-listing"><![CDATA[  Hashtableenv=newHashtable();  env.put(Context.PROVIDER_URL,″t3//acme7001″);  env.put(Context.INITIAL_CONTEXT_FACTORY,  ″weblogic.jndi.WeblogicInitialContextFactory″);  Contextctx=newInitialContext(env);  Examplee=(Example)ctx.lookup(″acme.eng.example″);  result=e.example(37);]]></pre>在一個(gè)實(shí)施例中,JNDI命名上下文被封裝成RMI對象以實(shí)現(xiàn)遠(yuǎn)程訪問。因此,上面代碼顯示了一種類型的RMI引導(dǎo)(bootstrap)。前四行獲得頂級服務(wù)器上關(guān)于初始上下文的RMIstub。如果RJVM還不存在,則每一方都構(gòu)造關(guān)于另一方的RJVM,并建立用于t3協(xié)議的底層TCP接頭。調(diào)用方對象-RMIstub和被叫方對象-RMIimpl-通過RJVM進(jìn)行通信。第五行查找在名稱acme.eng.example上的另一個(gè)RMI對象,即Example和第六行調(diào)用Example方法之一。在一個(gè)實(shí)施例中,Exampleimpl不在與命名服務(wù)相同的處理設(shè)備上。在另一個(gè)實(shí)施例中,Exampleimpl是在客戶機(jī)上。Example對象的調(diào)用導(dǎo)致了適當(dāng)RJVM的創(chuàng)建,如果它們還不存在的話。II.知曉復(fù)制的或智能的存根模塊/EJB對象在圖3c中,處理設(shè)備通過復(fù)制RMI和/或EJB對象能夠向結(jié)構(gòu)300中的其它處理設(shè)備提供服務(wù)。因此,結(jié)構(gòu)300是易于伸縮的和容錯(cuò)的。通過將復(fù)制的RMI和/或EJB對象加入現(xiàn)有的處理設(shè)備或新附加的處理設(shè)備中,可以容易地將附加服務(wù)加入結(jié)構(gòu)300中。并且,由于RMI和/或EJB對象可以通過結(jié)構(gòu)300復(fù)制,因此,單個(gè)處理設(shè)備、多個(gè)處理設(shè)備、和/或通信媒體可能發(fā)生故障,但仍然不會(huì)使結(jié)構(gòu)300不能工作或顯著變壞。圖5a表示結(jié)構(gòu)500中的知曉復(fù)制(“RA”)的或智能的存根模塊580。結(jié)構(gòu)500包括與通信媒體501連接的客戶機(jī)504。服務(wù)器502和503分別與通信媒體501連接。永久性存儲(chǔ)裝置509分別通過通信媒體560和561與服務(wù)器502和503連接。在各種各樣的實(shí)施例中,通信媒體501、560和561可以是如上所述的有線和/或無線通信媒體。類似地,在一個(gè)實(shí)施例中,客戶機(jī)504、服務(wù)器502、和服務(wù)器503可以是如上所述的客戶機(jī)和服務(wù)器兩者。本領(lǐng)域的普通技術(shù)人員應(yīng)該理解,在其它可替代的實(shí)施例中,多個(gè)其它服務(wù)器和客戶機(jī)可以如省略號(hào)所示的那樣包括在結(jié)構(gòu)500中。此外,如上所述,在其它可替代的實(shí)施例中,客戶機(jī)504、服務(wù)器502、和服務(wù)器503的硬件和軟件配置如下面所描述的和圖8所示的那樣。RARMI存根模塊580是一種能夠根據(jù)負(fù)載平衡方法507和/或故障處理方法508找出幾乎所有服務(wù)提供者并在它們之間切換的智能存根模塊。在一個(gè)實(shí)施例中,RA存根模塊580包括選擇適當(dāng)負(fù)載平衡方法507和/或故障處理方法507的復(fù)制處理器506。在其它可替代的實(shí)施例中,可以實(shí)施單負(fù)載平衡方法和/或單故障處理方法。在其它可替代的實(shí)施例中,復(fù)制處理器506可以包括多負(fù)載平衡方法和/或多故障處理方法以及它們的組合。在一個(gè)實(shí)施例中,復(fù)制處理器506實(shí)現(xiàn)如下接口<prelisting-type="program-listing"><![CDATA[  publicinterfaceReplicaHandler(  ObjectloadBalance(ObjectcurrentProvider)throws  RefreshAbortedException;  ObjectfailOver(ObjectfailedProvider,  RemoteExceptione)throws  RemoteException;  }]]></pre>緊接調(diào)用一種方法之前,RA存根模塊580調(diào)用負(fù)載平衡方法507,它接管當(dāng)前服務(wù)器,并返回替換者。例如,客戶機(jī)504可能正在利用服務(wù)器502檢索數(shù)據(jù)庫509a或個(gè)人存儲(chǔ)裝置509的數(shù)據(jù)。由于服務(wù)器502負(fù)擔(dān)服務(wù)請求過重,因此,負(fù)載平衡方法507可以切換到服務(wù)器503。處理器506可能選擇完全在調(diào)用方上的服務(wù)器替換者,也許利用關(guān)于服務(wù)器502負(fù)載的信息,或者,處理器506可以請求服務(wù)器506檢索特定類型的數(shù)據(jù)。例如,處理器506可以選擇特定服務(wù)器解方程,因?yàn)榉?wù)器已經(jīng)提高了計(jì)算能力。在一個(gè)實(shí)施例中,復(fù)制處理器506實(shí)際上不需要在每次調(diào)用時(shí)都切換提供者,因?yàn)閺?fù)制處理器506正試圖使創(chuàng)建的連接數(shù)最少。圖6a是說明圖5a-b所示的負(fù)載平衡軟件507的控制流程圖。應(yīng)該理解,圖6a是說明由負(fù)載平衡方法507中的軟件完成的功能或步驟的邏輯序列的控制流程圖。在其它可替代的實(shí)施例中,可以完成附加的功能或步驟。并且,在其它可替代的實(shí)施例中,硬件可以執(zhí)行特定的功能或所有的功能。負(fù)載平衡軟件507從圓圈600所示的位置開始。然后,在邏輯塊601中確定調(diào)用線程是否已經(jīng)建立起對特定服務(wù)器的“親緣關(guān)系”??蛻魴C(jī)與協(xié)調(diào)它當(dāng)前事務(wù)處理的服務(wù)器有親緣關(guān)系,和服務(wù)器與它自己有親緣關(guān)系。如果親緣關(guān)系已建立,則將控制進(jìn)到邏輯塊602,否則,則控制進(jìn)到邏輯塊604。在邏輯塊602中確定有親緣關(guān)系的服務(wù)器是否提供所請求的服務(wù)。如果是,則將控制進(jìn)到邏輯塊603。否則,則控制進(jìn)到邏輯塊604。將有親緣關(guān)系的服務(wù)器上的服務(wù)提供者返回給邏輯塊603中的客戶機(jī)。在邏輯塊604中,聯(lián)系命名服務(wù)并獲取更新了的當(dāng)前服務(wù)提供者列表。在邏輯塊605中調(diào)用getNextProvider(取下一服務(wù)者)方法以獲取服務(wù)提供者。getNextProvider方法的各種實(shí)施例顯示在圖6b-g中,下面將作詳細(xì)描述。在邏輯塊606中獲得服務(wù)。然后,如果在邏輯塊606中沒有提供服務(wù),則調(diào)用故障處理方法508,最后,負(fù)載平衡方法507從邏輯塊608所示的位置退出。故障處理方法508的實(shí)施例表示在圖7中,下面將作詳細(xì)描述。圖6b-g示出了圖6a的邏輯塊605中所使用的getNextProvider方法的各種實(shí)施例。如圖6b所示,getNextProvider方法以循環(huán)方式選擇服務(wù)提供者。如圓圈621所示進(jìn)入getNextProvider方法620。在邏輯塊622中獲取當(dāng)前服務(wù)提供者列表。在邏輯塊623中遞增指針。在邏輯塊624中根據(jù)指針選擇下一個(gè)服務(wù)提供者,并在邏輯塊625中返回新的服務(wù)提供者,最后,如圓圈626所示退出getNextProvider方法。圖6c示出了通過隨機(jī)選擇服務(wù)提供者來獲取服務(wù)提供者的getNextProvider方法的另一種可替代實(shí)施例。如圓圈631所示進(jìn)入getNextProvider方法630。如邏輯塊632所示的那樣獲取當(dāng)前服務(wù)提供者列表。如邏輯塊633所示的那樣隨機(jī)選擇下一個(gè)服務(wù)提供者,并在邏輯塊634中返回新的服務(wù)提供者,最后,如圓圈635所示退出getNextProvider方法。getNextProvider方法還有一個(gè)實(shí)施例顯示在圖6d中,它根據(jù)各服務(wù)提供者的負(fù)載獲取服務(wù)提供者。如圓圈641所示進(jìn)入getNextProvider方法640。在邏輯塊642中獲取當(dāng)前服務(wù)提供者列表。在邏輯塊643中獲取每個(gè)服務(wù)提供者的負(fù)載。然后,在邏輯塊644中選擇負(fù)載最輕的服務(wù)提供者。最后,在邏輯塊645中返回新的服務(wù)提供者,并且如圓圈646所示退出getNextProvider方法。getNextProvider方法的再一個(gè)可替代的實(shí)施例顯示在圖6e中,它根據(jù)從服務(wù)提供者獲得的數(shù)據(jù)類型獲取服務(wù)提供者。如圓圈651所示進(jìn)入getNextProvider方法650。在邏輯塊652中獲取當(dāng)前服務(wù)提供者列表。在邏輯塊653中確定從服務(wù)提供者請求的數(shù)據(jù)的類型。然后,在邏輯塊654中根據(jù)數(shù)據(jù)類型選擇負(fù)載服務(wù)提供者。最后,在邏輯塊655中返回新的服務(wù)提供者,并且如圓圈656所示退出getNextProvider方法。getNextProvider方法的再一個(gè)實(shí)施例表示在圖6f中,它根據(jù)服務(wù)提供者物理位置選擇服務(wù)提供者。如圓圈661所示進(jìn)入getNextProvider方法660。在邏輯塊662中獲取當(dāng)前服務(wù)提供者列表。在邏輯塊663中確定到每個(gè)服務(wù)提供者的物理距離,和在邏輯塊664中選擇到正在請求的客戶機(jī)的物理距離最近的服務(wù)提供者。最后,在邏輯塊665中返回新的服務(wù)提供者,并且如圓圈666所示退出getNextProvider方法660。getNextProvider方法的還在一個(gè)的實(shí)施例顯示在圖6g中,它根據(jù)服務(wù)提供者響應(yīng)以前的請求所花費(fèi)的時(shí)間量選擇服務(wù)提供者。如圓圈671所示進(jìn)入getNextProvider方法670的控制。在邏輯塊672中獲取當(dāng)前服務(wù)提供者列表。在邏輯塊673中確定每個(gè)服務(wù)提供者響應(yīng)特定消息的時(shí)間間隔。然后,在邏輯塊674中選擇以最短時(shí)間間隔響應(yīng)的服務(wù)提供者。最后,在邏輯塊675中返回新的服務(wù)提供者,并且如圓圈676所示退出來自getNextProvider方法的控制。如果服務(wù)方法的調(diào)用以保證重試這樣的方式出故障,則RA存根模塊580調(diào)用故障處理方法508,它接管發(fā)生故障的服務(wù)器和提示是什么故障的異常,并返回一重試用的新服務(wù)器。如果新服務(wù)器不適用,則RA存根模塊580報(bào)告異常。圖7是說明圖5a-b所示的故障處理軟件508的控制流程圖。如圓圈700所示進(jìn)入故障處理方法508。在邏輯塊701從服務(wù)的當(dāng)前提供者列表中刪除發(fā)生故障的提供者。然后,調(diào)用getNextProvider方法以便獲取服務(wù)提供者。最后,在邏輯塊703中返回新的服務(wù)提供者,和如圓圈704所示退出故障處理方法508。雖然圖6-7表示復(fù)制處理器506的實(shí)施例,但其它可替代的實(shí)施例還包括以循環(huán)方式實(shí)現(xiàn)的如下功能或它們的組合。首先,要維護(hù)服務(wù)的服務(wù)器或服務(wù)提供者的列表。每當(dāng)列表需要使用和列表最近沒有被更新時(shí),處理器506就聯(lián)系如下所述的命名服務(wù)并獲取提供者的最新列表。其次,如果處理器506打算從列表中選擇提供者和存在到主服務(wù)器的現(xiàn)存的RJVM級連接,該主服務(wù)器在最后的心跳周期未接收到消息,則處理器506跳過該提供者。在一個(gè)實(shí)施例中,由于對等的消失是在幾個(gè)這樣的心跳間隔之后確定的,因此,服務(wù)器可以在以后恢復(fù)。這樣,就可以獲取基于服務(wù)器負(fù)載的負(fù)載平衡。第三,當(dāng)提供者發(fā)生故障時(shí),處理器506從列表中刪除該提供者。這樣就避免了重復(fù)嘗試使用不工作的服務(wù)提供者所引起的延遲。第四,如果服務(wù)正在從作為服務(wù)的提供者的宿主的服務(wù)器調(diào)用的,那么就使用該提供者。這有利于鏈?zhǔn)秸{(diào)用服務(wù)的提供者的共置托管(co-location)。第五,如果服務(wù)正在在事務(wù)處理的范圍內(nèi)被調(diào)用和起事務(wù)處理協(xié)調(diào)者作用的服務(wù)器作為服務(wù)的提供者的宿主,那么就使用該提供者。這有利于在事務(wù)處理范圍內(nèi)的提供者的共置托管。能夠在方法調(diào)用期間發(fā)生的故障可以分類成(1)與應(yīng)用程序有關(guān)的、或(2)與基礎(chǔ)設(shè)施有關(guān)的。在發(fā)生與應(yīng)用程序有關(guān)的故障的情況下,RA存根模塊580將不重試操作,因?yàn)椴荒芷谕纳七@種情況。在發(fā)生與基礎(chǔ)設(shè)施有關(guān)的故障的情況下,RA存根模塊580也許能夠,或也許不能夠可靠地重試操作。一些初始非冪等操作,例如遞增數(shù)據(jù)庫中字段的值,可能完成。在一個(gè)實(shí)施例中,只有當(dāng)(1)用戶已經(jīng)聲明服務(wù)方法是冪等的,或者(2)系統(tǒng)可以確定請求的處理從未開始。作為后者的一個(gè)例子,如果作為負(fù)載平衡方法的一部分,存根模塊580切換到其宿主已經(jīng)發(fā)生故障的服務(wù)提供者,RA存根模塊580將重試。作為另一個(gè)例子,RA存根模塊580得到對事務(wù)處理操作的否定確認(rèn),則RA存根模塊580將重試。RMI編譯器識(shí)別命令該編譯器生成用于對象的RA存根模塊的特殊標(biāo)志。附加的標(biāo)志可以用于規(guī)定服務(wù)方法是冪等的(idempotent)。在一個(gè)實(shí)施例中,RA存根模塊580將利用如上所述的和圖5a所示的復(fù)制處理器。附加的標(biāo)志可以用于規(guī)定不同的處理器。另外,在服務(wù)被布置的點(diǎn)上,即被結(jié)合在如下所述的集團(tuán)型命名服務(wù)的點(diǎn)上,處理器可以被取代。圖5b表示本發(fā)明的另一個(gè)實(shí)施例,其中EJB對象551用于取代圖5a所示的存根模塊。III.復(fù)制的遵從JNDI的命令服務(wù)如圖4所示,對結(jié)構(gòu)400中的服務(wù)提供者的訪問是通過遵從JNDI的命名服務(wù)獲得的,在整個(gè)結(jié)構(gòu)400中復(fù)制遵從JNDI的命令服務(wù),使得不存在任何單個(gè)故障點(diǎn)。因此,如果提供遵從JNDI的命名服務(wù)的處理設(shè)備發(fā)生了故障,則可以使用具有復(fù)制的命名服務(wù)的另一個(gè)處理設(shè)備。為了提供服務(wù)的示例,服務(wù)器在復(fù)制命名樹中的特定節(jié)點(diǎn)上通告服務(wù)的提供者。在一個(gè)實(shí)施例中,每個(gè)服務(wù)器將用于提供者的RA存根模塊附加到存儲(chǔ)在命名樹的服務(wù)器備份中的節(jié)點(diǎn)上的兼容服務(wù)庫。如果新提供(offer)的類型與現(xiàn)有庫中提供的類型不兼容,則使新提供暫停,并通過ConflictHandler接口作出往調(diào)用(callback)。在撤消任一種類型的提供之后,另一種提供將最終被裝在每一處。當(dāng)客戶機(jī)查找服務(wù)時(shí),客戶機(jī)獲取聯(lián)系服務(wù)庫的RA存根模塊以刷新服務(wù)提供者的客戶機(jī)列表。圖4表示結(jié)構(gòu)400中復(fù)制的命名服務(wù)。在一個(gè)實(shí)施例中,服務(wù)器302和303分別提供示例的服務(wù)提供者P1和P2,并且分別擁有命名服務(wù)樹402和403的復(fù)制品。命名服務(wù)樹402和403中的節(jié)點(diǎn)acme.eng.example分別擁有服務(wù)庫402a和403a,包含到Example服務(wù)提供者P1和P2的參考點(diǎn)??蛻魴C(jī)304通過在acme.eng.example節(jié)點(diǎn)上進(jìn)行命名服務(wù)查找獲取RA存根模塊304e。存根模塊304e聯(lián)系服務(wù)庫的示例以獲取到可用服務(wù)提供者的參考點(diǎn)的當(dāng)前列表。存根模塊304e可以按負(fù)載平衡和故障處理的需要在服務(wù)庫的示例之間切換。關(guān)于命名服務(wù)的初始上下文的存根模塊是知曉復(fù)制的或智能的存根模塊,它最初作命名服務(wù)提供者之間的負(fù)載平衡,并在發(fā)生故障的情況下進(jìn)行切換。命名服務(wù)樹的每個(gè)示例包含當(dāng)前命名服務(wù)提供者的完整列表。存根模塊從當(dāng)前正在使用的示例中獲取刷新列表。為了引導(dǎo)這個(gè)處理,系統(tǒng)使用DomainNamingService(域名命名服務(wù))(“DNS”)以找出示例的(可能不完整的)初始列表和從它們之一中獲取完整列表。舉例來說,可以按如下獲取關(guān)于于命名服務(wù)的初始上下文的存根模塊<prelisting-type="program-listing"><![CDATA[  Hashtableenv=newHashtable();  env.put(Context.PROVIDER_URL,“t3//acmeCluster7001”);  env.put(Context.INITIAL_CONTEXT_FACTORY,  “weblogic.jndi.WebLogiclnitialContextFactor”);  Contextctx=newInitialContext(env);]]></pre>結(jié)構(gòu)中的一些分組服務(wù)器已經(jīng)被約束在名稱acmeCluster下的DNS中。并且,應(yīng)用程序仍然能夠規(guī)定各個(gè)服務(wù)器的地址,但是,當(dāng)應(yīng)用程序首先試圖獲取存根模塊時(shí),應(yīng)用程序?qū)⒋嬖趩蝹€(gè)故障點(diǎn)。可靠的多點(diǎn)傳送協(xié)議是所期望的。在一個(gè)實(shí)施例中,通過IP多點(diǎn)傳送或點(diǎn)到點(diǎn)協(xié)議分配提供者存根,并創(chuàng)建復(fù)制的命名樹。在IP多點(diǎn)傳送實(shí)施例中,有三種類型的消息Heartbeat、Announcement(通知)、StateDump(狀態(tài)轉(zhuǎn)儲(chǔ))。Heartbeat用于在服務(wù)器之間傳輸信息,和通過它們的存在與否,識(shí)別發(fā)生故障的服務(wù)器。Announcement包含一組服務(wù)的提供和撤消。來自每個(gè)服務(wù)器的Announcement按順序編號(hào)。每個(gè)接收器處理Announcement以便識(shí)別丟失的Announcement。每個(gè)服務(wù)器在它的Heartbeat中包括已經(jīng)發(fā)送的最后一個(gè)Announcement的序號(hào)。關(guān)于丟失的Announcement的NegativeAcknowledgement(“NAK”,否認(rèn))包括在隨后輸出的Heartbeat中。為了處理NAK,每個(gè)服務(wù)器都保留服務(wù)器已經(jīng)發(fā)送的最后幾個(gè)Announcement的列表。如果關(guān)于Announcement已經(jīng)被刪除的NAK到達(dá),服務(wù)器就發(fā)送StateDump,它包含服務(wù)器的服務(wù)的完整列表和它下一個(gè)Announcement的序號(hào)。當(dāng)新服務(wù)器加入到現(xiàn)有的結(jié)構(gòu)中時(shí),新服務(wù)器NAK(否認(rèn))來自每個(gè)其它服務(wù)器的第一消息,這導(dǎo)致StateDump被發(fā)送。如果服務(wù)器在預(yù)定時(shí)間間隔之后沒有從另一個(gè)服務(wù)器接收到心跳(Heartbeat),則服務(wù)器撤消由沒有產(chǎn)生心跳(Heartbeat)的服務(wù)器提供的所有服務(wù)。IV.編程模型用在圖3-5所示的結(jié)構(gòu)中的應(yīng)用程序隨要處理應(yīng)用程序狀態(tài)的方式而定使用三種基本編程模型之一(1)無狀態(tài)的或直接的、(2)無狀態(tài)工廠(statelessfactory)的或間接的、或(3)有狀態(tài)的或有目標(biāo)的。在無狀態(tài)模型中,通過命名服務(wù)查查找表返回的智能存根模塊直接參考服務(wù)提供者。<prelisting-type="program-listing"><![CDATA[  Examplee=(Example)ctx.lookup(“acme.eng.example”);  result1=e.example(37);  result2=e.example(38);]]></pre>在該例中,由于為了負(fù)載平衡,智能存根模塊能夠在不同的服務(wù)提供者之間切換,因此,對實(shí)例的兩種調(diào)用可以由不同的服務(wù)提供者來處理。因此,Example服務(wù)對象不能夠代表應(yīng)用程序在內(nèi)部存儲(chǔ)信息。通常,只有當(dāng)提供者無狀態(tài)時(shí),才使用無狀態(tài)模型。舉例來說,純粹無狀態(tài)提供者可以計(jì)算其變元的一些數(shù)學(xué)函數(shù),并返回結(jié)果。無狀態(tài)提供者可以為它們自己存儲(chǔ)信息,例如為了財(cái)會(huì)的目的。更重要的是,無狀態(tài)提供者可以訪問底層的永久性存儲(chǔ)器,和根據(jù)需要將應(yīng)用程序的狀態(tài)裝入存儲(chǔ)器中。例如,為了使實(shí)例返回作為變元進(jìn)入其中的所有值的運(yùn)行和。該實(shí)例可以從數(shù)據(jù)庫中讀取以前的和,加入它的當(dāng)前的變元中,寫出新的值,然后將其返回。這種無狀態(tài)服務(wù)模型提高了規(guī)??缮炜s性。在無狀態(tài)工廠編程模型中,通過查找返回的智能存根模塊是創(chuàng)建其自身不是智能存根模塊的所需服務(wù)提供者的工廠。<prelisting-type="program-listing"><![CDATA[  ExampleFactorygf=(ExampleFactory)  ctx.lookup(“acme.eng.example”);  Examplee=gf.create();  result1=e.example(37);  result2=e.example(38);]]></pre>在該例中,確保對實(shí)例的兩種調(diào)用由同一服務(wù)提供者來處理。因此,服務(wù)提供者可以代表應(yīng)用程序可靠地存儲(chǔ)信息。無狀態(tài)工廠模型應(yīng)該應(yīng)用在調(diào)用者需要與提供者進(jìn)行“對話”時(shí),例如,調(diào)用者和提供者可以進(jìn)行往復(fù)協(xié)商。知曉復(fù)制的存根模塊一般與無狀態(tài)和無狀態(tài)工廠模型中的相同。唯一不同之處在于存根模塊是涉及服務(wù)提供者,還是涉及服務(wù)提供者工廠。提供者工廠存根模塊在努力創(chuàng)建提供者的過程中可以隨意地進(jìn)行故障處理,因?yàn)檫@種操作是冪等的。為了進(jìn)一步提高間接服務(wù)的可用性,應(yīng)用程序代碼必須包含圍繞服務(wù)創(chuàng)建和調(diào)用的顯式重試循環(huán)。<prelisting-type="program-listing"><![CDATA[  while(true){  try{  Examplee=gf.create();  result1=e.example(37);  result2=e.example(38);  break;  }catch(Exceptione){  if(!retryWarranred(e))  throwe;}  }]]></pre>這將會(huì),例如,處理由工廠成功創(chuàng)建的提供者e的故障。在這種情況下,應(yīng)用程序代碼應(yīng)該確定是否完成非冪等操作。為了進(jìn)一步提高適用性,應(yīng)用程序代碼可以嘗試取消這樣的操作并重試。在有狀態(tài)編程模型中,服務(wù)提供者是由一些唯一系統(tǒng)級關(guān)鍵字標(biāo)識(shí)的長壽命、有狀態(tài)對象??梢岳眠@種模型訪問的“實(shí)體”的例子包括遠(yuǎn)程文件系統(tǒng)和數(shù)據(jù)庫表中的行。目標(biāo)提供者可以由許多客戶機(jī)訪問許多次,這與每個(gè)提供者只由一個(gè)客戶機(jī)使用一次的其它兩種模型不同。用于目標(biāo)提供者的存根模塊可以通過關(guān)鍵字只不過是命名服務(wù)名稱的直接查找表,或通過關(guān)鍵字包括對創(chuàng)建操作的變元的工廠兩者之一獲取。在每一種情況中,存根模塊將不作負(fù)載平衡或故障處理。即使作的話,重試必須再次顯式地獲取存根模塊。在EJB中存在三種類型的豆模塊,其中的每一種映射到三種編程模型之一。無狀態(tài)會(huì)話豆模塊(bean)是為特定調(diào)用者創(chuàng)建的,但在調(diào)用之間不保持內(nèi)部狀態(tài)。無狀態(tài)會(huì)話豆模塊映射到無狀態(tài)模型。有狀態(tài)會(huì)話豆模塊是為特定調(diào)用者創(chuàng)建的,并在調(diào)用之間保持內(nèi)部狀態(tài)。有狀態(tài)會(huì)話豆模塊映射到無狀態(tài)工廠模型。實(shí)體豆模塊是由全系統(tǒng)關(guān)鍵字標(biāo)識(shí)的奇異的、有狀態(tài)對象。實(shí)體豆模塊映射到有狀態(tài)模型。所有三種類型的豆模塊都由稱為EJB家庭(home)的工廠創(chuàng)建的。在一個(gè)實(shí)施例中,它們創(chuàng)建的EJB家庭和豆模塊兩者都用RMI標(biāo)記。在圖3-5所示的結(jié)構(gòu)中,用于EJB家庭的存根模塊是智能存根模塊。用于無狀態(tài)會(huì)話豆模塊的存根模塊是智能存根模塊,而用于有狀態(tài)會(huì)話豆模塊和實(shí)體豆模塊的存根模塊則不是。用于基于EJB的服務(wù)的復(fù)制處理器可以在它的布置(deplotment)描述符中規(guī)定。為了創(chuàng)建間接的、基于RMI的服務(wù),這是當(dāng)對象要為調(diào)用者保持狀態(tài)時(shí)所需要的,應(yīng)用程序代碼必須顯式地構(gòu)建工廠。有目標(biāo)的、基于RMI的服務(wù)可以通過無需任何特殊標(biāo)志地運(yùn)行RMI編譯器,然后將所得的服務(wù)結(jié)合到所復(fù)制的命名樹中來創(chuàng)建。用于對象的存根模塊將直接結(jié)合到命名樹的每個(gè)示例中和將不創(chuàng)建任何服務(wù)庫。這樣就提供了關(guān)鍵字是命名服務(wù)名稱的有目標(biāo)服務(wù)。在一個(gè)實(shí)施例中,這用于創(chuàng)建遠(yuǎn)程文件系統(tǒng)。V.硬件和軟件部分圖8表示圖3-5所示的示例性服務(wù)器和/或客戶機(jī)的硬件和軟件部分。圖8的系統(tǒng)包括通用計(jì)算機(jī)800,它通過諸如連接829之類的一個(gè)或多個(gè)通信媒體與LAN840,并且也與在這里如因特網(wǎng)880所示的WAN相連接。通過LAN840,計(jì)算機(jī)800可以與諸如文件服務(wù)器841之類的其它本地計(jì)算機(jī)通信。在一個(gè)實(shí)施例中,文件服務(wù)器841是如圖3所示的服務(wù)器303。通過因特網(wǎng)880,計(jì)算機(jī)800可以與諸如萬維網(wǎng)服務(wù)器881之類的、本地的和遠(yuǎn)程的其它計(jì)算機(jī)通信。在一個(gè)實(shí)施例中,萬維網(wǎng)服務(wù)器881是如圖3所示的服務(wù)器303。應(yīng)該理解,從計(jì)算機(jī)800到因特網(wǎng)880的連接可以通過各種各樣的方式實(shí)現(xiàn),例如,直接通過連接829,通過局域網(wǎng)840,或通過調(diào)制解調(diào)器(圖中未示出)。計(jì)算機(jī)800是個(gè)人或辦公用計(jì)算機(jī),它們可以是,例如,工作站、個(gè)人計(jì)算機(jī)、或其它單用戶或多用戶系統(tǒng);一個(gè)示例性的實(shí)施例使用了SunSPARC-20工作站(SunMicrosystems,Inc.,MountainView,CA)。為了便于說明,可以將計(jì)算機(jī)800方便地劃分成硬件部分801和軟件部分802;但是,本領(lǐng)域的普通技術(shù)人員應(yīng)該理解,這種劃分是概念性的,并且多少有些隨意性,在硬件和軟件之間的界線也不是嚴(yán)格的。此外,應(yīng)該理解,在主計(jì)算機(jī)與它的附屬外設(shè)之間的界線也不是嚴(yán)格的,尤其是,被認(rèn)為是一些計(jì)算機(jī)的外設(shè)的部分也可以被認(rèn)為是其它計(jì)算機(jī)的整體部分。因此,例如,用戶I/O820可以包括鍵盤、鼠標(biāo)、和顯示監(jiān)視器,它們的每一種既可以被認(rèn)為是外圍設(shè)備,也可以被認(rèn)為是計(jì)算機(jī)本身的一部分,用戶I/O820還可以包括通常被認(rèn)為是外設(shè)的本機(jī)打印機(jī)。作為另一個(gè)例子,永久性存儲(chǔ)器808可以包括CD-ROM(光盤只讀存儲(chǔ)器)單元,它既可以是外設(shè),也可以內(nèi)置在計(jì)算機(jī)中。硬件部分801包括處理器(CPU)805、存儲(chǔ)器806、永久性存儲(chǔ)器件808、用戶I/O820、和網(wǎng)絡(luò)接口825,它們都與總線810連接。這些部分都是本領(lǐng)域的普通技術(shù)人員所熟知的,因此,只需作簡要說明。處理器805可以是,例如,微處理器、或?yàn)榱硕嘀靥幚矶鴺?gòu)成的微處理器的集合。存儲(chǔ)器806可以包括只讀存儲(chǔ)器(ROM)、隨機(jī)訪問存儲(chǔ)器(RAM)、虛擬存儲(chǔ)器、或其它存儲(chǔ)技術(shù),它們既可以是單個(gè)形式,也可以是組合形式。永久性存儲(chǔ)器件808可以包括,例如,硬磁盤、軟磁盤、或其它永久性讀-寫數(shù)據(jù)存儲(chǔ)技術(shù),它們既可以是單個(gè)形式,也可以是組合形式。它還可以包括大型或歸檔存儲(chǔ)器件,例如可以通過CD-ROM或其它大容量存儲(chǔ)技術(shù)提供的那種。(請注意,文件服務(wù)器841提供了處理器805可以利用的附加存儲(chǔ)能力。)用戶I/O(輸入/輸出)硬件820通常包括諸如CRT或平板顯示器之類的視頻顯示監(jiān)視器、字母數(shù)字式鍵盤、和鼠標(biāo)或其它點(diǎn)擊設(shè)備,可選地,還可以包括打印機(jī)、光學(xué)掃描儀,或供用戶輸入輸出用的其它設(shè)備。網(wǎng)絡(luò)I/O硬件825提供了計(jì)算機(jī)800和外界的接口。更明確地說,網(wǎng)絡(luò)I/O硬件825讓處理器805通過連接829與通過LAN840和因特網(wǎng)880的其它處理器和設(shè)備通信。軟件部分802包括操作系統(tǒng)850和在操作系統(tǒng)310控制下的一組任務(wù),例如,JavaTM應(yīng)用程序860、和重要的是,JVM軟件354和核心模塊355。操作系統(tǒng)310還讓處理器805控制諸如永久性存儲(chǔ)器件808、用戶I/O820、和網(wǎng)絡(luò)接口825之類的各種設(shè)備。處理器805與存儲(chǔ)器806和計(jì)算機(jī)系統(tǒng)800的其它部分相聯(lián)系執(zhí)行操作系統(tǒng)310、應(yīng)用860、JVM354、和核心355的軟件。在一個(gè)實(shí)施例中,軟件802包括如圖3c的服務(wù)器302中所示的網(wǎng)絡(luò)軟件302a、JVM1、RJVM2和RJVM3。在一個(gè)實(shí)施例中,JavaTM應(yīng)用程序860是如圖3c所示的JavaTM應(yīng)用程序302c。本領(lǐng)域的普通技術(shù)人員應(yīng)該理解,圖8的系統(tǒng)的意圖是用于舉例說明的,而不是用于限制的,各種各樣計(jì)算、通信、和信息設(shè)備都可以用來取代或附加到圖8所表示的設(shè)備上。例如,通過因特網(wǎng)880的連接一般涉及通過中間路由器計(jì)算機(jī)(未示出)的分組交換,和計(jì)算機(jī)800在典型的萬維網(wǎng)客戶機(jī)會(huì)話期間可能訪問任何數(shù)量的萬維網(wǎng)服務(wù)器,包括,但決不僅限于,計(jì)算機(jī)800和萬維網(wǎng)服務(wù)器881。上述對本發(fā)明優(yōu)選實(shí)施例的說明是為了圖示和描述的目的而提供的。它不是窮舉的,或?qū)⒈景l(fā)明限制在所公開的精確形式上。顯然,各種改進(jìn)和變動(dòng)對于本領(lǐng)域的普通技術(shù)人員來說是顯而易見的。選擇和描述實(shí)施例是為了最佳地解釋本發(fā)明的原理和它的實(shí)際應(yīng)用,從而使本領(lǐng)域的其它普通技術(shù)人員能夠理解有關(guān)各種實(shí)施例的和包括適用于所設(shè)想的特定用途的各種改進(jìn)在內(nèi)的本發(fā)明。應(yīng)采用下列權(quán)利要求和它們的等效物來限定本發(fā)明的范圍。權(quán)利要求1.一種分布式處理系統(tǒng),包括一個(gè)通信媒體;一個(gè)與通信媒體連接的第一處理設(shè)備,含有模擬處理設(shè)備的第一軟件程序(“JVM1”),所述第一軟件程序包括第一核心軟件層,其具有數(shù)據(jù)結(jié)構(gòu)(“RJVM1”);和與通信媒體連接的第二處理設(shè)備,含有模擬處理設(shè)備的第一軟件程序(“JVM2”),所述第一軟件程序包括第一核心軟件層,其具有數(shù)據(jù)結(jié)構(gòu)(“RJVM2”),其中來自第一處理設(shè)備的消息通過從第一處理設(shè)備中的第一核心軟件層和第一軟件程序到第二處理設(shè)備中的第一軟件程序和第一核心軟件層傳送到第二處理設(shè)備。2.如權(quán)利要求1所述的分布式處理系統(tǒng),其中第一處理設(shè)備中的第一軟件程序是JavaTM虛擬機(jī)(“JVM”)和第一處理設(shè)備中的數(shù)據(jù)結(jié)構(gòu)是遠(yuǎn)程JavaTM虛擬機(jī)(“RJVM”)和其中,第二處理設(shè)備中的第一軟件程序是JavaTM虛擬機(jī)(“JVM”)和第二處理設(shè)備中的數(shù)據(jù)結(jié)構(gòu)是遠(yuǎn)程JavaTM虛擬機(jī)(“RJVM”),和其中第二處理設(shè)備中的RJVM對應(yīng)于第一處理設(shè)備中的JVM。3.如權(quán)利要求2所述的分布式處理系統(tǒng),其中第一處理設(shè)備中的第一核心軟件層包括接頭管理器軟件部分。4.如權(quán)利要求2所述的分布式處理系統(tǒng),其中第一處理設(shè)備中的第一核心軟件層包括線程管理器軟件部分。5.如權(quán)利要求2所述的分布式處理系統(tǒng),其中第一處理設(shè)備中的RJVM包括消息擇徑軟件部分。6.如權(quán)利要求2所述的分布式處理系統(tǒng),其中第一處理設(shè)備中的RJVM包括消息壓縮軟件部分。7.如權(quán)利要求2所述的分布式處理系統(tǒng),其中第一處理設(shè)備中的RJVM包括對等消失檢測軟件部分。8.如權(quán)利要求2所述的分布式處理系統(tǒng),其中第一處理設(shè)備利用從由TCP、SSL、HTTP隧道技術(shù)、和IIOP隧道技術(shù)構(gòu)成的協(xié)議組中選擇的協(xié)議與第二處理設(shè)備通信。9.如權(quán)利要求1所述的分布式處理系統(tǒng),其中第一處理設(shè)備包括用于存儲(chǔ)JavaTM應(yīng)用程序的存儲(chǔ)器。10.如權(quán)利要求1所述的分布式處理系統(tǒng),其中第一處理設(shè)備是客戶機(jī)和第二處理設(shè)備是響應(yīng)客戶機(jī)請求向客戶機(jī)提供服務(wù)的服務(wù)器。11.如權(quán)利要求1所述的分布式處理系統(tǒng),其中第一處理設(shè)備是第二處理設(shè)備的對等物。12.如權(quán)利要求10所述的分布式處理系統(tǒng),還包括與第二處理設(shè)備連接的第二通信媒體;和與第二通信媒體連接的第三處理設(shè)備,含有1)模擬處理設(shè)備的軟件程序(“JVM3”),和2)具有第一數(shù)據(jù)結(jié)構(gòu)(“RJVM1”)和第二數(shù)據(jù)結(jié)構(gòu)(“RJVM2”)的第一核心軟件層。13.如權(quán)利要求12所述的分布式處理系統(tǒng),其中第二處理設(shè)備將消息從第一處理設(shè)備轉(zhuǎn)發(fā)到第三處理設(shè)備。14.如權(quán)利要求13所述的分布式處理系統(tǒng),其中第一處理設(shè)備中的第一核心軟件層包括用于縮減消息的縮減表,和第三處理設(shè)備包括用于讀取消息的復(fù)制縮減表。15.如權(quán)利要求13所述的分布式處理系統(tǒng),其中第三處理設(shè)備與第一通信媒體連接,和其中消息通過從第一處理設(shè)備中的第一核心軟件層到第三處理設(shè)備中的第一核心軟件層傳送到第三處理設(shè)備。16.如權(quán)利要求1所述的分布式處理系統(tǒng),其中第一處理設(shè)備包括存根模塊。17.如權(quán)利要求16所述的分布式處理系統(tǒng),其中存根模塊包括復(fù)制處理器。18.如權(quán)利要求17所述的分布式處理系統(tǒng),其中復(fù)制處理器包括負(fù)載平衡軟件部分和故障處理軟件部分。19.如權(quán)利要求1所述的分布式處理系統(tǒng),其中第一處理設(shè)備包括BnterpriseJavaTMBean對象。20.如權(quán)利要求1所述的分布式處理系統(tǒng),其中第一處理設(shè)備包括讓RA存根模塊庫存儲(chǔ)在樹節(jié)點(diǎn)上的命名樹,和第二處理設(shè)備包括命名樹的復(fù)制件。21.如權(quán)利要求1所述的分布式處理系統(tǒng),其中第一處理設(shè)備包括用于1)將RA存根模塊分配到第一和第二處理設(shè)備和2)將命名樹分配到第一和第二處理設(shè)備的多點(diǎn)發(fā)送程序。22.如權(quán)利要求1所述的分布式處理系統(tǒng),其中第一處理設(shè)備包括以無狀態(tài)程序模型編碼的應(yīng)用程序。23.如權(quán)利要求22所述的分布式處理系統(tǒng),其中應(yīng)用程序包括無狀態(tài)會(huì)話豆模塊。24.如權(quán)利要求1所述的分布式處理系統(tǒng),其中應(yīng)用程序包括以無狀態(tài)工廠程序模型編碼的應(yīng)用程序。25.如權(quán)利要求24所述的分布式處理系統(tǒng),其中應(yīng)用程序包括有狀態(tài)會(huì)話豆模塊。26.如權(quán)利要求1所述的分布式處理系統(tǒng),其中第一處理設(shè)備包括以有狀態(tài)程序模型編碼的應(yīng)用程序。27.如權(quán)利要求26所述的分布式處理系統(tǒng),其中應(yīng)用程序包括實(shí)體會(huì)話豆模塊。28.一種包含其中存儲(chǔ)了信息的信息存儲(chǔ)媒體的制品,包括第一組數(shù)字信息,用于將消息從第一處理設(shè)備中的第一遠(yuǎn)程JavaTM虛擬機(jī)傳送到第二處理設(shè)備中的第二JavaTM虛擬機(jī),其中第一遠(yuǎn)程JavaTM虛擬機(jī)包括消息擇徑軟件部分。29.如權(quán)利要求28所述的制品,其中第一遠(yuǎn)程JavaTM虛擬機(jī)還包括消息壓縮軟件部分。30.如權(quán)利要求28所述的制品,其中第一遠(yuǎn)程JavaTM虛擬機(jī)還包括對等消失檢測軟件部分。31.如權(quán)利要求28所述的制品,其中第一組數(shù)字信息還包括線程管理器軟件部分和接頭管理器軟件部分。32.如權(quán)利要求28所述的制品,還包括第二組數(shù)字信息,用于將消息傳輸?shù)酵ㄐ琶襟w。33.如權(quán)利要求28所述的制品,還包括第二組數(shù)字信息,用于將消息傳輸?shù)酵ㄐ琶襟w;和第三組數(shù)字信息,包含遠(yuǎn)程方法調(diào)用。34.如權(quán)利要求28所述的制品,還包括第二組數(shù)字信息,用于將消息傳輸?shù)酵ㄐ琶襟w;和第三組數(shù)字信息,包含企業(yè)JavaTM豆模塊。35.一種將消息從通信媒體上的第一計(jì)算機(jī)提供到第二計(jì)算機(jī)的電子信號(hào),其中電子信號(hào)被具體化在處理器可讀存儲(chǔ)器中,并包括第一信號(hào)部分,該第一信號(hào)部分代表存儲(chǔ)在第一計(jì)算機(jī)中的JavaTM虛擬機(jī)(“JVM1”)和遠(yuǎn)程JavaTM虛擬機(jī)(“RJVM1”)和存儲(chǔ)在第二計(jì)算機(jī)中的第一JavaTM虛擬機(jī)(“JVM2”)和第一遠(yuǎn)程JavaTM虛擬機(jī)(“RJVM2”),其中第一計(jì)算機(jī)中的第一RJVM1利用接頭將消息傳輸?shù)降诙?jì)算機(jī)中的第一RJVM2。全文摘要本發(fā)明提供了一種集團(tuán)型企業(yè)Java分布式處理系統(tǒng),該分布式處理系統(tǒng)包括與通信媒體連接的第一和第二計(jì)算機(jī)。第一計(jì)算機(jī)包括Java虛擬機(jī)(JVM)和含有遠(yuǎn)程Java虛擬機(jī)(RJVM)的、用于傳送消息的核心軟件層。第二計(jì)算機(jī)包括JVM和含有RJVM的核心軟件層。消息從RJVM傳送到一個(gè)計(jì)算機(jī)中的JVM,再傳送到第二個(gè)計(jì)算機(jī)的JVM和RJVM。消息可以通過中間服務(wù)器轉(zhuǎn)發(fā)或在網(wǎng)絡(luò)重新配置之后重新?lián)駨?。每個(gè)計(jì)算機(jī)包括含有復(fù)制處理器的智能存根模塊,包括負(fù)載平衡軟件部分和故障處理軟件部分。每個(gè)計(jì)算機(jī)包括在節(jié)點(diǎn)上存儲(chǔ)智能存根模塊庫的復(fù)制服務(wù)命名樹。該計(jì)算機(jī)可以以無狀態(tài)、無狀態(tài)工廠、或有狀態(tài)編程模型編程。集團(tuán)型企業(yè)Java分布式處理系統(tǒng)允許提高規(guī)??缮炜s性和容錯(cuò)性。文檔編號(hào)G06F15/16GK1330785SQ9981467公開日2002年1月9日申請日期1999年10月21日優(yōu)先權(quán)日1998年11月5日發(fā)明者迪安·B·雅各布斯,安諾·R·蘭根申請人:Bea系統(tǒng)公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1