《電子技術(shù)應用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > 基于JINI和JavaSpace技術(shù)的局域網(wǎng)消息系統(tǒng)

基于JINI和JavaSpace技術(shù)的局域網(wǎng)消息系統(tǒng)

2009-02-02
作者:謝文學

一、 JINI技術(shù)簡介
分布式計算技術(shù)將被用來駕御網(wǎng)絡(luò)的各種功能。在許多領(lǐng)域,由于Java技術(shù)的普遍采用,將會提供一種"編寫一次,隨處運行"的軟件平臺。網(wǎng)絡(luò)的這種發(fā)展趨勢——隨處可用、簡單、采用Java以及分布式計算技術(shù)——為Jini技術(shù)的產(chǎn)生奠定了基礎(chǔ)。
幾乎所有需要處理數(shù)字信息輸入和輸出的設(shè)備都有可能連接到使用Jini技術(shù)的社區(qū),這不僅包括傳統(tǒng)的計算機硬件和軟件,而且還包括應用消費品,如個人數(shù)字助理(PDA)、數(shù)字相機、錄象機、電視、DVD播放機、蜂窩電話和CD播放機等。使用該技術(shù)可以簡化并擴展這些設(shè)備的網(wǎng)絡(luò)能力。

n 發(fā)現(xiàn)(Discovery)
用于在網(wǎng)絡(luò)上找到JINI社區(qū)并加入到其中,從而實現(xiàn)JINI社區(qū)的自發(fā)組建。
n?查找(Lookup)
服務提供者加入查找服務(向查找服務導出該服務的代理對象),客戶從查找服務處下載服務代理對象。
n?租借(Leasing)
為了達到系統(tǒng)的穩(wěn)定可靠,能夠自恢復,自適應,采用租借機制:資源以一定的時間段來分配,如果要更長時間使用該資源,必須更新(renew)對該資源的租借。
n?遠程事件(Remote Event)
遠程事件提供了對于JINI服務和客戶的一步通知機制。該機制使用了租借機制以使事件的生成避免網(wǎng)絡(luò)的瞬態(tài)特性。
n?事務(Transaction)
JINI體系結(jié)構(gòu)采用類似數(shù)據(jù)庫中的事務操作。使得涉及多個實體的網(wǎng)絡(luò)計算能夠達到一致的安全狀態(tài)。
?? 另外,JINI技術(shù)在很多地方使用到RMI作為通信手段,充分表現(xiàn)在服務代理對象的通信機制上。特別值得提出的是,JINI 2.0提出的JERI是對RMI的重要擴展。
二、JavaSpace技術(shù)簡介
??? JavaSpaces技術(shù)是基于JINI技術(shù),為Java軟件對象的相關(guān)組件的通信和存儲而提供的JINI服務。JavaSpace是一個強大而有效的網(wǎng)絡(luò)分布式計算的編程模型和工具。它使得分布式內(nèi)存共享的編程模式成為可能:
n?進程不像傳統(tǒng)方式一樣直接通信
n?進程通過一個空間(由分布式系統(tǒng)共享的內(nèi)存空間)交換對象
n?進程可以向空間寫入(write)對象、取走(take)空間中的對象、從空間獲得一份對象的拷貝(read)。
n?進程不能直接在空間中修改對象。(必須明確的取走該對象,修改后重新將該對象寫入空間中。)
三、?利用JINI技術(shù)和JavaMail技術(shù)打造局域網(wǎng)消息系統(tǒng)
???? JavaMail API是對傳統(tǒng)的電子郵件系統(tǒng)的操作的純Java語言封裝。在許多成熟的J2EE應用中,JavaMail扮演著重要的角色。將JavaMail和JINI技術(shù)結(jié)合,可以加強該信息系統(tǒng)的實用性。由于本文主要介紹JINI技術(shù)和JavaSpace技術(shù),因此不再對JavaMail細節(jié)進行詳述。下面詳述系統(tǒng)的設(shè)計。
1、?需求分析與設(shè)計:實現(xiàn)滿足如下要求的局域網(wǎng)信息系統(tǒng):
u?空間中可容納多個擁有不同名稱的工作組,代表局域網(wǎng)中的不同工作組。
u?每個房間(工作組)可容納多個不同名稱的工作人員,一個工作人員每一時刻只能在一個工作組中。
u?每個工作人員的名稱在整個空間中唯一。盡管在實際生活中允許同名同姓。
u?工作人員可以向當前工作組提交信息,也可以及時獲得其它同事的信息。
u?工作人員可以切換到不同的工作組。
u?工作人員可以獲得當前空間中的工作組的列表。
u?工作人員可以及時獲得當前工作組中同事的列表。并可察看同事的公開信息。
u?工作人員能夠及時獲得進入或者離開當前工作組的其他工作人員的信息。
u?如果某工作人員離開系統(tǒng),應該最終自動從系統(tǒng)中消失。
u?能夠以電子郵件的形式允許工作人員之間傳遞私人信息。
u?支持工作組的創(chuàng)建,察看,管理。
2、?系統(tǒng)模塊化分

?

四、 JINI相關(guān)服務的啟動
1、啟動用于下載reggie-dl.jar, outrigger-dl.jar, norm-dl.jar的HTTP服務器(使用8080端口),以及本應用需要使用的MessageHandler_Stub.class和GroupHandler_Stub.class的HTTP服務器。JINI提供了用于類下載的HTTP服務器。例如:
java -jar C:\jini2\lib\tools.jar -dir C:\jini2\lib -verbose -port 8080
??? 2.啟動JINI各項服務,包括查找服務,事務服務,JavaSpace服務等。可以從http://user-btmurphy.jini.org/下載方便啟動的配置文件和腳本。使用該腳本可以大大簡化JINI開發(fā)的環(huán)境配置問題。例如:
C:\jini2\example\scripts>wrun jeri-transient 將啟動瞬態(tài)(即不會保持JINI會話狀態(tài))JINI服務。例如:JINI查找服務,JavaSpace服務,JINI事務服務。
1、?啟動自己的應用
java-Djava.rmi.server.codebase=http://211.68.33.78:8085/-Djava.security.policy=../policy/policy.all? biti.cory.javaspace.chatgroup.GroupBuilder 將啟動管理界面。注意安全策略文件的使用。
五、?部分重要代碼分析
a)?獲取JINI服務的代碼
?? public static Object getService(Class classname)
{? try
?? ?{? look=new LookupDiscoveryManager(null,null,null);// 用以獲得查找服務
??? sdm=new ServiceDiscoveryManager(look,null);/*用以獲得服務代理*/
}
catch(Exception e)
{? e.printStackTrace();
???? }
?? Class[] type = new Class[] {classname };
?? ServiceTemplate template = new ServiceTemplate(null,type,null);
/*以類名匹配的服務代理模板*/
?? try
{? ServiceItem serviceitem = sdm.lookup(template, null, Long.MAX_VALUE);
if ( serviceitem == null )
{? System.out.println("Can't find service");
??????????? return null;
}
else
{? return serviceitem.service; // 服務代理
?????? }
} catch (Exception e)
{? return null;
??? }
?}?
六、?總結(jié)與展望
通過實踐JINI技術(shù),切身的感覺到了JINI將給未來的消費類電子產(chǎn)品在軟件開發(fā)方面帶來的革命。特別是JINI技術(shù)的分布式內(nèi)存共享、自組建、自適應等特性,對以后的家用小電器的軟件開發(fā)有很好的實用性。特別是嵌入式系統(tǒng)中的主流——ARM系列處理器,已經(jīng)開始對java提供指令級的支持,而且處理器時鐘頻率也大幅提高(Intel Xscale 系列已達400MHz)。因此,有理由相信,以JINI技術(shù)為核心的嵌入式信息家電的實用化在不久的將來定會得到普及。
七、? 參考文獻
1、Jini Seminar by Bill Venners JavaSpaces
http://www.artima.com/javaseminars/modules/JavaSpaces/
2、《Jini Example By Example》 by W. Keith Edwards and Tom Rodden 清華大學出版社 勤勇 福華 等譯

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。