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

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

2009-02-02
作者:謝文學(xué)

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

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

?

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

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