国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      在移動(dòng)應(yīng)用程序環(huán)境中使用的產(chǎn)品的制作方法

      文檔序號(hào):6574390閱讀:182來(lái)源:國(guó)知局
      專(zhuān)利名稱(chēng):在移動(dòng)應(yīng)用程序環(huán)境中使用的產(chǎn)品的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及移動(dòng)應(yīng)用系統(tǒng),特別是涉及可以加載均衡能夠利用兼容多種低層傳輸協(xié)議的消息系統(tǒng),跨越不同種類(lèi)的移動(dòng)通信網(wǎng)創(chuàng)建動(dòng)態(tài)web頁(yè),以優(yōu)化用戶感知性能的移動(dòng)應(yīng)用的移動(dòng)應(yīng)用環(huán)境。
      背景技術(shù)
      如今對(duì)移動(dòng)計(jì)算和網(wǎng)絡(luò)連接性的需求是那些計(jì)算設(shè)備發(fā)展背后的主要驅(qū)動(dòng)力。臺(tái)式個(gè)人計(jì)算機(jī)(PC)已經(jīng)演變成了便攜式筆記本電腦。特別是近來(lái),各種移動(dòng)手持電子類(lèi)消費(fèi)品和內(nèi)置設(shè)備,包括個(gè)人數(shù)字助理(PDA)、蜂窩電話和智能尋呼機(jī)已經(jīng)具有了相當(dāng)顯著的計(jì)算能力。目前,這些消費(fèi)類(lèi)設(shè)備開(kāi)始通過(guò)各種通信網(wǎng)絡(luò),如有線或無(wú)線LAN、蜂窩、藍(lán)牙、802.11b(Wi-Fi)無(wú)線,以及通用分組無(wú)線業(yè)務(wù)(GPRS)移動(dòng)電話網(wǎng),以數(shù)據(jù)通信的形式互相通話并且與傳統(tǒng)的服務(wù)器計(jì)算機(jī)進(jìn)行通話,因此網(wǎng)絡(luò)連通性正迅速成為這些消費(fèi)類(lèi)設(shè)備的整體部分。
      移動(dòng)計(jì)算設(shè)備的發(fā)展對(duì)人們共享信息的方式已經(jīng)具有了重大的影響,并且正在改變著個(gè)人和工作的環(huán)境。傳統(tǒng)上,由于PC機(jī)固定在辦公桌上不容易移動(dòng),因此只可能在安裝了相應(yīng)軟件的PC機(jī)所在的位置工作和處理數(shù)據(jù)。但是現(xiàn)在,移動(dòng)計(jì)算設(shè)備的用戶能夠利用這些設(shè)備的移動(dòng)性方便地從遠(yuǎn)端訪問(wèn)和共享信息??缭接?jì)算機(jī)網(wǎng)絡(luò)和移動(dòng)設(shè)備共享信息的高預(yù)見(jiàn)和強(qiáng)大的方法是通過(guò)顯示動(dòng)態(tài)生成內(nèi)容的Web界面實(shí)現(xiàn)的。
      但是,移動(dòng)設(shè)備為應(yīng)用開(kāi)發(fā)者設(shè)置了一些挑戰(zhàn)。例如,移動(dòng)設(shè)備通常比常規(guī)計(jì)算機(jī)具有更有限的硬件資源。另外,移動(dòng)設(shè)備易使硬件配置的變化很大,包括不同的計(jì)算能力、存儲(chǔ)容量、顯示能力、數(shù)據(jù)輸入方式等。移動(dòng)通信網(wǎng)絡(luò)還得經(jīng)受有限的網(wǎng)絡(luò)帶寬和網(wǎng)絡(luò)能力。因此,移動(dòng)設(shè)備可能會(huì)與網(wǎng)絡(luò)連接、間歇連接或斷開(kāi)。
      第一代移動(dòng)設(shè)備通常是只請(qǐng)求型設(shè)備或是只從更智能的和資源豐富的服務(wù)器計(jì)算機(jī)請(qǐng)求服務(wù)和信息的設(shè)備。服務(wù)器采用標(biāo)準(zhǔn)的軟件架構(gòu),如Java 2 Enterprise Edition(J2EE)平臺(tái)。服務(wù)器平臺(tái)可以定義和支持允許瘦客戶端應(yīng)用調(diào)用服務(wù)器上執(zhí)行的邏輯指令的編程模型。
      如今,隨著針對(duì)移動(dòng)計(jì)算設(shè)備的更強(qiáng)大的計(jì)算平臺(tái),如PocketPC和Java 2平臺(tái)Micro Edition(J2ME)的出現(xiàn),移動(dòng)設(shè)備已經(jīng)具備做主機(jī)和處理信息并且分擔(dān)更復(fù)雜交互式事物處理的能力。實(shí)現(xiàn)移動(dòng)應(yīng)用程序的流行平臺(tái)是Java平臺(tái)。它允許同一個(gè)Java應(yīng)用程序運(yùn)行在不同的計(jì)算設(shè)備上而沒(méi)有操作系統(tǒng)和硬件兼容性的問(wèn)題。Java是一種編程語(yǔ)言,Java程序被編譯成高級(jí)機(jī)器獨(dú)立字節(jié)碼,然后由Java虛擬機(jī)翻譯后運(yùn)行。由于Java程序是獨(dú)立于機(jī)器的,因此無(wú)需對(duì)程序做任何特殊的端口修改就可以運(yùn)行在不同的硬件平臺(tái)上。
      但是,常規(guī)的移動(dòng)應(yīng)用平臺(tái)通常不如基于服務(wù)器的同級(jí)產(chǎn)品強(qiáng)健,并且未能開(kāi)發(fā)可用于移動(dòng)設(shè)備和服務(wù)器的資源來(lái)保證移動(dòng)應(yīng)用程序不受移動(dòng)計(jì)算環(huán)境的限制。例如,已知平臺(tái)不能令人滿意地均衡加載移動(dòng)應(yīng)用程序來(lái)優(yōu)化他們的用戶隨網(wǎng)絡(luò)負(fù)載和網(wǎng)絡(luò)上設(shè)備負(fù)載而改變的感知性能。另外,這些平臺(tái)不提供支持與不同種類(lèi)移動(dòng)通信網(wǎng)絡(luò)兼容的多種低層傳輸協(xié)議所必需的服務(wù)。此外,這些平臺(tái)不提供使移動(dòng)計(jì)算環(huán)境滿足對(duì)系統(tǒng)瞬時(shí)故障的容錯(cuò)性,并且當(dāng)設(shè)備與網(wǎng)絡(luò)連接中斷后繼續(xù)提供服務(wù)的適當(dāng)機(jī)制。
      因此,在用于移動(dòng)設(shè)備的移動(dòng)應(yīng)用環(huán)境領(lǐng)域,繼續(xù)需要能提供更好的服務(wù)來(lái)支持具有更豐富功能的交互式移動(dòng)應(yīng)用程序的更強(qiáng)健的應(yīng)用環(huán)境。

      發(fā)明內(nèi)容
      在本發(fā)明的一個(gè)方面中,提供了一種形成至少一個(gè)接入網(wǎng)絡(luò)的一部分的移動(dòng)應(yīng)用環(huán)境。該環(huán)境包括含有一套創(chuàng)建動(dòng)態(tài)web頁(yè)面指令的mervlet應(yīng)用集。Mervlet能夠在本地節(jié)點(diǎn)或服務(wù)器節(jié)點(diǎn)上執(zhí)行,每個(gè)節(jié)點(diǎn)與接入網(wǎng)絡(luò)耦合,以便響應(yīng)來(lái)自在本地節(jié)點(diǎn)執(zhí)行的客戶端應(yīng)用程序的請(qǐng)求,在本地節(jié)點(diǎn)上顯示動(dòng)態(tài)web頁(yè)面。該環(huán)境還包括至少一個(gè)與mervlet關(guān)聯(lián)的應(yīng)用程序?qū)傩浴?yīng)用程序?qū)傩园ㄖ辽僖粋€(gè)用來(lái)表現(xiàn)mervlet的用戶感知性能的性能屬性。環(huán)境還包括與mervlet關(guān)聯(lián)的mervlet引擎。引擎包括具有根據(jù)應(yīng)用程序的屬性操作在本地和服務(wù)器節(jié)點(diǎn)之間準(zhǔn)備執(zhí)行mervlet的第一指令集的策略模塊。
      在本發(fā)明的另一個(gè)方面中,提供了一種執(zhí)行mervlet應(yīng)用程序的方法。mervlet包括一套在形成至少一個(gè)接入網(wǎng)絡(luò)一部分的移動(dòng)應(yīng)用環(huán)境中創(chuàng)建動(dòng)態(tài)web頁(yè)面的指令集。該方法包括從在與接入網(wǎng)絡(luò)耦合的本地節(jié)點(diǎn)上執(zhí)行的客戶端應(yīng)用程序發(fā)出對(duì)mervlet應(yīng)用程序的請(qǐng)求。該方法還包括尋找與接入網(wǎng)絡(luò)耦合的本地節(jié)點(diǎn)或服務(wù)器節(jié)點(diǎn)上存儲(chǔ)的mervlet。該方法還包括當(dāng)在本地節(jié)點(diǎn)上找到mervlet后,在本地節(jié)點(diǎn)上執(zhí)行mervlet以便在本地節(jié)點(diǎn)顯示動(dòng)態(tài)web頁(yè)面。另外,該方法還包括當(dāng)在服務(wù)器節(jié)點(diǎn)上找到了mervlet,根據(jù)應(yīng)用程序?qū)傩詼?zhǔn)備在本地和服務(wù)器節(jié)點(diǎn)之間執(zhí)行mervlet。該方法還包括響應(yīng)本地節(jié)點(diǎn)上的mervlet執(zhí)行準(zhǔn)備,從服務(wù)器節(jié)點(diǎn)向本地節(jié)點(diǎn)轉(zhuǎn)移mervlet和應(yīng)用程序?qū)傩?。該方法還包括響應(yīng)服務(wù)器節(jié)點(diǎn)上的mervlet執(zhí)行準(zhǔn)備,在服務(wù)器節(jié)點(diǎn)執(zhí)行mervlet以便在本地節(jié)點(diǎn)上顯示動(dòng)態(tài)web頁(yè)面。
      在本發(fā)明的另一個(gè)方面,提供一種形成至少一個(gè)接入網(wǎng)絡(luò)一部分的移動(dòng)應(yīng)用環(huán)境。該環(huán)境包括從駐留在與接入網(wǎng)絡(luò)耦合的本地節(jié)點(diǎn)上的客戶端應(yīng)用程序發(fā)出對(duì)mervlet應(yīng)用程序的請(qǐng)求的裝置。Mervlet應(yīng)用程序工作以創(chuàng)建動(dòng)態(tài)web頁(yè)面。該環(huán)境還包括用來(lái)尋找在與接入網(wǎng)絡(luò)耦合的本地節(jié)點(diǎn)或服務(wù)器節(jié)點(diǎn)上存儲(chǔ)的mervlet的裝置。該環(huán)境還包括當(dāng)在本地節(jié)點(diǎn)上找到mervlet后,在本地節(jié)點(diǎn)上執(zhí)行mervlet以便在本地節(jié)點(diǎn)上顯示動(dòng)態(tài)web頁(yè)面的裝置。該環(huán)境還包括當(dāng)在所述服務(wù)器節(jié)點(diǎn)找到所述mervlet時(shí),根據(jù)至少一個(gè)應(yīng)用程序?qū)傩詼?zhǔn)備在本地和服務(wù)器節(jié)點(diǎn)之間執(zhí)行mervlet的裝置。應(yīng)用程序?qū)傩园ㄖ辽僖粋€(gè)用來(lái)表現(xiàn)mervlet的用戶感知性能的特征的性能屬性。另外,該環(huán)境包括響應(yīng)本地節(jié)點(diǎn)上的mervlet的執(zhí)行準(zhǔn)備,從服務(wù)器節(jié)點(diǎn)向本地節(jié)點(diǎn)轉(zhuǎn)動(dòng)mervlet的裝置。該環(huán)境還包括響應(yīng)服務(wù)器節(jié)點(diǎn)上mervlet的執(zhí)行準(zhǔn)備,在服務(wù)器節(jié)點(diǎn)上執(zhí)行mervlet以便在本地節(jié)點(diǎn)上顯示動(dòng)態(tài)web頁(yè)面的裝置。
      在本發(fā)明的另一個(gè)方面中,提供一種對(duì)在與至少一個(gè)接入網(wǎng)絡(luò)耦合的多個(gè)計(jì)算設(shè)備間對(duì)應(yīng)用程序?qū)崿F(xiàn)負(fù)載均衡的方法,所述至少一個(gè)接入網(wǎng)絡(luò)用于在設(shè)備之間進(jìn)行通信。該方法包括在與接入網(wǎng)絡(luò)耦合的服務(wù)器設(shè)備上存儲(chǔ)應(yīng)用程序。該方法還包括測(cè)量與應(yīng)用程序關(guān)聯(lián)的應(yīng)用程序?qū)傩约?,?yīng)用程序?qū)傩约辽侔ū憩F(xiàn)應(yīng)用程序的客戶感知性能的特征的至少一個(gè)性能屬性。該方法還包括從與接入網(wǎng)絡(luò)耦合的客戶端設(shè)備發(fā)出對(duì)應(yīng)用程序的請(qǐng)求。另外,該方法還包括根據(jù)應(yīng)用程序?qū)傩约?,響?yīng)該請(qǐng)求,在客戶端或服務(wù)器設(shè)備準(zhǔn)備應(yīng)用程序的執(zhí)行。該方法還包括響應(yīng)應(yīng)用程序的執(zhí)行準(zhǔn)備,在客戶端或服務(wù)器設(shè)備上執(zhí)行應(yīng)用程序。
      在本發(fā)明的再一個(gè)方面中,提供一種對(duì)形成至少一個(gè)網(wǎng)絡(luò)一部分的應(yīng)用程序?qū)崿F(xiàn)負(fù)載均衡的系統(tǒng)。該系統(tǒng)包括與為應(yīng)用程序提供不同執(zhí)行環(huán)境的網(wǎng)絡(luò)耦合的多個(gè)執(zhí)行模塊。該系統(tǒng)還包括與該網(wǎng)絡(luò)耦合的至少一個(gè)收集模塊,所述網(wǎng)絡(luò)衡量與應(yīng)用程序關(guān)聯(lián)的應(yīng)用程序?qū)傩约?。?yīng)用程序?qū)傩园ㄖ辽僖粋€(gè)表現(xiàn)應(yīng)用程序的用戶感知性能的特征的性能屬性。該系統(tǒng)還包括至少一個(gè)與網(wǎng)絡(luò)耦合的策略模塊,所述網(wǎng)絡(luò)根據(jù)應(yīng)用程序的屬性確定至少滿足一個(gè)用來(lái)確定應(yīng)用程序執(zhí)行環(huán)境的策略的第一執(zhí)行模塊。另外,該系統(tǒng)包括至少一個(gè)在第一執(zhí)行模塊上分配應(yīng)用程序的程序分配模塊。
      在本發(fā)明的另一個(gè)方面中,提供一種對(duì)在與至少一個(gè)接入網(wǎng)絡(luò)耦合的多個(gè)計(jì)算設(shè)備間對(duì)應(yīng)用程序?qū)崿F(xiàn)負(fù)載均衡的系統(tǒng),所述接入網(wǎng)絡(luò)在設(shè)備之間進(jìn)行通信。該系統(tǒng)包括在與接入網(wǎng)絡(luò)耦合的服務(wù)器設(shè)備上存儲(chǔ)應(yīng)用程序的裝置。該系統(tǒng)還包括測(cè)量應(yīng)用程序?qū)傩约难b置,應(yīng)用程序?qū)傩约ㄖ辽僖粋€(gè)表現(xiàn)應(yīng)用程序的客戶感知性能的特征的性能屬性。該系統(tǒng)還包括從與接入網(wǎng)絡(luò)耦合的客戶端設(shè)備發(fā)出對(duì)應(yīng)用程序的請(qǐng)求的裝置。另外,該系統(tǒng)包括響應(yīng)該請(qǐng)求,根據(jù)應(yīng)用程序?qū)傩约?,在服?wù)器設(shè)備或客戶端設(shè)備之一上準(zhǔn)備執(zhí)行應(yīng)用程序的裝置。該系統(tǒng)還包括響應(yīng)應(yīng)用程序的執(zhí)行準(zhǔn)備,在客戶端和服務(wù)器設(shè)備之一上執(zhí)行應(yīng)用程序的裝置。
      在本發(fā)明的另一個(gè)方面中,提供一種容錯(cuò)系統(tǒng)。該容錯(cuò)系統(tǒng)包括用于在與網(wǎng)絡(luò)耦合的多個(gè)模塊之間進(jìn)行通信的可配置的可靠的發(fā)消息系統(tǒng)。可靠的發(fā)消息系統(tǒng)包括可用來(lái)操作以生成消息并且跨越網(wǎng)絡(luò)響應(yīng)該消息以接收回復(fù)的客戶端模塊??煽康陌l(fā)消息系統(tǒng)還包括可用來(lái)操作以接收消息并且跨越網(wǎng)絡(luò)生成回復(fù)的服務(wù)器模塊??煽康陌l(fā)消息系統(tǒng)還包括響應(yīng)客戶端登錄信號(hào)在客戶端模塊上有選擇地執(zhí)行的客戶端登錄代理。客戶端登錄代理操作以存儲(chǔ)消息和回復(fù)并且直到收到回復(fù)為止向服務(wù)器模塊發(fā)送消息。另外,可靠的發(fā)消息系統(tǒng)包括響應(yīng)服務(wù)器登錄信號(hào)有選擇地在服務(wù)器模塊上執(zhí)行的服務(wù)器登錄代理。服務(wù)器登錄代理操作以存儲(chǔ)消息和回復(fù)并且向客戶端模塊發(fā)送回復(fù)??煽康陌l(fā)消息系統(tǒng)還包括與客戶端和服務(wù)器模塊中的至少一個(gè)關(guān)聯(lián)的配置代理。配置代理操作以生成客戶端和服務(wù)器的登錄信號(hào)。
      在本發(fā)明的另一個(gè)方面中,提供一種使分布式計(jì)算系統(tǒng)容錯(cuò)的方法。該方法包括在與網(wǎng)絡(luò)連接的多個(gè)計(jì)算設(shè)備之間傳遞多個(gè)消息。多個(gè)計(jì)算設(shè)備包括可以操作以生成請(qǐng)求消息并且接收回復(fù)消息的第一計(jì)算設(shè)備,和可以操作以接收請(qǐng)求消息并且響應(yīng)請(qǐng)求消息來(lái)生成回復(fù)消息的第二計(jì)算設(shè)備。該方法還包括有選擇地在第一計(jì)算設(shè)備上存儲(chǔ)請(qǐng)求消息。該方法還包括有選擇地在第二計(jì)算設(shè)備上存儲(chǔ)請(qǐng)求消息。另外,該方法包括有選擇地在第二計(jì)算設(shè)備上存儲(chǔ)回復(fù)消息。該方法還包括有選擇地在第一計(jì)算設(shè)備上存儲(chǔ)回復(fù)消息。
      在本發(fā)明的另一個(gè)方面中,提供一種容錯(cuò)的分布式計(jì)算系統(tǒng)。該系統(tǒng)包括在與網(wǎng)絡(luò)連接的多個(gè)計(jì)算設(shè)備之間傳遞多個(gè)消息的裝置。多個(gè)計(jì)算設(shè)備包括可以操作以生成請(qǐng)求消息并且接收回復(fù)消息的第一計(jì)算設(shè)備和可以操作以接收請(qǐng)求消息并且響應(yīng)請(qǐng)求消息以生成回復(fù)消息的第二計(jì)算設(shè)備。該系統(tǒng)還包括有選擇地在第一計(jì)算設(shè)備上存儲(chǔ)請(qǐng)求消息的裝置。該系統(tǒng)還包括有選擇地在第二計(jì)算設(shè)備上存儲(chǔ)請(qǐng)求消息的裝置。另外,該系統(tǒng)包括有選擇地在第二計(jì)算設(shè)備上存儲(chǔ)回復(fù)消息的裝置。該系統(tǒng)還包括有選擇地在第一計(jì)算設(shè)備上存儲(chǔ)回復(fù)消息的裝置。
      在本發(fā)明的另一個(gè)方面中,提供一種使分布式計(jì)算系統(tǒng)容錯(cuò)的方法。該方法包括從與網(wǎng)絡(luò)耦合的客戶端模塊生成消息,有地選擇在客戶端模塊存儲(chǔ)消息,并且向與網(wǎng)絡(luò)耦合的服務(wù)器模塊發(fā)送消息。該方法還包括接收消息并且有選擇地在服務(wù)器模塊存儲(chǔ)消息。該方法還包括從服務(wù)器模塊釋放前面的回復(fù)。另外,該方法包括對(duì)來(lái)自服務(wù)器模塊的消息生成回復(fù)并且有選擇地在服務(wù)器模塊上存儲(chǔ)該回復(fù)。該方法還包括向客戶端模塊發(fā)送該回復(fù)和清楚來(lái)自服務(wù)器模塊的消息。該方法還包括接收該回復(fù)并且有選擇地在客戶端模塊上存儲(chǔ)該回復(fù),清除來(lái)自客戶端模塊的消息,以及釋放來(lái)自客戶端模塊的回復(fù)。


      并入說(shuō)明書(shū)并作為說(shuō)明書(shū)的組成部分的

      了本發(fā)明的實(shí)施例,并與說(shuō)明書(shū)一起解釋了本發(fā)明的優(yōu)點(diǎn)和原理。在附圖中,圖1是表示根據(jù)本發(fā)明的Mervlet應(yīng)用程序環(huán)境的系統(tǒng)組件的方框圖;圖2是表示圖1中的Mervlet應(yīng)用程序環(huán)境的詳細(xì)操作的流程圖;圖3是表示用于圖1中的Mervlet應(yīng)用環(huán)境的移動(dòng)通信網(wǎng)的高層視圖的方框圖;圖4是表示用于圖1中Mervlet應(yīng)用環(huán)境的Mervlet應(yīng)用程序及其屬性結(jié)構(gòu)的方框圖;圖5是表示用于圖1中Mervlet應(yīng)用環(huán)境的Mervlet應(yīng)用程序生存周期的方框圖;圖6是表示用于圖1中Mervlet應(yīng)用環(huán)境的Mervlet引擎的步驟和整體結(jié)構(gòu)的方框圖;圖7是表示用于圖1中Mervlet應(yīng)用環(huán)境的用戶接口事件的時(shí)間線的方框圖;圖8是概括用于圖1中Mervlet應(yīng)用環(huán)境的性能屬性和系統(tǒng)屬性的表;圖9是表示用于圖1中Mervlet應(yīng)用環(huán)境的均衡加載Mervlet的應(yīng)用程序準(zhǔn)備優(yōu)化的詳細(xì)流程圖;圖10是表示用于圖1中Mervlet應(yīng)用環(huán)境的均衡加載Mervlet的網(wǎng)絡(luò)交換優(yōu)化的詳細(xì)流程圖;圖11是表示用于圖1中Mervlet應(yīng)用環(huán)境的可靠的消息系統(tǒng)和Mervlet引擎之間接口的方框圖;圖12是表示圖11中的可靠的消息系統(tǒng)的消息結(jié)構(gòu)的示意圖;圖13是表示圖11中的可靠的消息系統(tǒng)的詳細(xì)操作的流程圖;和
      圖14是表示圖11中的可靠的消息系統(tǒng)的不同配置和相關(guān)性能成本的表。
      具體實(shí)施例方式
      現(xiàn)在參考附圖詳細(xì)描述本發(fā)明的實(shí)現(xiàn)。下面將利用基于Java的軟件系統(tǒng)來(lái)描述本發(fā)明的優(yōu)選實(shí)施例。但是,應(yīng)該容易理解基于Java的軟件系統(tǒng)不是實(shí)現(xiàn)本發(fā)明的唯一工具,本發(fā)明可以利用其它類(lèi)型的軟件系統(tǒng)來(lái)實(shí)現(xiàn)。
      1.Mervlet應(yīng)用程序環(huán)境的概述如圖1所示,在根據(jù)本發(fā)明的應(yīng)用程序環(huán)境中,應(yīng)用程序開(kāi)發(fā)人員創(chuàng)建被稱(chēng)為“Mervlet”的移動(dòng)應(yīng)用程序。Mervlet 10是一個(gè)能夠創(chuàng)建用于移動(dòng)計(jì)算設(shè)備的動(dòng)態(tài)web頁(yè)面的可執(zhí)行應(yīng)用程序。Mervlet 10包括未翻譯代碼和局部靜態(tài)數(shù)據(jù)。Mervlet 10的未翻譯代碼可以包括用來(lái)創(chuàng)建web頁(yè)面的用戶接口邏輯和用來(lái)為頁(yè)面生成動(dòng)態(tài)內(nèi)容的應(yīng)用程序邏輯。Mervlet 10還可以訪問(wèn)外部數(shù)據(jù)文件,如ASCII文本文件。此外,與常規(guī)應(yīng)用程序不同,Mervlet 10具有一套與它關(guān)聯(lián)的獨(dú)特的應(yīng)用程序?qū)傩约?。這些屬性能夠使其跨通信網(wǎng)絡(luò)動(dòng)態(tài)地實(shí)現(xiàn)Mervlet 10的負(fù)載平衡。Mervlet 10還具有一套允許Mervlet在網(wǎng)絡(luò)中不同設(shè)備上它自己的安全環(huán)境下運(yùn)行的安全屬性集。因此,Mervlet 10具有可重部署動(dòng)態(tài)web文檔的特征。
      Mervlet 10在Mervlet運(yùn)行時(shí)間引擎12的控制下執(zhí)行,Mervlet運(yùn)行時(shí)間引擎包括客戶化標(biāo)簽庫(kù)14、用于系統(tǒng)服務(wù)的一組組件16和核心翻譯器18。Mervlet引擎12可以配置為自恢復(fù)的,以便它可以重新啟動(dòng)執(zhí)行在系統(tǒng)故障時(shí)運(yùn)行的Mervlet集。
      Mervlet引擎12利用基于通信系統(tǒng)20的消息通過(guò)網(wǎng)絡(luò)從Mervlet向遠(yuǎn)端客戶設(shè)備傳遞內(nèi)容。為了負(fù)載均衡,發(fā)消息系統(tǒng)20還可以通過(guò)網(wǎng)絡(luò)傳輸Mervlet 10。例如,發(fā)消息系統(tǒng)20可以利用點(diǎn)對(duì)點(diǎn)異步消息收發(fā)來(lái)操作請(qǐng)求和回復(fù)消息的通信。另外,Mervlet應(yīng)用程序環(huán)境支持可靠的發(fā)消息系統(tǒng)20,可靠的發(fā)消息系統(tǒng)20能夠從短暫的網(wǎng)絡(luò)和設(shè)備故障中恢復(fù)并且保證消息傳遞到末端。可靠的發(fā)消息系統(tǒng)20可以配置成允許應(yīng)用程序開(kāi)發(fā)人員、系統(tǒng)管理員或用戶為不同的恢復(fù)選項(xiàng)選擇用來(lái)緩存消息的設(shè)備。但是,本領(lǐng)域技術(shù)人員很容易識(shí)別出可在Mervlet應(yīng)用程序環(huán)境中使用的其它類(lèi)型的通信系統(tǒng),包括使用了由HTTP、SMTP或類(lèi)似傳輸協(xié)議傳輸?shù)倪h(yuǎn)端過(guò)程調(diào)用的系統(tǒng)。
      另外,Mervlet引擎12與可配置的高速緩存管理器22有接口,可配置的高速緩存管理器22用來(lái)在本地設(shè)備上緩存Mervlet來(lái)隱藏網(wǎng)絡(luò)中斷。如果可對(duì)設(shè)備的高速緩存編程,那么可以將Mervlet指定的緩存策略下載到設(shè)備上??膳渲玫母咚倬彺婀芾砥?2的緩存機(jī)制允許高速緩存管理器動(dòng)態(tài)改變它的高速緩存管理策略。
      接下來(lái)參見(jiàn)圖2和3,在步驟10的操作中,形成通信網(wǎng)絡(luò)一部分的移動(dòng)設(shè)備或用戶客戶端設(shè)備(UCD)30產(chǎn)生對(duì)Mervlet 10的請(qǐng)求。UCD 30執(zhí)行Mervlet引擎12、發(fā)消息系統(tǒng)20和高速緩存管理器22。UCD 30還可以利用象微軟公司的Internet Explorer和Pocket Internet Explorer、以及網(wǎng)景公司的Netscape Navigator的web瀏覽器顯示來(lái)自Mervlet 10的信息。Mervlet 10可以遠(yuǎn)程執(zhí)行,或者發(fā)出請(qǐng)求的UCD 30可以在本地執(zhí)行被請(qǐng)求的Mervlet 10。UCD 30利用統(tǒng)一資源標(biāo)識(shí)符(“URI”)產(chǎn)生對(duì)Mervlet 10的請(qǐng)求。為了允許利用因特網(wǎng)訪問(wèn)協(xié)議接入Mervlet,URI在網(wǎng)絡(luò)上注冊(cè)的名字空間中對(duì)Mervlet 10的名稱(chēng)和地址編碼。
      被請(qǐng)求的Mervlet 10可以存儲(chǔ)在本地發(fā)出請(qǐng)求的UCD 30或者是具有足夠存儲(chǔ)器和處理能力來(lái)執(zhí)行Mervlet(“主服務(wù)器”)32的網(wǎng)絡(luò)的遠(yuǎn)程節(jié)點(diǎn),它可以是另一個(gè)UCD 34或計(jì)算機(jī)服務(wù)器級(jí)的設(shè)備36。在步驟12中,發(fā)出請(qǐng)求的UCD 30可以利用現(xiàn)有的資源發(fā)現(xiàn)技術(shù),如Sun微系統(tǒng)公司的JINI定位主服務(wù)器32。主服務(wù)器32必須能夠執(zhí)行Mervlet 10或者在網(wǎng)絡(luò)上定位未示出的輔助服務(wù)器來(lái)執(zhí)行Mervlet 10。在后一種情況中,主服務(wù)器32必須向輔助服務(wù)器發(fā)送Mervlet 10并且從發(fā)出請(qǐng)求的UCD 30轉(zhuǎn)發(fā)請(qǐng)求。UCD 30和主服務(wù)器32可以在一個(gè)或多個(gè)接入網(wǎng)絡(luò)38上互相通信。
      在步驟14中,發(fā)出請(qǐng)求的UCD 30首先檢查Mervlet 10是否存儲(chǔ)在設(shè)備的本地高速緩存中。如果是,那么在步驟16中,在那里執(zhí)行Mervlet10。否則,在步驟18中,發(fā)出請(qǐng)求的UCD 30與主服務(wù)器32通信獲得對(duì)被請(qǐng)求的Mervlet 10的“訪問(wèn)”。然后,在步驟20,主服務(wù)器32調(diào)用Mervlet10的負(fù)載均衡策略來(lái)優(yōu)化Mervlet 10的用戶感知性能。例如,主服務(wù)器32可以決定是在本地運(yùn)行Mervlet 10(步驟22)還是將它重新部署在發(fā)出請(qǐng)求的UCD 30(步驟24)。在某些情況下,UCD 30為了在它自己的位置運(yùn)行Mervlet 10,可以發(fā)出一個(gè)顯式請(qǐng)求。但是,主服務(wù)器32可以忽略這個(gè)請(qǐng)求。如果在步驟22中,在主服務(wù)器32上執(zhí)行Mervlet 10,那么結(jié)果會(huì)通過(guò)Mervlet應(yīng)用程序環(huán)境的發(fā)消息系統(tǒng)20發(fā)送回UCD 30。
      主服務(wù)器32可以根據(jù)下面的屬性確定是否在本地還是在發(fā)出請(qǐng)求的UCD 30上運(yùn)行Mervlet 10,這些屬性包括1)UCD和服務(wù)器節(jié)點(diǎn)的存儲(chǔ)器和處理容量,2)兩個(gè)節(jié)點(diǎn)中每個(gè)的負(fù)載、網(wǎng)絡(luò)帶寬和等待時(shí)間,以及3)與Mervlet性能有關(guān)的屬性集。例如,如果Mervlet有很高的用戶交互性,例如游戲應(yīng)用程序,并且UCD具有足夠的硬件資源來(lái)執(zhí)行Mervlet,那么服務(wù)器可以確定在UCD上運(yùn)行Mervlet。相反,如果Mervlet是數(shù)據(jù)或需要很強(qiáng)的計(jì)算性,而不是交互性,例如,個(gè)性化應(yīng)用程序,那么服務(wù)器可以確定在本機(jī)上運(yùn)行Mervlet。但是,本領(lǐng)域技術(shù)人員可以根據(jù)系統(tǒng)監(jiān)視的參數(shù)清楚地識(shí)別出也可以用其它的負(fù)載均衡決定。例如,為了改進(jìn)通信能力,主服務(wù)器32和UCD 30可以實(shí)現(xiàn)網(wǎng)絡(luò)切換策略來(lái)切換設(shè)備之間的接入網(wǎng)絡(luò)。
      現(xiàn)在描述上述支持高層執(zhí)行模塊的系統(tǒng)實(shí)現(xiàn)。特別地,要說(shuō)明Mervlet應(yīng)用程序環(huán)境的幾個(gè)關(guān)鍵特征,包括1)用于Mervlet的應(yīng)用程序模型,2)Mervlet運(yùn)行時(shí)間引擎,3)跨網(wǎng)絡(luò)的用來(lái)優(yōu)化Mervlet的用戶感知性能的負(fù)載均衡方案,4)用于可恢復(fù)的Mervlet引擎和可靠的發(fā)消息系統(tǒng)的可配置容錯(cuò)方案,以及5)可配置的中斷模式操作方案。
      2.Mervlet應(yīng)用程序Mervlet 10定義了用于在移動(dòng)設(shè)備上動(dòng)態(tài)顯示生成內(nèi)容的web頁(yè)面的用戶接口。圖4示出了Mervlet 10的結(jié)構(gòu)。特別是,Mervlet 10利用獨(dú)立于用戶接口邏輯40的平臺(tái),如標(biāo)記語(yǔ)言指令,來(lái)控制格式化和顯示web頁(yè)面。它還可以處理來(lái)自web瀏覽器的請(qǐng)求和回復(fù)。例如,Mervlet 10可以支持使用可以由web瀏覽器解釋的靜態(tài)HTML、DHTML、XHTML、XML和類(lèi)似格式標(biāo)簽的web頁(yè)面。
      另外,Mervlet 10利用XML類(lèi)標(biāo)簽封裝用來(lái)為web頁(yè)面生成動(dòng)態(tài)內(nèi)容的應(yīng)用程序邏輯42。應(yīng)用程序邏輯42自己可以駐留在基于服務(wù)器的資源中,如JavaBean或定制的Mervlet標(biāo)簽庫(kù)14,頁(yè)面可以利用這些XML類(lèi)標(biāo)簽訪問(wèn)。Mervlet標(biāo)簽庫(kù)14可以是特定設(shè)備上應(yīng)用程序環(huán)境的固有的(native),或者它們也可以在負(fù)載均衡期間重新部署Mervlet時(shí)隨Mervlet 10轉(zhuǎn)移。因此,Mervlet 10將動(dòng)態(tài)web頁(yè)面的用戶接口與獨(dú)立于平臺(tái)的為可重用的基于組件設(shè)計(jì)而生成的內(nèi)容分離。
      Mervlet 10還可以通過(guò)發(fā)消息系統(tǒng)20實(shí)現(xiàn)網(wǎng)絡(luò)連接并且可以接入本地?cái)?shù)據(jù)文件。因此,Mervlet的應(yīng)用程序模型包括用戶接口邏輯40、應(yīng)用程序邏輯42、文件接入46和網(wǎng)絡(luò)接入44。
      另外,由性能屬性52和系統(tǒng)屬性54組成的新穎的應(yīng)用程序?qū)傩约?0與Mervlet 10關(guān)聯(lián),用于對(duì)網(wǎng)絡(luò)上的Mervlet進(jìn)行動(dòng)態(tài)的負(fù)載均衡。例如,Mervlet 10可以根據(jù)它的應(yīng)用程序?qū)傩?0跨移動(dòng)通信網(wǎng)在加載時(shí)和運(yùn)行時(shí)動(dòng)態(tài)重新部署,下面會(huì)進(jìn)一步描述。
      Mervlet 10還可以根據(jù)相關(guān)的安全屬性集56在它自己的安全環(huán)境下執(zhí)行。密封模型決定用戶可以使用哪些資源。利用Java 2安全模型的變體,類(lèi)加載器和所屬類(lèi)可以由在此引用的Lslam等人1997年在IEEESoftware上發(fā)表的題為“使用互聯(lián)網(wǎng)內(nèi)容的靈活的安全模型”中討論的策略機(jī)制來(lái)修改,一個(gè)例外是可以由UCD設(shè)置保護(hù)域。類(lèi)加載器生成運(yùn)行Mervlet 10的安全環(huán)境。Mervlet 10運(yùn)行之前由設(shè)備簽名并驗(yàn)證。利用安全屬性56配置的策略模塊實(shí)現(xiàn)誰(shuí)可以信任和允許何種操作的策略。Mervlet引擎12監(jiān)視Mervlet 10在運(yùn)行時(shí)的任何接入,并且一旦Mervlet試圖在它的安全環(huán)境之外運(yùn)行就終止它。通過(guò)隨著Mervlet 10重新部署安全屬性,Mervlet 10的安全環(huán)境可以在網(wǎng)絡(luò)上的不同設(shè)備轉(zhuǎn)移和重新生成。
      上述特征是Mervlet應(yīng)用程序模型特有的并且回避了生成動(dòng)態(tài)web頁(yè)面的其它類(lèi)型的技術(shù)。Mervlet 10可以作為從Sun微系統(tǒng)公司的“JavaServer PageTM-白皮書(shū)”中討論的JavaServer Page(“JSP”)模型演變來(lái)的Java應(yīng)用程序組件來(lái)實(shí)施,“JavaServer PageTM-白皮書(shū)”可以在http://java.sun.com/products/jsp/whitepaper.html找到并在此引用。基于Java的Mervlet實(shí)現(xiàn)可以接入J2ME CDC環(huán)境和由Java類(lèi)使用的資源文件,但是不能訪問(wèn)JNDI、JMS、JTA、JAF、Java Mail、RMI、JDBC和IIOP類(lèi)。另外,從JSP派生的Mervlet不能接入AWT或SWING類(lèi)?;贘2ME實(shí)現(xiàn)的Mervlet 10也不允許由Mervlet處理的web頁(yè)面內(nèi)的腳本。為了在硬件資源有限的瘦客戶端設(shè)備上優(yōu)化Mervlet的實(shí)現(xiàn),在實(shí)現(xiàn)Mervlet應(yīng)用程序環(huán)境的網(wǎng)絡(luò)上的所有節(jié)點(diǎn)都存在這些限制。因此,這樣的Mervlet實(shí)現(xiàn)是獨(dú)立于平臺(tái)的并且能夠調(diào)節(jié)現(xiàn)有Java平臺(tái)技術(shù)來(lái)滿足瘦客戶端的要求。
      除了改變JSP應(yīng)用程序編程接口(“API”),根據(jù)本發(fā)明的基于J2ME實(shí)現(xiàn)的Mervlet應(yīng)用程序環(huán)境還改變了傳統(tǒng)JSP和Servlet執(zhí)行的語(yǔ)義,如確定何時(shí)何處執(zhí)行Mervlet。下面會(huì)更詳細(xì)地描述這種實(shí)現(xiàn)方法。
      3.Mervlet引擎如圖1所示,在Mervlet引擎12上編譯和執(zhí)行Mervlet 10。引擎12能夠處理從客戶端應(yīng)用程序,例如web瀏覽器對(duì)Mervlet 10的請(qǐng)求,并且能夠產(chǎn)生Mervlet 10對(duì)客戶端瀏覽器的響應(yīng)。更具體地說(shuō),Mervlet引擎12為應(yīng)用程序邏輯42翻譯Mervlet標(biāo)簽。然后,引擎訪問(wèn)資源或標(biāo)簽庫(kù)14來(lái)為由Mervlet 10的用戶接口邏輯40定義的web頁(yè)面生成動(dòng)態(tài)內(nèi)容。標(biāo)簽庫(kù)14可以是設(shè)備本身的,或者是利用Mervlet 10重新部署的。然后,引擎12將結(jié)果以HTML或XML頁(yè)的形式發(fā)送回發(fā)出請(qǐng)求的web頁(yè)面。用于應(yīng)用程序邏輯42的任何靜態(tài)格式化標(biāo)簽都直接傳遞到發(fā)出請(qǐng)求的web瀏覽器。
      Mervlet引擎12可以運(yùn)行在用于瘦客戶端設(shè)備的J2ME CDC平臺(tái)和用于服務(wù)器級(jí)設(shè)備的J2EE平臺(tái)。J2ME平臺(tái)通常需要32位的CPU和至少2M的內(nèi)存。J2EE平臺(tái)通常需要至少是Intel奔騰(Pentium)III處理器,128M ROM和300M持續(xù)存儲(chǔ)器。根據(jù)本發(fā)明,用于Mervlet應(yīng)用程序環(huán)境的、支持在運(yùn)行時(shí)消耗6M RAM的Mervlet引擎的一種可能配置包括至少32位CPU、10M內(nèi)存和40M持續(xù)存儲(chǔ)器。但是,應(yīng)該理解,這些用于Mervlet應(yīng)用程序環(huán)境的值只意味著說(shuō)明,而不是限制。在J2EE的環(huán)境中,Mervlet引擎12可以代替J2EE中的web容器和Servlet引擎模型。因此,Mervlet引擎12可以提供具有訪問(wèn)Java虛擬機(jī)(JVM)、個(gè)人Java虛擬機(jī)(PJVM)或其它類(lèi)型虛擬機(jī)(VM)的Mervlet 10。運(yùn)行在設(shè)備固有操作系統(tǒng)頂層的VM的作用象抽象的計(jì)算機(jī)器,接收J(rèn)ava字節(jié)碼,通過(guò)動(dòng)態(tài)地將它們轉(zhuǎn)換成可由本機(jī)操作系統(tǒng)執(zhí)行的形式對(duì)它們進(jìn)行翻譯。
      如圖5所示,Mervlet引擎12通過(guò)應(yīng)用程序編程接口(API)集管理Mervlet 10的生存周期。Mervlet引擎執(zhí)行的動(dòng)作包括在步驟30,在網(wǎng)絡(luò)上尋找由客戶端應(yīng)用程序請(qǐng)求的Mervlet。所請(qǐng)求的Mervlet可以存儲(chǔ)在發(fā)出請(qǐng)求的客戶端或主服務(wù)器上。當(dāng)找到Mervlet后,Mervlet引擎創(chuàng)建一個(gè)Mervlet實(shí)例,將它加載到引擎的存儲(chǔ)器中并且在步驟32對(duì)它進(jìn)行初始化。當(dāng)初始化完成后,在步驟34,Mervlet準(zhǔn)備接收信息,Mervlet引擎能夠傳遞請(qǐng)求并且處理來(lái)自Mervlet的回復(fù)。一旦不再需要Mervlet,在步驟36,Mervlet引擎撤消Mervlet并且刪除它在引擎存儲(chǔ)器中的存在和持續(xù)存儲(chǔ)器中與Mervlet關(guān)聯(lián)的任何數(shù)據(jù)。
      在步驟38中,Mervlet引擎可以在故障后重新啟動(dòng)一個(gè)Mervlet。在步驟40,Mervlet引擎還可以在任何時(shí)候通知Mervlet它需要存儲(chǔ)它的狀態(tài)。下面結(jié)合Mervlet應(yīng)用程序環(huán)境的容錯(cuò)性能更詳細(xì)地描述Mervlet引擎利用這些動(dòng)作從故障中恢復(fù)的能力。
      下面是在基于J2ME平臺(tái)的Mervlet引擎上實(shí)現(xiàn)Mervlet的API集的例子。Mervlet API是從用于Java Servlet接口的標(biāo)準(zhǔn)Java類(lèi)得來(lái)的。Mervlet實(shí)現(xiàn)創(chuàng)建了“javax.servlet”類(lèi)的“javax.mervlet”子類(lèi)。
      這里有10個(gè)類(lèi)被認(rèn)為用于Mervlet APl的“javax.mervlet”實(shí)現(xiàn)。下面列出了與Servlet實(shí)現(xiàn)保持不變的其中5個(gè)類(lèi)。

      下面描述的5個(gè)類(lèi)是需要修改語(yǔ)義的。

      “Mervlet”類(lèi)有三個(gè)重要方法

      Mervlet引擎調(diào)用方法“Init()”來(lái)初始化Mervlet。必須在找到Mervlet后并且在Mervlet上調(diào)用了類(lèi)加載器后才調(diào)用它。必須在允許任何調(diào)用方法“Service()”之前調(diào)用方法“Init()”。在Mervlet上調(diào)用方法“Service()”來(lái)允許Mervlet引擎?zhèn)鬟f請(qǐng)求和處理來(lái)自Mervlet的回復(fù)。通過(guò)在Mervlet上調(diào)用方法“Destroy()”來(lái)撤消Mervlet。
      在需要參數(shù)的情況下,構(gòu)建Mervlet環(huán)境并且將它傳遞到方法中。因此,開(kāi)發(fā)人員可以擴(kuò)展“Mervlet”類(lèi)并且替換方法“Init()”和方法“Service(),例如,如下

      另外,可以用下面兩個(gè)附加的方法作為均衡加載Mervlet和從系統(tǒng)失效(crash)恢復(fù)的“Mervlet”類(lèi)的一部分

      當(dāng)試圖從失效中恢復(fù)Mervlet時(shí),Mervlet引擎在調(diào)用方法Init前先調(diào)用方法Restore()來(lái)恢復(fù)它自己的狀態(tài)。Mervlet引擎可以在任何時(shí)候調(diào)用方法Save()來(lái)通知Mervlet存儲(chǔ)它自己的應(yīng)用程序狀態(tài)。但是,Mervlet不應(yīng)該假設(shè)在故障發(fā)生前調(diào)用了方法Save()。
      類(lèi)“MervletContext”指定Mervlet可用的資源。它是類(lèi)“ServletContext”的一個(gè)擴(kuò)展并且包括下列附加資源i)供Mervlet使用的文件;ii)與Mervlet性能有關(guān)的屬性集,包括用戶接口和I/O特征,下面會(huì)進(jìn)一步描述;和iii)Mervlet的資源權(quán)利。類(lèi)“MervletContext”還包括獲得和設(shè)置這些資源中的每一個(gè)的方法。
      類(lèi)“MervletRequest”和“MervletResponse”分別是類(lèi)“ServletRequest”和“ServletResponse”的擴(kuò)展。Mervlet引擎利用下面的抽象發(fā)消息方法生成請(qǐng)求和響應(yīng)

      該方法的數(shù)據(jù)格式與用于HTTP-mime編碼的接口格式相同。其它實(shí)現(xiàn)可能具有不同的交換格式。
      因?yàn)镸ervlet引擎是多線程的,因此不實(shí)現(xiàn)Servlet模型的類(lèi)“SingleThreadModel”。
      接下來(lái)參見(jiàn)圖6,現(xiàn)在描述顯示當(dāng)響應(yīng)用戶客戶端設(shè)備30上的客戶端應(yīng)用程序或?yàn)g覽器60對(duì)Mervlet 10的請(qǐng)求時(shí),Mervlet引擎12操作的功能方框圖。圖6所示的Mervlet 10可以存儲(chǔ)在用戶客戶端設(shè)備30或主服務(wù)器設(shè)備32上。用戶客戶端設(shè)備30和主服務(wù)器設(shè)備32都執(zhí)行具有核心翻譯機(jī)18的Mervlet引擎12。
      首先,在發(fā)出請(qǐng)求的客戶端30上的Mervlet引擎12必須找到Mervlet10。引擎本身由簡(jiǎn)單的Mervlet組件構(gòu)成。為了定位或?qū)ふ宜?qǐng)求的Mervlet,MervletFinder模塊62翻譯請(qǐng)求加載Mervlet的客戶端30中的所有調(diào)用。MervletFinder模塊62利用已知的由高速緩存導(dǎo)出的散列函數(shù)在客戶端30上為被請(qǐng)求的Mervlet 10尋找本地高速緩存。如果找到Mervlet 10,那么MervletFinder模塊62為Mervlet分配存儲(chǔ)器并且從本地高速緩存讀取Mervlet。然后,MervletFinder模塊62調(diào)用Mervlet 10上的方法“Init”,為被請(qǐng)求的Mervlet傳遞配置數(shù)據(jù)來(lái)初始化新創(chuàng)建的Mervlet實(shí)例。當(dāng)Mervlet 10完成后,它自己調(diào)用方法“Destroy()”。如果Mervlet引擎12想刪除Mervlet 10,那么它可以在它上面調(diào)用方法“Destroy()”。
      如果MervletFinder模塊62確定所請(qǐng)求的Mervlet 10不在客戶端30,因?yàn)樵诒镜馗咚倬彺嫔蠜](méi)有匹配,那么它向主服務(wù)器設(shè)備32查詢Mervlet10。向服務(wù)器32的查詢包括Mervlet 10的名稱(chēng)、客戶端設(shè)備30的CPU使用、客戶端設(shè)備30的MIPS等級(jí)、客戶端設(shè)備30上可用的內(nèi)存和持續(xù)存儲(chǔ)器、以及任何可用的Mervlet 10的性能屬性。主服務(wù)器32可以利用該信息決定是在客戶端30上重新部署Mervlet 10還是利用下面要詳細(xì)描述的負(fù)載均衡方案切換用于服務(wù)器32和客戶端30之間通信的接入網(wǎng)絡(luò)38。
      Mervlet引擎12還包括InterceptingMervlet模塊64,它翻譯對(duì)到達(dá)主服務(wù)器32的Mervlet 10的請(qǐng)求。當(dāng)來(lái)自網(wǎng)絡(luò)的對(duì)Mervlet的請(qǐng)求消息到達(dá)后,InterceptingMervlet模塊64在服務(wù)器32上向Mervlet 10派發(fā)消息。為了響應(yīng)對(duì)Mervlet 10的請(qǐng)求,InterceptingMervlet模塊64還調(diào)用PolicyMervlet模塊66并且向它傳遞用于發(fā)出請(qǐng)求的客戶端30的系統(tǒng)性能參數(shù)。然后,PolicyMervlet模塊66確定如何均衡加載Mervlet10來(lái)優(yōu)化用戶對(duì)其的感知性能。PolicyMervlet模塊66由系統(tǒng)管理員設(shè)置。另外,主服務(wù)器32可以同時(shí)接受客戶端多個(gè)請(qǐng)求,因此PolicyMervlet模塊66和InterceptingMervlet模塊64是多線程的。
      特別是,主服務(wù)器32和客戶端30可以如下均衡加載Mervlet 10。服務(wù)器32可以選擇在服務(wù)器上執(zhí)行Mervlet 10并且允許發(fā)出請(qǐng)求的客戶端30與Mervlet進(jìn)行遠(yuǎn)程交互。另外,服務(wù)器32還可以決定向客戶端30發(fā)送Mervlet 10以便在客戶端設(shè)備上執(zhí)行。PolicyMervlet模塊66決定是否利用應(yīng)用程序準(zhǔn)備方案重新部署Mervlet 10,下面會(huì)進(jìn)一步描述。另外,服務(wù)器32或客戶端30可以利用網(wǎng)絡(luò)交換方案選擇切換用于互相通信的接入網(wǎng)絡(luò),下面會(huì)進(jìn)一步描述。
      如果服務(wù)器32決定在服務(wù)器機(jī)器上運(yùn)行被請(qǐng)求的Mervlet 10,那么PolicyMervlet模塊66從服務(wù)器的高速緩存中檢索Mervlet 10并且利用方法“new()”為它分配內(nèi)存。然后,利用合適的Mervlet環(huán)境在Mervlet10調(diào)用方法“Init()”。當(dāng)安全語(yǔ)義與J2EE中的相同時(shí),初始化的Mervlet10實(shí)例假設(shè)發(fā)出請(qǐng)求的客戶端可以信任。當(dāng)被請(qǐng)求的Mervlet 10的實(shí)例初始化后,它可以訪問(wèn)服務(wù)器上的本地?cái)?shù)據(jù)。Mervlet 10還可以通過(guò)發(fā)消息系統(tǒng)20與客戶端30上的客戶端應(yīng)用程序通信,下面會(huì)進(jìn)一步詳細(xì)描述。因此,Mervlet引擎12直接將輸出從Mervlet 10發(fā)送到發(fā)出請(qǐng)求的客戶端30。最后,通過(guò)調(diào)用Mervlet中的方法“Destroy()”來(lái)消除Mervlet 10。
      如果PolicyMervlet模塊66決定應(yīng)該在發(fā)出請(qǐng)求的客戶端30上運(yùn)行被請(qǐng)求的Mervlet 10,那么整理Mervlet并將它發(fā)送到遠(yuǎn)端機(jī)器上。為了重新部署Mervlet 10,引擎12將Mervlet打包到Mervlet存檔(“MAR”)文件68。MAR文件68最好包括1)Mervlet 10和任何關(guān)聯(lián)的標(biāo)簽庫(kù)14,2)用于Mervlet的安全環(huán)境屬性56和應(yīng)用程序?qū)傩?0,3)任何與Mervlet10關(guān)聯(lián)的數(shù)據(jù)文件,和4)描述MAR文件內(nèi)容的MAR文件清單。因此,MAR文件68具有客戶端30上的Mervlet引擎12所需外部信息,以生成合適的Mervlet環(huán)境,當(dāng)Mervlet 10啟動(dòng)時(shí)傳遞到它的方法“Init()”。MAR文件68可以被壓縮,散列然后簽名。下載者可以解壓縮,驗(yàn)證內(nèi)容沒(méi)有被破壞并且驗(yàn)證簽名。
      現(xiàn)在我們說(shuō)明Mervlet應(yīng)用程序環(huán)境如何均衡加載一個(gè)Mervlet應(yīng)用環(huán)境并且從系統(tǒng)故障中恢復(fù)。
      3.應(yīng)用程序負(fù)載均衡方案現(xiàn)在將更詳細(xì)地描述Mervlet應(yīng)用程序環(huán)境允許Mervlet引擎12均衡加載一個(gè)Mervlet 10來(lái)優(yōu)化Mervlet的性能的特征。
      根據(jù)本發(fā)明的負(fù)載均衡方案是基于用戶與向服務(wù)器32請(qǐng)求Mervlet的用戶客戶端設(shè)備30的交互。更詳細(xì)地說(shuō),Mervlet引擎12的PolivyMervlet模塊66使用客戶端用戶接口(“UI”)的事件等待時(shí)間的測(cè)量來(lái)優(yōu)化對(duì)Mervlet 10的感知性能。根據(jù)本發(fā)明的Mervlet應(yīng)用程序環(huán)境允許基于事件等待時(shí)間的負(fù)載均衡在應(yīng)用程序請(qǐng)求時(shí)間和應(yīng)用程序運(yùn)行時(shí)間執(zhí)行。
      模型負(fù)載均衡方案允許兩種類(lèi)型的優(yōu)化應(yīng)用程序準(zhǔn)備和網(wǎng)絡(luò)切換。應(yīng)用程序準(zhǔn)備策略允許服務(wù)器確定Mervlet在網(wǎng)絡(luò)上的哪個(gè)節(jié)點(diǎn)運(yùn)行。網(wǎng)絡(luò)切換策略允許發(fā)出請(qǐng)求的客戶端或服務(wù)器選擇用于服務(wù)器和客戶端之間通信的新的接入網(wǎng)絡(luò)。該模型允許開(kāi)發(fā)人員創(chuàng)建用于負(fù)載均衡算法的大類(lèi)。
      為了說(shuō)明利用負(fù)載均衡方案可能得到的性能優(yōu)化,圖7示出了客戶端設(shè)備上用戶接口事件的時(shí)間線。在用戶與Mervlet交互期間,用戶在思考和等待時(shí)間之間切換。在每次思考時(shí)間T結(jié)束后,用戶向Mervlet發(fā)送請(qǐng)求并且等待回復(fù)。Mervlet通常在一個(gè)循環(huán)中等待從用戶發(fā)出的請(qǐng)求。在接收到請(qǐng)求后,Mervlet可以執(zhí)行計(jì)算和數(shù)據(jù)訪問(wèn)來(lái)完成用戶的請(qǐng)求。然后它將回復(fù)送回。圖7所示的時(shí)間線完成了一次這樣的交互作用。
      等待時(shí)間W是與處理請(qǐng)求有關(guān)的時(shí)間。等待時(shí)間W可以分解為通信時(shí)間C和服務(wù)器計(jì)算時(shí)間S。通常,在與應(yīng)用程序交互時(shí),用戶感受到的是基于等待時(shí)間均值和方差。因此,當(dāng)?shù)却龝r(shí)間大約低于預(yù)定閾值時(shí),Mervlet的性能可以得到優(yōu)化。根據(jù)本發(fā)明的負(fù)載均衡方案可以通過(guò)將服務(wù)器上的Mervlet重新部署到更接近用戶或者適時(shí)地切換客戶端和服務(wù)器之間的接入網(wǎng)絡(luò)來(lái)優(yōu)化用于Mervlet的等待時(shí)間的均值和方差。
      為了Mervlet 10的負(fù)載均衡,Mervlet引擎12的PolicyMervlet模塊66使用包括性能屬性52和系統(tǒng)屬性54的應(yīng)用程序?qū)傩约?0,圖8中對(duì)它們進(jìn)行了匯總并且下面會(huì)更詳細(xì)地描述。
      3.1Mervlet的性能屬性用于Mervlet 10的負(fù)載均衡的應(yīng)用程序?qū)傩?0包括性能屬性集52,它基于兩個(gè)標(biāo)準(zhǔn)表現(xiàn)Mervlet1)應(yīng)用程序如何交互,和2)應(yīng)用程序的計(jì)算性和數(shù)據(jù)訪問(wèn)強(qiáng)度如何。直觀上講,開(kāi)發(fā)人員想提供能將交互式應(yīng)用程序轉(zhuǎn)移到更接近用戶,將高強(qiáng)度數(shù)據(jù)應(yīng)用程序轉(zhuǎn)移到更接近數(shù)據(jù)源,以及允許高計(jì)算強(qiáng)度的應(yīng)用程序轉(zhuǎn)移到象服務(wù)器級(jí)的更強(qiáng)大的設(shè)備上運(yùn)行的系統(tǒng)。通常,開(kāi)發(fā)人員編寫(xiě)J2EE上的服務(wù)器應(yīng)用程序,如JSP和Servlet,或者客戶端的小應(yīng)用程序(applet)之類(lèi)的Java應(yīng)用程序。例如,一個(gè)人通常編寫(xiě)游戲applet和基于服務(wù)器應(yīng)用程序的銀行業(yè)應(yīng)用系統(tǒng)。相反,Mervlet開(kāi)發(fā)人員只需要編寫(xiě)一次應(yīng)用程序,然后PolicyMervlet 66可以利用測(cè)量到的性能屬性52將Mervlet 10重新部署到更接近用戶或者切換接入網(wǎng)絡(luò)來(lái)提供更好的用于Mervlet的等待時(shí)間的均值和方差。
      3.1.1表征Mervlet交互更具體地說(shuō),用戶在與客戶端設(shè)備30交互和向Mervlet 10請(qǐng)求信息時(shí)等待事件,例如,當(dāng)他們傳遞(post)web頁(yè)表格并且點(diǎn)擊URL請(qǐng)求信息時(shí)。這些動(dòng)作,包括填寫(xiě)表格等待響應(yīng)的動(dòng)作和點(diǎn)擊鏈接獲得頁(yè)面的動(dòng)作都被稱(chēng)作用戶接口事件。當(dāng)Mervlet 10在客戶端設(shè)備30上運(yùn)行時(shí),所有的等待時(shí)間W都花在應(yīng)用程序上。如果Mervlet 10由客戶端設(shè)備30從遠(yuǎn)程在服務(wù)器32上執(zhí)行,那么一部分等待時(shí)間W用在與發(fā)出請(qǐng)求的客戶端通信上,即C,而其余的等待時(shí)間用在Mervlet自己處理客戶端請(qǐng)求上,即S。
      為了Mervlet 10的負(fù)載均衡,Mervlet應(yīng)用程序環(huán)境為每個(gè)表格和向它發(fā)送請(qǐng)求的URL測(cè)量Mervlet的下列性能屬性等待時(shí)間W的均值和方差,服務(wù)器計(jì)算時(shí)間S和通信時(shí)間C。
      例如,基于客戶端的HTML可以翻譯所有從客戶端上的瀏覽器到Mervlet的“get”和“post”。這個(gè)由Mervlet引擎的InterceptingMervlet模塊處理。當(dāng)執(zhí)行“get”和“post”時(shí),獲得第一個(gè)時(shí)間標(biāo)記T1。當(dāng)“get”和“post”返回并且在瀏覽器上顯示Mervlet生成的回復(fù)時(shí),獲得第二個(gè)時(shí)間標(biāo)記T2。另外,Mervlet的回復(fù)消息包括一個(gè)指示服務(wù)器計(jì)算所用時(shí)間的參數(shù)值S。因此,可以得到下列計(jì)算W=T2-T1;和W=S+C,其中S=服務(wù)時(shí)間;C=計(jì)算時(shí)間;
      W=等待時(shí)間;T1=第一時(shí)間標(biāo)記;和T2=第二時(shí)間標(biāo)記。
      服務(wù)器32維護(hù)分別用A(S)、A(C)、A(W)、和V(S)、V(C)和V(W)表示的服務(wù)計(jì)算時(shí)間、等待時(shí)間和通信時(shí)間均值和方差的運(yùn)行平均值。另外,為用于發(fā)出請(qǐng)求的客戶端和服務(wù)器之間通信的每個(gè)接入網(wǎng)絡(luò)計(jì)算參數(shù)W和C均值和方差的運(yùn)行平均值。
      如果參數(shù)C和S是連續(xù)隨機(jī)變量,那么可以假設(shè)下列關(guān)系式A(W)=A(C)+A(S);和V(W)=V(C)+V(S)+Cov(V,S),其中V和S的統(tǒng)計(jì)協(xié)方差=Cov(V,S)。
      此外,如果V和S是統(tǒng)計(jì)上獨(dú)立的變量,那么,可以擁有下面的關(guān)系V(W)=V(C)+V(S)因此,用于Mervlet的負(fù)載均衡策略可以通過(guò)減小A(C)和V(C)提高用戶對(duì)Mervlet的感知性能。
      例如,實(shí)現(xiàn)應(yīng)用程序準(zhǔn)備優(yōu)化的算法框架可以通過(guò)驗(yàn)證A(W)是否大于預(yù)定閾值來(lái)確定Mervlet的等待時(shí)間W是否不可接受。另外,通過(guò)驗(yàn)證A(C)是否大于A(S)來(lái)確定通信時(shí)間C是否對(duì)等待時(shí)間W有可感覺(jué)得到的影響。如果不能接受W并且可以感覺(jué)得到C,那么算法會(huì)試圖將Mervlet重新部署到另一個(gè)設(shè)備上。相反,繼續(xù)在當(dāng)前設(shè)備上運(yùn)行Mervlet。
      同樣,可以用來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)切換優(yōu)化的算法框架確定Mervlet 10使用第一接入網(wǎng)絡(luò)的平均等待時(shí)間A(W-網(wǎng)絡(luò)1)是否大于使用第二接入網(wǎng)絡(luò)的平均等待時(shí)間A(W-網(wǎng)絡(luò)2)。如果是,算法會(huì)切換到第二網(wǎng)絡(luò)network2與Mervlet進(jìn)行通信。
      本領(lǐng)域技術(shù)人員會(huì)識(shí)別出利用性能屬性52可以對(duì)Mervlet 10負(fù)載均衡實(shí)施其它優(yōu)化算法。負(fù)載均衡方案向應(yīng)用程序設(shè)計(jì)者提供了機(jī)會(huì)來(lái)創(chuàng)建不同算法提高用戶體驗(yàn)和優(yōu)化用戶接口事件的感知性能。
      3.1.2表征服務(wù)器計(jì)算時(shí)間和數(shù)據(jù)訪問(wèn)如上所述,服務(wù)器計(jì)算時(shí)間S用來(lái)測(cè)量Mervlet為客戶端應(yīng)用程序的一個(gè)請(qǐng)求生成回復(fù)所用的全部服務(wù)時(shí)間。Mervlet可以用服務(wù)器計(jì)算時(shí)間S來(lái)執(zhí)行內(nèi)部計(jì)算和訪問(wèn)外部數(shù)據(jù)文件,即S=D+I,其中S=服務(wù)時(shí)間;D=用于數(shù)據(jù)I/O的時(shí)間;和I=用于內(nèi)部計(jì)算的時(shí)間。
      為了獲得表示服務(wù)器計(jì)算時(shí)間的值S,當(dāng)服務(wù)器上的Mervlet引擎為了響應(yīng)客戶端應(yīng)用程序的請(qǐng)求而調(diào)用Mervlet的方法“Service()”時(shí),啟動(dòng)服務(wù)器上的計(jì)時(shí)器。當(dāng)Mervlet生成對(duì)請(qǐng)求的回復(fù)時(shí),計(jì)時(shí)器停止。用計(jì)時(shí)器的持續(xù)時(shí)間測(cè)量出服務(wù)器計(jì)算時(shí)間S。Mervlet引擎的I/O庫(kù)作為工具記錄用在數(shù)據(jù)I/O的時(shí)間D,和數(shù)據(jù)I/O率,DTP。可以從上面的公式計(jì)算用在內(nèi)部計(jì)算的時(shí)間I。
      Mervlet引擎還可以利用服務(wù)器上的計(jì)時(shí)器記錄運(yùn)行完成時(shí)的Mervlet平均總時(shí)間,TotalTime。Mervlet的開(kāi)發(fā)人員可以使用這些參數(shù)來(lái)細(xì)化下面會(huì)更詳細(xì)討論的負(fù)載均衡算法。
      3.1.3性能屬性工具下面是利用J2ME庫(kù)解釋Mervlet用戶接口和文件I/O事件的API集的范例。這些API需要對(duì)java.net、java.io和java.util進(jìn)行如下修改。
      為了解釋所有http請(qǐng)求,通過(guò)修改java.net來(lái)確定用來(lái)測(cè)量包括等待時(shí)間W、服務(wù)器計(jì)算時(shí)間S和通信時(shí)間C的Mervlet 10的用戶接口事件的性能屬性52。下面的方法用來(lái)收集有關(guān)基于表格和URL處理的HTML的信息,如上所述

      利用該方法可以記錄帶表格的每個(gè)請(qǐng)求/回復(fù)對(duì),并對(duì)表格中的所有事件計(jì)數(shù)。
      另外,提供下面的方法用于數(shù)據(jù)文件的讀和寫(xiě)

      參數(shù)AccessType的數(shù)據(jù)類(lèi)型可以是讀或?qū)戭?lèi)型。該方法將測(cè)量到的性能屬性寫(xiě)入文件。
      3.2系統(tǒng)屬性PolicyMervlet 66除了應(yīng)用程序?qū)傩?0外,還使用系統(tǒng)屬性54作負(fù)載均衡和網(wǎng)絡(luò)切換決定。系統(tǒng)屬性54通常與Mervlet應(yīng)用程序環(huán)境使用的計(jì)算設(shè)備的資源和處理能力有關(guān)。更具體地說(shuō),如圖8所示,為每個(gè)客戶端30和服務(wù)器32記錄如下屬性MIPS等級(jí)、CPU使用的均值和方差、內(nèi)存和持續(xù)存儲(chǔ)器的大小、以及設(shè)備所用每個(gè)網(wǎng)絡(luò)類(lèi)型的網(wǎng)絡(luò)等待時(shí)間和帶寬的均值和方差。
      3.2.1通過(guò)儀器操作的系統(tǒng)屬性為了測(cè)量系統(tǒng)屬性54,用于J2ME平臺(tái)的新庫(kù)java.sys.perf使用下面的方法

      方法System_cpu_util(Util U)讀取UNIX上的/dev/kern,以獲得UNIX系統(tǒng)上的CPU使用信息。本領(lǐng)域技術(shù)人員會(huì)識(shí)別出其它操作系統(tǒng)上出現(xiàn)的類(lèi)似調(diào)用。

      方法System_network_bandwidth(bandwidth b,accessnetwork a)利用接入網(wǎng)絡(luò)“a”確定客戶端30和主服務(wù)器32之間的網(wǎng)絡(luò)帶寬。通過(guò)從客戶端30向主服務(wù)器32發(fā)送大小S已知的包,回收相同大小的包,然后用包的大小S除以它接收包的時(shí)間來(lái)計(jì)算帶寬。為了更加精確該計(jì)算,最好在操作系統(tǒng)中執(zhí)行。

      方法sys_network_load_latency(accessnetwork a,latency l)利用互聯(lián)網(wǎng)控制消息協(xié)議(ICMP)確定網(wǎng)絡(luò)等待時(shí)間。客戶端周期性地向服務(wù)器發(fā)送ICMP包并且利用返回值保持已過(guò)去的等待時(shí)間的平均值。系統(tǒng)管理員可以利用該操作的執(zhí)行設(shè)置頻率。

      方法Network_uptime(Netuptime nu,accesslink a)確定客戶端和服務(wù)器之間的網(wǎng)絡(luò)連接有效時(shí)的時(shí)間百分比。如果ICMP包返回,那么系統(tǒng)假設(shè)網(wǎng)絡(luò)有效,否則無(wú)效。
      3.3應(yīng)用程序?qū)傩缘氖占头职l(fā)為了決定負(fù)載均衡,所測(cè)量的應(yīng)用程序?qū)傩员仨殞?duì)負(fù)載均衡算法有效。應(yīng)用程序準(zhǔn)備優(yōu)化從服務(wù)器上運(yùn)行。網(wǎng)絡(luò)切換優(yōu)化可以從服務(wù)器和客戶端運(yùn)行。有很多方法可以使服務(wù)器和客戶端動(dòng)態(tài)概括應(yīng)用程序?qū)傩浴?br> 例如,可以通過(guò)服務(wù)器上的負(fù)載均衡算法從客戶端的消息獲得發(fā)出請(qǐng)求的客戶端的系統(tǒng)屬性。服務(wù)器可以存儲(chǔ)它自己的系統(tǒng)屬性。
      客戶端可以根據(jù)當(dāng)前正在運(yùn)行的Mervlet應(yīng)用程序在本地保持關(guān)于A(W)、A(C)、A(S)、V(W)、V(C)和V(S)的信息。在思考期間,客戶端上另一個(gè)獨(dú)立的應(yīng)用程序可以收集不同網(wǎng)絡(luò)上的A(C)信息。這種操作最好以能量守恒方式并且不使客戶端電池過(guò)載的情況下執(zhí)行。通過(guò)跨每個(gè)網(wǎng)絡(luò)接口為Mervlet增加A(S)和V(C)來(lái)為每個(gè)網(wǎng)絡(luò)收集A(W)。每個(gè)測(cè)量到的A(W)值可以存儲(chǔ)在用于應(yīng)用程序準(zhǔn)備和網(wǎng)絡(luò)切換決定的向量中。
      作為選擇,客戶端可以從利用同一個(gè)基站或接入點(diǎn)與服務(wù)器通信的公共網(wǎng)絡(luò)上的其它客戶端收集A(C)信息。W、C和S可以按每個(gè)應(yīng)用程序或每個(gè)用戶每個(gè)應(yīng)用程序測(cè)量并且存儲(chǔ)在客戶端的高速緩存中??蛻舳说母咚倬彺婵梢酝ㄟ^(guò),例如服務(wù)器與其它客戶端同步。假設(shè)服務(wù)器知道哪些客戶端共享同一個(gè)接入點(diǎn)或基站。服務(wù)器會(huì)匯總共享同一基站的所有客戶端的信息。然后客戶端高速緩存按照系統(tǒng)管理員設(shè)置的頻率被周期性地發(fā)送到服務(wù)器。系統(tǒng)管理員設(shè)置周期。服務(wù)器匯總數(shù)據(jù)并且當(dāng)客戶端請(qǐng)求時(shí)向客戶端發(fā)送該信息加平滑間隔。平滑間隔是表示后續(xù)負(fù)載均衡優(yōu)化之間必須經(jīng)過(guò)的時(shí)間的預(yù)定值。
      客戶端的高速緩存還可以在客戶端之間直接同步。在這種情況下,每個(gè)客戶端通過(guò)特定網(wǎng)絡(luò),如藍(lán)牙、IRDA或802.11b向其它客戶端廣播高速緩存的信息。這種廣播信息不用通過(guò)客戶端和服務(wù)器之間的通信網(wǎng)絡(luò)傳播。客戶端自己匯總數(shù)據(jù)。系統(tǒng)管理員可以修改平滑間隔或者客戶端可以實(shí)施分布式一致算法來(lái)統(tǒng)一平滑間隔。
      只要Mervlet在服務(wù)器上運(yùn)行,服務(wù)器就可以獲得Mervlet的包括所測(cè)量的等待、通信和服務(wù)器時(shí)間的均值和方差的性能屬性。系統(tǒng)管理員可以選擇在有足夠多有關(guān)性能屬性的測(cè)量數(shù)據(jù)使用動(dòng)態(tài)概述之前Mervlet必須運(yùn)行的次數(shù),例如10次反復(fù)。
      3.3.1收集模式Mervlet的性能屬性值可以按每個(gè)用戶或每個(gè)應(yīng)用程序每個(gè)用戶或每個(gè)設(shè)備每個(gè)應(yīng)用程序每個(gè)用戶來(lái)收集。如果一個(gè)設(shè)備按照每個(gè)應(yīng)用程序測(cè)量和存儲(chǔ)性能屬性,那么負(fù)載均衡算法可以使用這個(gè)獨(dú)立于用戶的信息。另外,為了允許負(fù)載均衡算法調(diào)整到不同用戶的概述,一個(gè)設(shè)備可以按照每個(gè)應(yīng)用程序每個(gè)用戶測(cè)量和存儲(chǔ)性能屬性。
      可以期望最小化與記錄事件機(jī)制關(guān)聯(lián)的額外開(kāi)銷(xiāo)。因此,收集性能和系統(tǒng)屬性從內(nèi)存和處理角度來(lái)看應(yīng)該是非干擾的。由于用來(lái)存儲(chǔ)每個(gè)應(yīng)用程序?qū)傩缘臄?shù)據(jù)所需的存儲(chǔ)器相對(duì)很小,因此向存儲(chǔ)器寫(xiě)入該數(shù)據(jù)和讀取系統(tǒng)時(shí)鐘應(yīng)該是非干擾的。例如,假設(shè)用戶接口事件發(fā)生在500毫秒到大約1秒,那么支持大約1毫秒粒度的系統(tǒng)時(shí)鐘的一個(gè)Mervlet應(yīng)用程序環(huán)境的Java實(shí)現(xiàn)允許測(cè)量與事件有關(guān)的用戶接口時(shí)忽略額外開(kāi)銷(xiāo)。
      3.4負(fù)載均衡算法Mervlet應(yīng)用程序環(huán)境可以根據(jù)它的應(yīng)用程序?qū)傩院拖到y(tǒng)屬性利用兩種不同的優(yōu)化應(yīng)用程序準(zhǔn)備和網(wǎng)絡(luò)切換,在應(yīng)用程序加載時(shí)和運(yùn)行時(shí)均衡加載一個(gè)Mervlet。具體地講,當(dāng)用戶請(qǐng)求一個(gè)Mervlet時(shí),Mervlet引擎的PolicyMervlet模塊將決定在哪運(yùn)行Mervlet和使用哪個(gè)接入網(wǎng)絡(luò)通信。同樣,在運(yùn)行時(shí),Mervlet引擎可以決定重新部署Mervlet或切換接入網(wǎng)絡(luò)來(lái)提高用戶的感知性能。
      但是,本領(lǐng)域技術(shù)人員很容易識(shí)別出下面討論的負(fù)載均衡優(yōu)化可以用于其它移動(dòng)應(yīng)用程序環(huán)境并且不僅限于Mervlet。例如,開(kāi)發(fā)人員可以創(chuàng)建名叫Aglet的應(yīng)用程序來(lái)向遠(yuǎn)程瀏覽器或其它可以跨網(wǎng)絡(luò)從一臺(tái)機(jī)器移植到另一臺(tái)機(jī)器的應(yīng)用程序提供內(nèi)容。一個(gè)Aglet可以有允許Aglet將它自己發(fā)送到URL中指定的另一個(gè)機(jī)器的方法“dispatch(url)”。Aglet系統(tǒng)中的設(shè)備可以有系統(tǒng)數(shù)據(jù)庫(kù)中存儲(chǔ)的等待時(shí)間的均值和方差的列表。一個(gè)Aglet可以通過(guò)系統(tǒng)庫(kù)訪問(wèn)該信息并且允許自己編寫(xiě)任何策略來(lái)選擇運(yùn)行的機(jī)器。例如,可以為負(fù)載均衡在Aglet系統(tǒng)上實(shí)現(xiàn)下面程式化的編碼序列

      在這種情況下,A(W)是Aglet的平均等待時(shí)間,URL是瀏覽器機(jī)器上Aglet運(yùn)行時(shí)的URL。利用這個(gè)方法,Aglet可以1)保留在當(dāng)前機(jī)器上,或者2)將自己轉(zhuǎn)移到瀏覽器所在的機(jī)器上。
      3.4.1應(yīng)用程序準(zhǔn)備優(yōu)化接下來(lái)參見(jiàn)圖9,利用判定樹(shù)顯示應(yīng)用程序準(zhǔn)備優(yōu)化的實(shí)現(xiàn)實(shí)例。該應(yīng)用程序準(zhǔn)備算法從服務(wù)器上運(yùn)行并且等同于在合適的加載時(shí)和運(yùn)行時(shí)的應(yīng)用程序,如Mervlet。
      應(yīng)用程序準(zhǔn)備算法是基于包括平均通信時(shí)間C和服務(wù)器計(jì)算時(shí)間S的Mervlet 10的平均等待時(shí)間W或其它可重部署的應(yīng)用程序。通過(guò)將Mervlet10從服務(wù)器32轉(zhuǎn)移到發(fā)出請(qǐng)求的客戶端設(shè)備30,可以將通信時(shí)間C減小到大約為0。首先,在步驟50,該算法利用從請(qǐng)求獲得的有關(guān)客戶端的信息確定從Mervlet請(qǐng)求信息的客戶端是否有足夠的存儲(chǔ)器來(lái)運(yùn)行。同樣,在步驟52,該算法確定客戶端是否有足夠的由它的MIPS等級(jí)衡量的處理能力來(lái)運(yùn)行應(yīng)用程序。
      接下來(lái),在步驟54,該算法決定由它的CPU使用衡量的服務(wù)器上的計(jì)算負(fù)載是否大于預(yù)定的負(fù)載閾值。另外,在步驟54,它還確定與將Mervlet從服務(wù)器轉(zhuǎn)移到客戶端關(guān)聯(lián)的重新部署的額外開(kāi)銷(xiāo)是否小于預(yù)定的RO_Threshold值??梢岳孟到y(tǒng)管理員設(shè)置的關(guān)系根據(jù)Mervlet的大小來(lái)計(jì)算重新部署的額外開(kāi)銷(xiāo)。如果兩個(gè)條件都滿足,那么在步驟56,該算法指導(dǎo)服務(wù)器將Mervlet轉(zhuǎn)移到它要在上面執(zhí)行的客戶端。這個(gè)序列當(dāng)服務(wù)器變得太忙不能及時(shí)處理Mervlet時(shí)通過(guò)將Mervlet轉(zhuǎn)移到客戶端來(lái)幫助提高對(duì)Mervlet的感知性能。
      否則,在步驟58,該算法確定Mervlet的平均等待時(shí)間是否大于預(yù)定的AW_Threshold值。在步驟58,如果滿足該條件,并且由平均等待時(shí)間和平均通信時(shí)間之差衡量的平均服務(wù)器計(jì)算時(shí)間小于預(yù)定的AS_Threshold值,并且重部署額外開(kāi)銷(xiāo)小于預(yù)定的RO_Threshold值,那么在步驟60,該算法指導(dǎo)服務(wù)器將Mervlet轉(zhuǎn)移到它要在上面執(zhí)行的客戶端。當(dāng)在客戶端上重新部署Mervlet使得Mervlet用戶接口事件的等待事件太長(zhǎng)時(shí),只要隨轉(zhuǎn)移的服務(wù)器計(jì)算時(shí)間不太大,該步驟就有助于提高M(jìn)ervlet的感知性能。
      作為選擇,如果平均等待時(shí)間大于預(yù)定閾值并且平均通信時(shí)間大于平均服務(wù)器計(jì)算時(shí)間,那么算法可以確定重新部署Mervlet。
      同樣,在步驟62,該算法確定Mervlet的等待時(shí)間的方差是否大于預(yù)定VW_Threshold值。如果滿足該條件并且按等待時(shí)間方差和通信時(shí)間方差之差衡量的服務(wù)器計(jì)算時(shí)間的方差小于預(yù)定的VS_Threshold值,并且重新部署的額外開(kāi)銷(xiāo)小于預(yù)定RO_Threshold值,那么在步驟64,該算法指導(dǎo)服務(wù)器將Mervlet轉(zhuǎn)移到它要在上面運(yùn)行的客戶端。當(dāng)在客戶端上重新部署Mervlet使得Mervlet用戶接口事件的等待事件太長(zhǎng)時(shí),只要隨轉(zhuǎn)移的服務(wù)器計(jì)算時(shí)間不太大,該步驟就有助于提高M(jìn)ervlet的感知性能。否則,在步驟66,在服務(wù)器上運(yùn)行Mervlet。
      作為選擇,如果A(S)比A(C)小得多,那么應(yīng)用程序準(zhǔn)備算法可以在自己的決定中忽略A(S)。否則,如果S與C幾乎相同,那么可以使用比例系數(shù)SF來(lái)估算設(shè)備上的A(S)。SF是服務(wù)器上的SpecInt除以設(shè)備上的SpecInt所得的比值,其中SpecInt是用來(lái)比較處理器速度的已知基準(zhǔn)。
      本領(lǐng)域技術(shù)人員可以識(shí)別Mervlet準(zhǔn)備算法可以使用等待應(yīng)用程序的等待時(shí)間的其它實(shí)現(xiàn)方法。例如,其它方法可以省略比較等待時(shí)間均值和方差的步驟。
      3.4.1.1在請(qǐng)求時(shí)間的應(yīng)用程序準(zhǔn)備當(dāng)在服務(wù)器32接收到來(lái)自客戶端設(shè)備30對(duì)Mervlet請(qǐng)求時(shí),該請(qǐng)求具有下面的結(jié)構(gòu)

      Mervlet 10的性能屬性存儲(chǔ)在客戶端30的文件中并且由Mervlet URI索引,對(duì)用戶是可選的。
      然后服務(wù)器32上的PolicyMervlet模塊66查詢服務(wù)器自己的性能數(shù)據(jù)庫(kù)并且檢索下面的數(shù)據(jù)

      應(yīng)用程序準(zhǔn)備算法可以利用從客戶端30或服務(wù)器32或它們的組合獲得的應(yīng)用程序?qū)傩赃x擇運(yùn)行Mervlet 10的設(shè)備。
      如果服務(wù)器32試圖均衡加載一個(gè)新的Mervlet或者其性能屬性不是最新的Mervlet,那么它可以從網(wǎng)絡(luò)上最近運(yùn)行Mervlet的另一個(gè)設(shè)備獲得性能屬性的值。作為選擇,服務(wù)器32可以為存儲(chǔ)它的類(lèi)似設(shè)備和網(wǎng)絡(luò)上類(lèi)似應(yīng)用程序使用緩存的性能屬性值。系統(tǒng)管理員設(shè)置最新的標(biāo)準(zhǔn)。
      3.4.1.2運(yùn)行時(shí)的應(yīng)用程序準(zhǔn)備為了均衡加載當(dāng)前運(yùn)行的Mervlet,發(fā)出請(qǐng)求的客戶端30確定它的性能是否已經(jīng)下降到特定閾值以下,然后將該信息發(fā)送到服務(wù)器32。具體地講,當(dāng)Mervlet 10在服務(wù)器32上執(zhí)行,并且客戶端30從遠(yuǎn)程訪問(wèn)它時(shí),客戶端監(jiān)視來(lái)自客戶端所有用戶接口事件的等待時(shí)間的均值和方差。如果A(W)或V(W)達(dá)到預(yù)定閾值,那么客戶端30向服務(wù)器32發(fā)送包含下面信息的消息

      然后,服務(wù)器32確定Mervlet 10是否應(yīng)該在客戶端30上運(yùn)行。如果是,Mervlet和它的性能屬性被轉(zhuǎn)移到客戶端。服務(wù)器可以在它停止運(yùn)行和重新部署之前存儲(chǔ)Mervlet的狀態(tài),以便讓客戶端能夠利用存儲(chǔ)的狀態(tài)繼續(xù)回復(fù)它的執(zhí)行。
      3.4.2網(wǎng)絡(luò)切換優(yōu)化圖10示出了利用判定樹(shù)的網(wǎng)絡(luò)切換算法的實(shí)現(xiàn)。該網(wǎng)絡(luò)切換算法可以在Mervlet應(yīng)用程序環(huán)境中的服務(wù)器32和客戶端30上運(yùn)行。假設(shè)客戶端和服務(wù)器可以利用多個(gè)接入網(wǎng)絡(luò)通信,為了降低等待時(shí)間的均值和方差,網(wǎng)絡(luò)切換算法可以切換接入網(wǎng)絡(luò)。用戶可以從服務(wù)器32或另一個(gè)設(shè)備在客戶端設(shè)備30上安裝不同的網(wǎng)絡(luò)切換算法。
      首先,在步驟70,網(wǎng)絡(luò)切換算法利用當(dāng)前的接入網(wǎng)絡(luò)確定Mervlet的平均等待時(shí)間是否大于預(yù)定的AW_Threshold值,并且Mervlet的平均通信時(shí)間是否大于預(yù)定的AC_Threshold值。如果滿足這些條件并且網(wǎng)絡(luò)切換的額外開(kāi)銷(xiāo)小于預(yù)定的SO_Threshold值,那么在步驟74-82,網(wǎng)絡(luò)切換算法將試圖切換接入網(wǎng)絡(luò)??梢岳孟到y(tǒng)管理員設(shè)置的關(guān)系根據(jù)Mervlet的大小計(jì)算網(wǎng)絡(luò)切換的額外開(kāi)銷(xiāo)。否則,在步驟72保持當(dāng)前接入的網(wǎng)絡(luò)。
      接下來(lái),在步驟74,該算法為跨所有可接入網(wǎng)絡(luò)的應(yīng)用程序計(jì)算等待時(shí)間的均值和方差。然后它為可接入網(wǎng)絡(luò)組確定最小的等待時(shí)間的均值和方差。在步驟76,如果最小的平均等待時(shí)間小于預(yù)定的AW_Threshold值并且只有一個(gè)接入網(wǎng)絡(luò)NN與它匹配,那么在步驟78,該算法指導(dǎo)設(shè)備切換到接入網(wǎng)絡(luò)NN。
      在步驟80,如果最小平均等待時(shí)間小于預(yù)定的平均閾值并且兩個(gè)以上的接入網(wǎng)絡(luò)與它匹配,那么在步驟82,算法從具有最低等待時(shí)間方差的確定組中選擇要接入的網(wǎng)絡(luò)。否則,在步驟84,如果切換接入網(wǎng)絡(luò)的條件都不滿足,那么仍然使用當(dāng)前的接入網(wǎng)絡(luò)。
      作為選擇,如果該算法找到了其平均等待時(shí)間比當(dāng)前使用的接入網(wǎng)絡(luò)的平均等待時(shí)間小預(yù)定的閾值T-meantime的接入網(wǎng)絡(luò),那么該算法可以切換接入網(wǎng)絡(luò)。如果所有接入網(wǎng)絡(luò)的平均等待時(shí)間大致相同,但是出現(xiàn)等待時(shí)間的方差比當(dāng)前使用的網(wǎng)絡(luò)的等待時(shí)間的方差小預(yù)定閾值T-varianceMeanwait的網(wǎng)絡(luò),那么該算法可以切換到該網(wǎng)絡(luò)。
      3.5利用平滑利用平滑是一種能夠在負(fù)載均衡期間防止系統(tǒng)顛簸的技術(shù)。更具體地說(shuō),Mervlet應(yīng)用程序環(huán)境只允許每個(gè)時(shí)間周期T有N個(gè)網(wǎng)絡(luò)切換事件。這些參數(shù)可以隨系統(tǒng)的個(gè)性化實(shí)現(xiàn)而改變,并且可以由網(wǎng)絡(luò)的系統(tǒng)管理員設(shè)置。下面的客戶端算法可以用來(lái)確定網(wǎng)絡(luò)切換算法的平滑間隔。
      每個(gè)客戶端都有一個(gè)由與它同級(jí)的每個(gè)客戶端在時(shí)間周期T內(nèi)制作的切換列表。可以動(dòng)態(tài)創(chuàng)建同級(jí)組并且可以從服務(wù)器請(qǐng)求它。每當(dāng)客戶端切換網(wǎng)絡(luò)時(shí),它都利用特定網(wǎng)絡(luò)向鄰居廣播信息。當(dāng)且僅當(dāng)時(shí)間周期T中的切換事件次數(shù)小于N時(shí)才運(yùn)行切換算法。但是,當(dāng)鏈接本身失敗時(shí),可以配置改算法立刻切換網(wǎng)絡(luò)。作為選擇,服務(wù)器可以存儲(chǔ)一張最近制作的切換列表并且將該信息發(fā)送給每個(gè)請(qǐng)求應(yīng)用程序?qū)傩愿碌目蛻舳恕?br> 4.容錯(cuò)方案Mervlet應(yīng)用程序環(huán)境允許系統(tǒng)管理員利用下面兩種組件選擇系統(tǒng)應(yīng)該容忍的故障類(lèi)型能夠從故障恢復(fù)的Mervlet引擎12和保證傳送中的消息帶至少一次語(yǔ)義傳遞的可靠的發(fā)消息系統(tǒng)20??煽康陌l(fā)消息系統(tǒng)20可以配置如下不容錯(cuò)、可以從客戶端和網(wǎng)絡(luò)故障恢復(fù)、和可以從客戶端、網(wǎng)絡(luò)和服務(wù)器故障恢復(fù)。
      例如,在處理多個(gè)客戶端請(qǐng)求或服務(wù)器的響應(yīng)時(shí),可能會(huì)丟失服務(wù)器和UCD之間的網(wǎng)絡(luò)連接。在重新連接時(shí),如果需要,服務(wù)器會(huì)自動(dòng)運(yùn)行決定算法來(lái)確定在哪運(yùn)行Mervlet。另外,系統(tǒng)管理員能夠選擇是否需要容錯(cuò)的系統(tǒng)組件。容錯(cuò)具有的性能影響必須與所需的可靠性權(quán)衡。根據(jù)本發(fā)明的容錯(cuò)方法表現(xiàn)了移動(dòng)系統(tǒng)中基于與組件恢復(fù)關(guān)聯(lián)的代價(jià)的各種故障以及它關(guān)聯(lián)的代價(jià)。然后,它允許系統(tǒng)管理員選擇恢復(fù)的組件。
      本領(lǐng)域的技術(shù)人員很容易識(shí)別出可以利用具有可恢復(fù)應(yīng)用程序引擎和下面要討論的可靠的發(fā)消息系統(tǒng)的其它移動(dòng)應(yīng)用程序環(huán)境來(lái)實(shí)現(xiàn)本發(fā)明的容錯(cuò)方案。
      4.1可恢復(fù)的Mervlet引擎Mervlet引擎12周期性地在持續(xù)存儲(chǔ)器上存儲(chǔ)它的狀態(tài),包括所有當(dāng)前正在執(zhí)行的Mervlet 10的列表和每個(gè)Mervlet 10最近的Mervlet環(huán)境。這個(gè)列表還包括每個(gè)應(yīng)用程序的優(yōu)先級(jí)。另外,為了在持續(xù)存儲(chǔ)器中存儲(chǔ)Mervlet應(yīng)用程序的狀態(tài),引擎12可以在任何時(shí)候調(diào)用Mervlet 10上的方法Save()。
      為了重新啟動(dòng)發(fā)生故障時(shí)在設(shè)備上正在執(zhí)行Mervlet集,Mervlet引擎12可以恢復(fù)它自己的狀態(tài)。Mervlet引擎12一次重新啟動(dòng)在它的列表中的一個(gè)Mervlet 10。Mervlet的重新啟動(dòng)順序可以取決于它們的優(yōu)先級(jí)。當(dāng)Mervlet在設(shè)備故障后重新啟動(dòng)時(shí),Mervlet 10可以利用運(yùn)行時(shí)引擎12注冊(cè)該方法Restore(ApplicationContext)。數(shù)據(jù)對(duì)象ApplicationContext包括來(lái)自確定應(yīng)用程序的運(yùn)行時(shí)引擎列表的數(shù)據(jù)和它的環(huán)境。該方法Restore(ApplicationContext)可以實(shí)現(xiàn)Mervlet指定的恢復(fù)操作,包括讀取本地通信緩存器的狀態(tài)來(lái)確定客戶端30上用于Mervlet的可靠的發(fā)消息系統(tǒng)20的通信狀態(tài)。它還可以查詢服務(wù)器32上用于Mervlet的可靠的發(fā)消息系統(tǒng)20的通信狀態(tài)。當(dāng)Mervlet 10已經(jīng)恢復(fù)后,該方法可以把控制還給Mervlet引擎12。
      4.2可靠的發(fā)消息系統(tǒng)Mervlet應(yīng)用程序環(huán)境的發(fā)消息系統(tǒng)20可以利用各種消息收發(fā)協(xié)議幫助網(wǎng)絡(luò)上Mervlet之間的通信和Mervlet本身的傳輸。例如,已經(jīng)發(fā)現(xiàn)有用的消息收發(fā)協(xié)議的類(lèi)型包括單向和可以是同步或異步的請(qǐng)求回復(fù)協(xié)議。為了保證進(jìn)行中的事務(wù)得到保持,發(fā)消息系統(tǒng)20可以是容錯(cuò)的。但是可靠的發(fā)消息系統(tǒng)不負(fù)責(zé)設(shè)備故障之后對(duì)Mervlet自己的恢復(fù)。
      更具體地說(shuō),圖11所示的可靠的發(fā)消息系統(tǒng)70包括在客戶端一側(cè)用來(lái)緩存所有從客戶端30向外通信的隊(duì)列72。用戶可以配置緩存器大小。另外,每個(gè)消息用唯一的序列號(hào)標(biāo)記并且為每個(gè)元素尋找回復(fù)。如果沒(méi)有收到回復(fù),那么重新發(fā)送消息直到收到回復(fù)。當(dāng)收到回復(fù)后,從系統(tǒng)中釋放相應(yīng)的緩沖消息。
      可靠的發(fā)消息系統(tǒng)70可以這樣實(shí)現(xiàn),回復(fù)可以依附于設(shè)備的底層操作軟件或Mervlet 10的高層事件。對(duì)于通常的應(yīng)用程序通信,在回復(fù)依附于底層軟件時(shí)使用普通的形式。對(duì)于系統(tǒng)層可靠的通信,為了降低額外開(kāi)銷(xiāo),緩存器機(jī)制被依附在由Mervlet引擎接收到的請(qǐng)求上。
      為了實(shí)現(xiàn)可靠的發(fā)消息系統(tǒng)70,提供下面的API

      “to”字段標(biāo)識(shí)接收方?!癴rom”字段標(biāo)識(shí)發(fā)送方。“data”字段是要發(fā)送的連續(xù)數(shù)據(jù)。“type”是應(yīng)用程序?qū)踊蛳到y(tǒng)層。當(dāng)收到確認(rèn)后調(diào)用回調(diào)方法。利用這個(gè)API,系統(tǒng)能夠保證一個(gè)消息的至少一次傳遞。
      圖12示出了可靠的發(fā)消息系統(tǒng)70的消息格式。它一共有6個(gè)字段,前4個(gè)的大小是固定的,數(shù)據(jù)段的大小是可變的,檢驗(yàn)和是可變的并且計(jì)算所有的字段。可以利用可靠的發(fā)消息系統(tǒng)70通過(guò)將Mervlet自己包含在單個(gè)消息的數(shù)據(jù)有效負(fù)荷中在網(wǎng)絡(luò)上重新部署Mervlet。
      如圖13所示的操作中,在步驟102,每次客戶端應(yīng)用程序通過(guò)調(diào)用方法Reliable_async_send向服務(wù)器上的Mervlet發(fā)送一條消息時(shí),在步驟104,客戶端30上可靠的發(fā)消息系統(tǒng)70就查看在客戶端的持續(xù)存儲(chǔ)器,如閃存或微驅(qū)是否有可用的緩存空間。系統(tǒng)管理員設(shè)置最大緩存空間為預(yù)定值MAX_BUF。如果緩存空間足夠可用,那么在步驟106,消息被緩存并且可靠的發(fā)消息系統(tǒng)70的緩存器管理器為消息附加一個(gè)序列號(hào)。所有消息和唯一的序列號(hào)一起在兩對(duì)機(jī)器之間發(fā)送。一旦消息被緩存,調(diào)用可以返回到客戶端應(yīng)用程序。調(diào)用直到消息被緩存在持續(xù)存儲(chǔ)器后才返回到客戶端應(yīng)用程序。當(dāng)調(diào)用返回后,客戶端應(yīng)用程序保證即使客戶端設(shè)備或網(wǎng)絡(luò)故障也能夠?qū)⑾l(fā)送到相應(yīng)的Mervlet。
      在步驟108,緩存器管理線程周期性地喚醒和向服務(wù)器32發(fā)送緩存的消息并且等待前面所發(fā)送消息的回復(fù)。每個(gè)消息都有與它關(guān)聯(lián)的預(yù)定的超時(shí)值。如果在超時(shí)期間沒(méi)有收到消息回復(fù),那么重發(fā)消息。繼續(xù)該過(guò)程直到接收到回復(fù)。只有當(dāng)接入網(wǎng)絡(luò)連通并且已經(jīng)建立了到主服務(wù)器32的通路才觸發(fā)緩存器管理線程。
      在步驟110,在服務(wù)器上接收到請(qǐng)求消息后,系統(tǒng)管理員可以選擇可靠的發(fā)消息系統(tǒng)70如何處理和向服務(wù)器上的Mervlet傳遞消息。例如,在步驟112,系統(tǒng)可以立即向Mervlet傳遞消息,然后在步驟114,在持續(xù)存儲(chǔ)器,如硬盤(pán)上存儲(chǔ)消息。這樣增加了消息不在“安全”狀態(tài)的時(shí)間,但是使得Mervlet可以快速訪問(wèn)消息。作為選擇,在接收到消息后,在步驟116,服務(wù)器32上的可靠的發(fā)消息系統(tǒng)70可以將它記錄到持續(xù)存儲(chǔ)器,然后在步驟118將它傳遞到Mervlet。接著,Mervlet處理該消息(步驟122)并且生成回復(fù)(步驟124)。它還向可靠的發(fā)消息系統(tǒng)70發(fā)出它已經(jīng)響應(yīng)了的信號(hào)。在步驟126系統(tǒng)記錄回復(fù),然后在步驟128試圖將它發(fā)送到發(fā)出請(qǐng)求的客戶端。此時(shí),在步驟130,從服務(wù)器上持續(xù)存儲(chǔ)器的緩存器清除請(qǐng)求消息。
      客戶端在接收到回復(fù)后(步驟132)立即將回復(fù)存儲(chǔ)在持續(xù)存儲(chǔ)器的緩存器中(步驟134)。然后,在步驟136,它尋找匹配發(fā)送到服務(wù)器的請(qǐng)求消息并且從緩存器中將它清除。接下來(lái),在步驟138,客戶端試圖從客戶端應(yīng)用程序向相應(yīng)的回收方法傳遞回復(fù)。一旦調(diào)用回收方法,就在步驟140釋放回復(fù)。在步驟120,當(dāng)從相同的客戶端接收到序列號(hào)較大的下一個(gè)消息時(shí),在服務(wù)器上釋放回復(fù)所用的緩存器。如果服務(wù)器收到的消息是重復(fù)的,那么就刪除它。系統(tǒng)管理員設(shè)置確認(rèn)緩存器的大小為ACK_BUF。
      4.2.1尋找到主服務(wù)器的連接可靠的發(fā)消息系統(tǒng)70管理客戶端設(shè)備30和服務(wù)器32之間的連接。系統(tǒng)周期性地喚醒和執(zhí)行下列任務(wù)。它查看是否可以通過(guò)任何客戶端接入網(wǎng)絡(luò),如藍(lán)牙、無(wú)線802.11b(Wi-Fi)、IRDA和通用分組無(wú)線服務(wù)(GPRS)移動(dòng)電話網(wǎng)802.11b來(lái)聯(lián)系主服務(wù)器32。它是通過(guò)向主服務(wù)器32發(fā)送ICMPPing來(lái)完成的。提供匹配的第一接入網(wǎng)絡(luò)用于客戶端30和服務(wù)器32之間的進(jìn)一步通信??煽康陌l(fā)消息系統(tǒng)70還喚醒它的緩存器管理線程并且告訴它使用哪種協(xié)議與服務(wù)器32通信。
      4.2.2可配置性容錯(cuò)的代價(jià)在于所有寫(xiě)盤(pán)都耗費(fèi)時(shí)間和磁盤(pán)空間。接下來(lái)參見(jiàn)圖14,它示出了實(shí)現(xiàn)可靠的發(fā)消息系統(tǒng)70的幾種配置。第一行描述了消息記錄到服務(wù)器32和客戶端30的技術(shù),第二行描述了只在客戶端30記錄的消息,第三行描述了不記錄消息的技術(shù)。前兩個(gè)選擇提供下面可替換的容錯(cuò)。如果一個(gè)用戶希望降低運(yùn)行時(shí)間的消耗并且想把更多的時(shí)間用在恢復(fù)應(yīng)用程序上,那么可以考慮第二種選擇。第一種選擇由于要將消息記錄客戶端和服務(wù)器,因此消耗的時(shí)間較高,但是對(duì)用戶的好處是利用可靠的發(fā)消息系統(tǒng)恢復(fù)應(yīng)用程序更加強(qiáng)健。
      4.3處理故障當(dāng)服務(wù)器32從故障中恢復(fù)后,它查看圖13中所示在步驟106存儲(chǔ)在自己持續(xù)存儲(chǔ)器上的緩存器列表??煽康陌l(fā)消息系統(tǒng)70假設(shè)設(shè)備持續(xù)存儲(chǔ)器上的數(shù)據(jù)沒(méi)有被破壞,但是在設(shè)備主存儲(chǔ)器上的數(shù)據(jù)被破壞了。如果列表中包含來(lái)自客戶端30的消息,那么可靠的發(fā)消息系統(tǒng)70假設(shè)請(qǐng)求還沒(méi)有被處理,并且試圖將消息傳遞到服務(wù)器上相應(yīng)的Mervlet。同樣,如果服務(wù)器32在故障恢復(fù)找到了緩存的回復(fù),那么系統(tǒng)將它發(fā)送到相應(yīng)的目標(biāo)客戶端30。
      為了從故障中成功地恢復(fù)整個(gè)Mervlet應(yīng)用程序環(huán)境,使用下面的恢復(fù)操作順序1)可靠的發(fā)消息系統(tǒng)70達(dá)到一致的狀態(tài)。
      2)下面要描述的高速緩存基礎(chǔ)結(jié)構(gòu)恢復(fù)到一致的狀態(tài)。
      3)Mervlet引擎12達(dá)到一致的狀態(tài)。
      4)每個(gè)Mervlet 10依次恢復(fù)到一致的狀態(tài)。
      5.中斷模式計(jì)算客戶端設(shè)備30可能由于兩種原因與服務(wù)器32或其它設(shè)備發(fā)生斷開(kāi)網(wǎng)絡(luò)故障或系統(tǒng)管理員或用戶主動(dòng)采取行動(dòng),例如,為了降低網(wǎng)絡(luò)的帶寬使用。Mervlet應(yīng)用程序環(huán)境提供兩種特征來(lái)支持中斷操作異步可靠的消息收發(fā)和Mervlet高速緩存。
      異步可靠的消息收發(fā)允許當(dāng)客戶端和服務(wù)器之間不存在網(wǎng)絡(luò)連接時(shí)在客戶端30或者服務(wù)器32將消息排隊(duì)。當(dāng)應(yīng)用程序發(fā)送消息時(shí),如上所述在本地緩存或者排隊(duì)。只有當(dāng)建立了網(wǎng)絡(luò)連接后才發(fā)送消息。當(dāng)重新建立了網(wǎng)絡(luò)連接后,異步可靠的發(fā)消息系統(tǒng)重新發(fā)送在緩沖隊(duì)列中等待的消息。可靠的發(fā)消息系統(tǒng)70還可以在持續(xù)存儲(chǔ)器中存儲(chǔ)消息隊(duì)列,因此可以如上所述容忍設(shè)備和服務(wù)器的故障。
      第二個(gè)用于斷開(kāi)模式計(jì)算的機(jī)制要求在客戶端設(shè)備30的本地高速緩存中存儲(chǔ)Mervlet。如圖1所示,高速存儲(chǔ)器由高速緩存管理器22管理。即使沒(méi)有網(wǎng)絡(luò)連接,高速緩存也可以訪問(wèn)瀏覽器或其它客戶端應(yīng)用程序。如果客戶端30的連接中斷,高速緩存上的Mervlet仍然可以服務(wù)本地瀏覽器。另外,本地瀏覽器仍然可以從本地高速緩存請(qǐng)求Mervlet。
      可以用各種方法管理高速緩存,但是最好能允許使用象貯藏(hoarding)之類(lèi)的技術(shù)的智能預(yù)取。當(dāng)服務(wù)器對(duì)未來(lái)Mervlet的訪問(wèn)有更多了解的情況下,Mervlet高速緩存機(jī)制允許客戶端30向服務(wù)器32委托各種高速緩存管理決定,例如合作設(shè)置或信息被前攝地(proactively)推進(jìn)到客戶端設(shè)備30時(shí)設(shè)置。因此,可以由客戶端30、服務(wù)器32或兩者結(jié)合來(lái)設(shè)置高速緩存管理策略。在運(yùn)行時(shí),服務(wù)器32可以更新高速緩存的替換,并且為存儲(chǔ)在客戶端設(shè)備30中高速緩存上的每個(gè)Mervlet編寫(xiě)策略。
      此外,本領(lǐng)域技術(shù)人員會(huì)識(shí)別出如果希望將代碼和數(shù)據(jù)分開(kāi)對(duì)待,那么高速緩存管理器22有能夠?qū)崿F(xiàn)它的高速緩存算法。另外,高速緩存可以在高速緩存管理算法中考慮設(shè)備特征和個(gè)人用戶使用概述。
      高速緩存管理器22的一種實(shí)施是調(diào)用pre_fetch類(lèi)上的方法來(lái)實(shí)現(xiàn)預(yù)取,調(diào)用cache_miss類(lèi)上的方法來(lái)實(shí)現(xiàn)對(duì)高速緩存失敗的處理,以及調(diào)用cache_write類(lèi)上的方法來(lái)實(shí)現(xiàn)向高速緩存寫(xiě)數(shù)據(jù)。
      預(yù)取操作可以是服務(wù)器初始化或客戶端初始化的。對(duì)于服務(wù)器初始化的預(yù)取,服務(wù)器32向回送高速緩存狀態(tài)向量的客戶端30發(fā)送一條預(yù)取通知。然后服務(wù)器向客戶端發(fā)送一套新的文檔集和可選的新的替換策略。服務(wù)器32還請(qǐng)求在客戶端設(shè)備30上運(yùn)行Mervlet 10。當(dāng)Mervlet 10在客戶端30上執(zhí)行后,它向服務(wù)器32回送高速緩存狀態(tài)向量。然后服務(wù)器32向Mervlet 10發(fā)送一套高速緩存對(duì)象集和一個(gè)替換策略。接著,Mervlet10回調(diào)服務(wù)器32為新的替換策略加載類(lèi)。
      為了處理高速緩存丟失,客戶端30上的高速緩存管理器22向主服務(wù)器32發(fā)送一個(gè)表示文檔丟失和當(dāng)丟失發(fā)生時(shí)本地高速緩存狀態(tài)向量的請(qǐng)求。向量包括高速緩存的大小和自從服務(wù)器上次更新后高速緩存散列表的任何變化。主服務(wù)器32回送被請(qǐng)求的文檔。它還可以回送其它預(yù)取文檔和一個(gè)替換策略??蛻舳?0在它的高速緩存上使用這個(gè)新的替換策略。下面是說(shuō)明該方法的偽碼

      如果客戶端30為它的高速緩存請(qǐng)求一個(gè)新Mervlet 10的列表,那么,服務(wù)器32將它們回送并且提供一個(gè)可選的替換策略??蛻舳藢⒃俅吻皵z下載實(shí)現(xiàn)替換的新類(lèi)。
      可以利用從服務(wù)器22下載的新類(lèi)由高速緩存管理器22修改客戶端30上用于本地高速緩存的寫(xiě)策略。對(duì)于高速緩存中的每個(gè)元素,服務(wù)器32可以附加一個(gè)當(dāng)對(duì)象被迫離開(kāi)高速緩存時(shí)如何處理臟的或所寫(xiě)對(duì)象的策略。因此,高速緩存系統(tǒng)的配置可以選擇系統(tǒng)是否執(zhí)行高速緩存。這是一個(gè)動(dòng)態(tài)或運(yùn)行時(shí)的選擇。另外,高速緩存系統(tǒng)本身在三個(gè)區(qū)域是動(dòng)態(tài)可擴(kuò)展的替換策略、預(yù)取策略和修改的數(shù)據(jù)管理策略。
      雖然在此參考特定的實(shí)施利描述和解釋本發(fā)明,但是本發(fā)明不局限于這些說(shuō)明性的實(shí)施例。在不脫離所附權(quán)利要求定義的本發(fā)明的真正范圍和精神的前提下,本領(lǐng)域技術(shù)人員認(rèn)識(shí)到各種變化和修改。因此所有這些變化和修改都將包括在本發(fā)明的所附權(quán)利要求范圍內(nèi)。
      權(quán)利要求
      1.一種容錯(cuò)系統(tǒng),包括用于在與網(wǎng)絡(luò)耦合的多個(gè)模塊之間通信的可配置的可靠的發(fā)消息系統(tǒng),包括可用來(lái)操作以生成消息并且響應(yīng)所述消息跨越所述網(wǎng)絡(luò)接收回復(fù)的客戶端模塊;可用來(lái)操作以接收所述消息并且跨越網(wǎng)絡(luò)生成所述回復(fù)的服務(wù)器模塊;響應(yīng)客戶端登錄信號(hào)在所述客戶端模塊上有選擇地執(zhí)行的客戶端登錄代理,所述客戶端登錄代理操作,以存儲(chǔ)所述消息和所述回復(fù)并且向所述服務(wù)器模塊發(fā)送所述消息,直到接收到所述回復(fù);響應(yīng)服務(wù)器登錄信號(hào)在所述服務(wù)器模塊上有選擇地執(zhí)行的服務(wù)器登錄代理,所述服務(wù)器登錄代理操作,以存儲(chǔ)所述消息和所述回復(fù)并且向所述客戶端模塊發(fā)送所述回復(fù);以及與所述客戶端和服務(wù)器模塊中的至少一個(gè)關(guān)聯(lián)的配置代理,所述配置代理操作,以生成所述客戶端和服務(wù)器登錄信號(hào)。
      2.根據(jù)權(quán)利要求1所述的容錯(cuò)系統(tǒng),還包括在處理應(yīng)用程序的所述客戶端和服務(wù)器模塊中的至少一個(gè)上執(zhí)行的可恢復(fù)運(yùn)行時(shí)間引擎,所述可恢復(fù)運(yùn)行時(shí)間引擎操作以捕捉執(zhí)行狀態(tài)并且在與所述客戶端和服務(wù)器模塊中的至少一個(gè)關(guān)聯(lián)的持續(xù)存儲(chǔ)器上存儲(chǔ)所述執(zhí)行狀態(tài),其中所述運(yùn)行時(shí)間引擎能夠根據(jù)執(zhí)行所述運(yùn)行時(shí)間引擎的所述客戶端和服務(wù)器模塊中的至少一個(gè)的瞬時(shí)故障之后的所述執(zhí)行狀態(tài)恢復(fù)執(zhí)行。
      3.根據(jù)權(quán)利要求1所述的容錯(cuò)系統(tǒng),其中所述客戶端模塊包括用于存儲(chǔ)所述消息的第一持續(xù)存儲(chǔ)緩存器。
      4.根據(jù)權(quán)利要求2所述的容錯(cuò)系統(tǒng),其中所述第一持續(xù)存儲(chǔ)緩存器具有用戶可配置的大小。
      5.根據(jù)權(quán)利要求1所述的容錯(cuò)系統(tǒng),其中所述服務(wù)器模塊包括用于存儲(chǔ)所述回復(fù)的第二持續(xù)存儲(chǔ)緩存器。
      6.根據(jù)權(quán)利要求5所述的容錯(cuò)系統(tǒng),其中所述第二持續(xù)存儲(chǔ)緩存器具有用戶可配置的大小。
      7.根據(jù)權(quán)利要求2所述的容錯(cuò)系統(tǒng),其中所述執(zhí)行狀態(tài)包括正在運(yùn)行的應(yīng)用程序列表和與每個(gè)所述正在運(yùn)行的應(yīng)用程序關(guān)聯(lián)的應(yīng)用程序環(huán)境。
      8.根據(jù)權(quán)利要求7所述的容錯(cuò)系統(tǒng),其中所述執(zhí)行狀態(tài)還包括每個(gè)所述正在運(yùn)行的應(yīng)用程序的優(yōu)先等級(jí)值。
      9.根據(jù)權(quán)利要求7所述的容錯(cuò)系統(tǒng),其中所述應(yīng)用程序環(huán)境包括與硬件資源有關(guān)的參數(shù)、與外部文件有關(guān)的參數(shù)、與性能屬性有關(guān)的參數(shù)和與正在運(yùn)行的應(yīng)用程序關(guān)聯(lián)的資源權(quán)限有關(guān)的參數(shù)中的至少一個(gè)。
      10.根據(jù)權(quán)利要求9所述的容錯(cuò)系統(tǒng),其中所述性能屬性包括用于所述正在運(yùn)行的應(yīng)用程序的用戶接口事件的平均等待時(shí)間或等待時(shí)間方差中的至少一個(gè)。
      11.根據(jù)權(quán)利要求2所述的容錯(cuò)系統(tǒng),其中所述正在運(yùn)行的應(yīng)用程序操作以存儲(chǔ)應(yīng)用程序狀態(tài)并且利用所述應(yīng)用程序狀態(tài)恢復(fù)執(zhí)行。
      12.一種使分布式計(jì)算系統(tǒng)容錯(cuò)的方法,該方法包括在與網(wǎng)絡(luò)連接的多個(gè)計(jì)算設(shè)備之間傳遞多個(gè)消息,所述多個(gè)計(jì)算設(shè)備包括操作生成請(qǐng)求消息并且接收回復(fù)消息的第一計(jì)算設(shè)備,和操作接收所述請(qǐng)求消息并且響應(yīng)所述請(qǐng)求消息生成所述回復(fù)消息的第二計(jì)算設(shè)備;在所述第一計(jì)算設(shè)備上有選擇地存儲(chǔ)所述請(qǐng)求消息;在所述第二計(jì)算設(shè)備上有選擇地存儲(chǔ)所述請(qǐng)求消息;在所述第二計(jì)算設(shè)備上有選擇地存儲(chǔ)所述回復(fù)消息;以及在所述第一計(jì)算設(shè)備上有選擇地存儲(chǔ)所述回復(fù)消息。
      13.根據(jù)權(quán)利要求12所述的方法,還包括在用于處理至少一個(gè)應(yīng)用程序的所述第一和第二計(jì)算設(shè)備中的至少一個(gè)上執(zhí)行運(yùn)行時(shí)間引擎;捕捉并且存儲(chǔ)所述運(yùn)行時(shí)間引擎的執(zhí)行狀態(tài);以及根據(jù)所述至少一個(gè)所述第一和第二計(jì)算設(shè)備的瞬時(shí)故障之后的所述執(zhí)行狀態(tài),恢復(fù)所述運(yùn)行時(shí)間引擎的執(zhí)行。
      14.根據(jù)權(quán)利要求12所述的方法,還包括從所述第二計(jì)算設(shè)備中清除所述回復(fù)消息;從所述第二計(jì)算設(shè)備中清除所述請(qǐng)求消息;從所述第一計(jì)算設(shè)備中清除所述請(qǐng)求消息;以及從所述第一計(jì)算設(shè)備中清除所述回復(fù)消息。
      15.根據(jù)權(quán)利要求12所述的方法,其中在所述第一計(jì)算設(shè)備上有選擇地存儲(chǔ)所述請(qǐng)求消息包括在與所述第一計(jì)算設(shè)備關(guān)聯(lián)的第一持續(xù)存儲(chǔ)緩存器中有選擇地存儲(chǔ)所述請(qǐng)求消息。
      16.根據(jù)權(quán)利要求15所述的方法,其中所述第一持續(xù)存儲(chǔ)緩存器具有用戶可配置的大小。
      17.根據(jù)權(quán)利要求12所述的方法,其中在所述第二計(jì)算設(shè)備上有選擇地存儲(chǔ)所述回復(fù)消息包括在與所述第二計(jì)算設(shè)備關(guān)聯(lián)的第二持續(xù)存儲(chǔ)緩存器中有選擇地存儲(chǔ)所述回復(fù)消息。
      18.根據(jù)權(quán)利要求17所述的方法,其中所述第二持續(xù)存儲(chǔ)緩存器具有用戶可配置的大小。
      19.根據(jù)權(quán)利要求13所述的方法,其中保存所述運(yùn)行時(shí)間引擎的執(zhí)行狀態(tài)包括存儲(chǔ)正在運(yùn)行的應(yīng)用程序列表和與每個(gè)所述正在運(yùn)行的應(yīng)用程序關(guān)聯(lián)的應(yīng)用程序環(huán)境。
      20.根據(jù)權(quán)利要求19所述的方法,其中保存所述運(yùn)行時(shí)間引擎的執(zhí)行狀態(tài)還包括存儲(chǔ)所述至少一個(gè)應(yīng)用程序的優(yōu)先等級(jí)值。
      21.根據(jù)權(quán)利要求19所述的方法,其中所述應(yīng)用程序環(huán)境包括與硬件資源有關(guān)的參數(shù)、與外部文件有關(guān)的參數(shù)、與性能屬性有關(guān)的參數(shù)和與正在運(yùn)行的應(yīng)用程序關(guān)聯(lián)的資源權(quán)限有關(guān)的參數(shù)中的至少一個(gè)。
      22.根據(jù)權(quán)利要求21所述的方法,其中與性能屬性有關(guān)的所述參數(shù)包括用于所述至少一個(gè)應(yīng)用程序的用戶接口事件的平均等待時(shí)間和等待時(shí)間的方差中的至少一個(gè)。
      23.根據(jù)權(quán)利要求13所述的方法,還包括捕捉并且保存與所述至少一個(gè)應(yīng)用程序關(guān)聯(lián)的應(yīng)用程序狀態(tài);以及根據(jù)所述應(yīng)用程序狀態(tài)恢復(fù)所述至少一個(gè)應(yīng)用程序的執(zhí)行。
      24.一種容錯(cuò)的分布式計(jì)算系統(tǒng),包括在與網(wǎng)絡(luò)連接的多個(gè)計(jì)算設(shè)備之間傳遞多個(gè)消息的裝置,所述多個(gè)計(jì)算設(shè)備包括操作生成請(qǐng)求消息并且接收回復(fù)消息的第一計(jì)算設(shè)備,和操作接收所述請(qǐng)求消息并且響應(yīng)所述請(qǐng)求消息生成所述回復(fù)消息的第二計(jì)算設(shè)備;在所述第一計(jì)算設(shè)備上有選擇地存儲(chǔ)所述請(qǐng)求消息的裝置;在所述第二計(jì)算設(shè)備上有選擇地存儲(chǔ)所述請(qǐng)求消息的裝置;在所述第二計(jì)算設(shè)備上有選擇地存儲(chǔ)所述回復(fù)消息的裝置;以及在所述第一計(jì)算設(shè)備上有選擇地存儲(chǔ)所述回復(fù)消息的裝置。
      25.根據(jù)權(quán)利要求24所述的系統(tǒng),還包括在用于處理應(yīng)用程序的所述第一和第二計(jì)算設(shè)備中的至少一個(gè)上執(zhí)行運(yùn)行時(shí)間引擎的裝置;捕捉并且保存所述運(yùn)行時(shí)間引擎的執(zhí)行狀態(tài)的裝置;以及根據(jù)所述第一或第二計(jì)算設(shè)備中的至少一個(gè)的瞬時(shí)故障之后的所述執(zhí)行狀態(tài),恢復(fù)所述運(yùn)行時(shí)間引擎的執(zhí)行的裝置。
      26.一種使分布式計(jì)算系統(tǒng)容錯(cuò)的方法,該方法包括從與網(wǎng)絡(luò)耦合的客戶端模塊生成消息;在所述客戶端模塊上有選擇地存儲(chǔ)所述消息;向與所述網(wǎng)絡(luò)耦合的服務(wù)器模塊發(fā)送所述消息;接收消息并且在所述服務(wù)器模塊上有選擇地存儲(chǔ)所述消息;從所述服務(wù)器模塊釋放前面的回復(fù);從所述服務(wù)器模塊生成對(duì)所述消息的回復(fù);在所述服務(wù)器模塊上有選擇地存儲(chǔ)所述回復(fù);向所述客戶端模塊發(fā)送所述回復(fù);從所述服務(wù)器模塊清除所述消息;接收所述回復(fù)并且在所述客戶端模塊上有選擇地存儲(chǔ)所述回復(fù);從所述客戶端模塊清除所述消息;以及從所述客戶端模塊釋放所述回復(fù)。
      27.根據(jù)權(quán)利要求26所述的方法,還包括在用于處理至少一個(gè)應(yīng)用程序的所述客戶端或服務(wù)器模塊中的至少一個(gè)上執(zhí)行運(yùn)行時(shí)間引擎;捕捉并且保存所述運(yùn)行時(shí)間引擎的執(zhí)行狀態(tài);以及根據(jù)所述客戶端和服務(wù)器模塊中的至少一個(gè)的瞬時(shí)故障之后的所述執(zhí)行狀態(tài),恢復(fù)所述運(yùn)行時(shí)間的執(zhí)行。
      全文摘要
      在本發(fā)明的一個(gè)方面中,提供了一種形成至少一個(gè)接入網(wǎng)絡(luò)的一部分的移動(dòng)應(yīng)用環(huán)境。該環(huán)境包括含有一套創(chuàng)建動(dòng)態(tài)web頁(yè)面的指令的mervlet應(yīng)用集。響應(yīng)來(lái)自在本地節(jié)點(diǎn)執(zhí)行的客戶端應(yīng)用程序的請(qǐng)求,Mervlet能夠在各與接入網(wǎng)絡(luò)耦合的本地節(jié)點(diǎn)或服務(wù)器節(jié)點(diǎn)上執(zhí)行,以便在本地節(jié)點(diǎn)上顯示動(dòng)態(tài)web頁(yè)面來(lái)。該環(huán)境還包括至少一個(gè)與mervlet關(guān)聯(lián)的應(yīng)用程序?qū)傩?。該?yīng)用程序?qū)傩园ㄖ辽僖粋€(gè)用來(lái)表征mervlet的用戶感知性能的性能屬性。該環(huán)境還包括與mervlet關(guān)聯(lián)的mervlet引擎。引擎包括具有根據(jù)應(yīng)用程序的屬性操作在本地和服務(wù)器節(jié)點(diǎn)之間準(zhǔn)備執(zhí)行mervlet的第一指令集的策略模塊。
      文檔編號(hào)G06F15/16GK101039330SQ20071008547
      公開(kāi)日2007年9月19日 申請(qǐng)日期2003年3月31日 優(yōu)先權(quán)日2002年6月24日
      發(fā)明者奈依姆·伊斯蘭, 沙希德·肖艾比 申請(qǐng)人:株式會(huì)社Ntt都科摩
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1