當服務加入到具有支持 Jini 的服務和/或設備的網絡中時,它會通過發布一個實現該服務 API 的 Java 對象來宣傳自己。這個對象的實現能夠以該服務選擇的任何方式工作。客戶機通過查找支持該 API 的對象來找到服務。當它得到服務的已發布對象時,它將下載與該服務通信所需的任何代碼,從而學習如何通過這個 API 與特定的服務實現進行通信。實現該服務的程序員選擇如何使用 RMI、CORBA、xml 或專用協議將 API 請求轉換成線路上的位。
JINI-RMI 方法(克服設備差異的另一種方法) 客戶機 A 向查找服務(Lookup Service)發送一個多播請求;服務 B 以同樣的方式向查找服務發送一個多播請求。查找服務用編組的查找服務代理對象響應客戶機 A 和服務 B;服務 B 向查找服務發送一個 ServiceRegistrar.register() 請求。查找服務用注冊響應。客戶機 A 發出針對服務 B 的 ServiceRegistrar.lookup(),查找服務用服務 B 代理對象響應。客戶機 A 直接將方法發送至服務 B,服務 B 從而對客戶機 A 作出響應。
當在小設備上使用 Jini 時,駐留在小設備上的服務 B 就會面臨一個問題,因為它不能解組查找服務代理對象。這會產生一個“假裝的”查找服務與客戶機 A 交互。客戶機 A 調用 ServiceRegistrar.register(),該方法返回服務 B 代理對象。這意味著設備執行自己的查找服務以及所有 Jini 發現協議;設備服務查找服務代理對象完全在本地客戶機上運行。
請閱讀文章:Developing Web applications for Pervasive Computing Devices。
Artima.com 站點提供了關于 Jini 技術的有用參考資料。
請查看 Project JXTA 站點,以獲取有關加入該項目、獲取下載以及獲取其它有用資料的信息。
關于作者 Roman Vichr 是 DDLabs(前身是 Etensity)的一名高級架構設計師,DDLabs 是一家電子商業和 EAI 咨詢公司。在致力于客戶機/服務器的數據庫治理和 Web 應用程序開發九年時間后,他最近的愛好還包括將數據庫擴展到無線技術中。他是搞光纖出身,最高學位是 1992 年在布拉格的 Institute of Chemical Technology 獲得的這一領域的博士學位。可以通過 [email protected] 與他聯系。