當服務加入到具有支持 Jini 的服務和/或設備的網(wǎng)絡中時,它會通過發(fā)布一個實現(xiàn)該服務 API 的 Java 對象來宣傳自己。這個對象的實現(xiàn)能夠以該服務選擇的任何方式工作??蛻魴C通過查找支持該 API 的對象來找到服務。當它得到服務的已發(fā)布對象時,它將下載與該服務通信所需的任何代碼,從而學習如何通過這個 API 與特定的服務實現(xiàn)進行通信。實現(xiàn)該服務的程序員選擇如何使用 RMI、CORBA、xml 或?qū)S脜f(xié)議將 API 請求轉(zhuǎn)換成線路上的位。
Davis 項目(處理 JINI 體系結(jié)構(gòu)中安全性的各個方面) JINI Davis 項目主要關(guān)注對與安全性體系結(jié)構(gòu)有關(guān)的幾個方面的支持,包括非統(tǒng)一網(wǎng)絡安全性(涉及到客戶機、服務器、遠程方法和參數(shù)的變化)和各種使用不同協(xié)議、算法、機制和策略的安全性實現(xiàn)。
JINI-RMI 方法(克服設備差異的另一種方法) 客戶機 A 向查找服務(Lookup Service)發(fā)送一個多播請求;服務 B 以同樣的方式向查找服務發(fā)送一個多播請求。查找服務用編組的查找服務代理對象響應客戶機 A 和服務 B;服務 B 向查找服務發(fā)送一個 ServiceRegistrar.register() 請求。查找服務用注冊響應??蛻魴C A 發(fā)出針對服務 B 的 ServiceRegistrar.lookup(),查找服務用服務 B 代理對象響應??蛻魴C A 直接將方法發(fā)送至服務 B,服務 B 從而對客戶機 A 作出響應。
當在小設備上使用 Jini 時,駐留在小設備上的服務 B 就會面臨一個問題,因為它不能解組查找服務代理對象。這會產(chǎn)生一個“假裝的”查找服務與客戶機 A 交互。客戶機 A 調(diào)用 ServiceRegistrar.register(),該方法返回服務 B 代理對象。這意味著設備執(zhí)行自己的查找服務以及所有 Jini 發(fā)現(xiàn)協(xié)議;設備服務查找服務代理對象完全在本地客戶機上運行。
關(guān)于作者 Roman Vichr 是 DDLabs(前身是 Etensity)的一名高級架構(gòu)設計師,DDLabs 是一家電子商業(yè)和 EAI 咨詢公司。在致力于客戶機/服務器的數(shù)據(jù)庫治理和 Web 應用程序開發(fā)九年時間后,他最近的愛好還包括將數(shù)據(jù)庫擴展到無線技術(shù)中。他是搞光纖出身,最高學位是 1992 年在布拉格的 Institute of Chemical Technology 獲得的這一領(lǐng)域的博士學位。可以通過 rvichr@etensity.com 與他聯(lián)系。