版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第八章高級(jí)rmi,內(nèi)容概述:Stub下載安全管理器(安全管理器)客戶回調(diào),主要介紹rmi的高級(jí)特點(diǎn)。 1. RMI要求,RMI實(shí)現(xiàn)不同Java虛擬機(jī)之間的對(duì)象通訊,并與每個(gè)虛擬機(jī)上的資源共享處理能力。 RMI的目的是通過(guò)使分布在不同虛擬機(jī)中的對(duì)象像本地對(duì)象一樣地工作來(lái)實(shí)現(xiàn)位置的透明度,應(yīng)用不需要知道對(duì)象是本地還是遠(yuǎn)程,而是封搖滾樂(lè)應(yīng)用基礎(chǔ)的復(fù)雜實(shí)現(xiàn)的細(xì)節(jié)引用遠(yuǎn)程對(duì)象的JVM是客戶端,而包含遠(yuǎn)程對(duì)象的JVM是服務(wù)器。 2 .如何使RMI結(jié)構(gòu)、RMI開(kāi)發(fā)人員不知道被調(diào)用對(duì)象是本地對(duì)象還是遠(yuǎn)程對(duì)象? 存根和俯式冰橇在本地遠(yuǎn)程透明的體系結(jié)構(gòu)中實(shí)現(xiàn)。 RMI在客戶端使用存根,而存根類似于服務(wù)器端查詢密碼
2、的本代理。 客戶通過(guò)存根在網(wǎng)絡(luò)上搜索調(diào)用的遠(yuǎn)程對(duì)象。 從客戶端的角度來(lái)看,這些個(gè)存根類似于服務(wù)器端的方法,使用相同的方法名稱、參數(shù)列表以及返還值,但不包含實(shí)際的方法查詢密碼,客戶端將檢索接口引用,以確保接口的完整性存根和俯式冰橇圖、存根和俯式冰橇以及存根包含向服務(wù)器發(fā)送客戶端請(qǐng)求、處理服務(wù)器返回的結(jié)果以及將結(jié)果返回給客戶端的查詢密碼。 在服務(wù)器側(cè),被稱為俯式冰橇的本代理用于接收客戶端的遠(yuǎn)程調(diào)用,將其轉(zhuǎn)換為服務(wù)器上的本地調(diào)用,執(zhí)行本地調(diào)用,并且向客戶端返回結(jié)果。 存根和俯式冰橇由RMI編譯程序自動(dòng)生成,分析創(chuàng)建的服務(wù)器端類,并生成存根和俯式冰橇代碼段。 3. RMI的類包,RMI包括7個(gè)包。 (
3、1)java.rmi :核心API。 (2)可以激活2)java.rmi.activation,對(duì)象的API。 (3)java.rmi.DGC、分布式垃圾收集器(dgc )的API。 (4)java.rmi.registry、RMI網(wǎng)絡(luò)命名服務(wù)的API。 (5)java.server,服務(wù)器端所操作定的API。 (6)java.rmi、RMI-IIOP的核心API、RMI-IIOP也是遠(yuǎn)程方法調(diào)用,在EJB中使用RMI-IIOP。 (7)另一個(gè)7)java.rmi.CORBA,RMI-IIOP輕型API為RMI-IIOP提供了插頭、連接線和RMI-IIOP執(zhí)行時(shí)間之間的標(biāo)準(zhǔn)接口定。 4 .搜索
4、遠(yuǎn)程對(duì)象,客戶機(jī)計(jì)程儀計(jì)劃使用命名服務(wù)和目錄查詢服務(wù)來(lái)搜索遠(yuǎn)程服務(wù),并且在創(chuàng)建客戶機(jī)計(jì)程儀計(jì)劃時(shí),向客戶機(jī)傳達(dá)提供命名服務(wù)的主機(jī)地址和通訊端口號(hào),經(jīng)由JNDI服務(wù)來(lái)遠(yuǎn)程搜索服務(wù)RMI名稱服務(wù)是注冊(cè)查詢服務(wù),提供遠(yuǎn)程服務(wù)的對(duì)象必須在RMI名稱服務(wù)器中注冊(cè),并且服務(wù)器必須記錄遠(yuǎn)程對(duì)象的名稱和映射關(guān)系。 此關(guān)系以hashTable結(jié)構(gòu)存儲(chǔ)。 在注冊(cè)表中,與遠(yuǎn)程對(duì)象和名稱關(guān)聯(lián),在客戶程序想要調(diào)用遠(yuǎn)程對(duì)象上的方法的情況下,首先尋找名稱得到對(duì)象的參照。 搜索過(guò)程返回對(duì)象的遠(yuǎn)程引用Stub。 客戶機(jī)查詢密碼獲取Stub對(duì)象,并使用指定的服務(wù)器名稱和對(duì)象名稱將其網(wǎng)站數(shù)據(jù)庫(kù)到服務(wù)器對(duì)象。 5. RMI參數(shù)傳遞;
5、(1)基本參數(shù)傳遞如果遠(yuǎn)程方法傳遞的參數(shù)或返還值是基本數(shù)據(jù)類型,則RMI以值傳遞。 (2)對(duì)象類型參數(shù)采用值傳遞對(duì)象所被參照的對(duì)象。 (3)遠(yuǎn)程對(duì)象參數(shù)遠(yuǎn)程對(duì)象采用傳遞參照的方式。 (4)將對(duì)象的序列化Java對(duì)象轉(zhuǎn)換為對(duì)象的bit-blob表示,使得網(wǎng)絡(luò)上的文件的交接、寫入變得容易。 對(duì)象序列化的方法實(shí)現(xiàn)java.io.Serializable接口,JVM虛擬機(jī)完成對(duì)象序列化的具體實(shí)現(xiàn)。 (5)如何使用牛鼻子字transient的對(duì)象大,通過(guò)網(wǎng)絡(luò)傳輸或復(fù)制過(guò)度浪費(fèi)資源的遠(yuǎn)程對(duì)象的資源,需要在數(shù)據(jù)庫(kù)連接、線程對(duì)象等本地機(jī)器上進(jìn)行再生成。 對(duì)象存在機(jī)密信息,不希望通過(guò)網(wǎng)絡(luò)傳送的6. RMI-II
6、OP,(1) CORBA (commonobjectrequestbrokerarchitecture ) CORBA采用了IIOP和傳送連接協(xié)議。 CORBA獨(dú)立于語(yǔ)言。CORBA使用CosNaming來(lái)放置遠(yuǎn)程對(duì)象。 (2)設(shè)jrmp (javaremotemessagingprotocol、javaremotemessagingprotocol )為RMI傳輸連接協(xié)議。 RMI從純Java到Java。 RMI使用JNDI搜索遠(yuǎn)程對(duì)象。 (3)RMI與CORBA的結(jié)合形成RMI-IIOP,7 .創(chuàng)建RMI應(yīng)用程序;(3)實(shí)現(xiàn)RMI的過(guò)程中建立遠(yuǎn)程接口。 此接口向RMI客戶端公開(kāi)遠(yuǎn)程對(duì)象的有
7、效方法。 必須對(duì)java.rmi.Remote進(jìn)行擴(kuò)展。 創(chuàng)建遠(yuǎn)程對(duì)象。 遠(yuǎn)程對(duì)象是實(shí)現(xiàn)遠(yuǎn)程接口的類。 遠(yuǎn)程對(duì)象還可能包含內(nèi)部操作和其他內(nèi)部管理方法。 沒(méi)有通過(guò)接口公開(kāi)這些個(gè)的方法。 遠(yuǎn)程對(duì)象可以包含main方法。 通過(guò)在main方法中編寫遠(yuǎn)程對(duì)象的注冊(cè)計(jì)程儀程序,可以將遠(yuǎn)程對(duì)象綁定到JNDI樹(shù),以便遠(yuǎn)程客戶端可以網(wǎng)站數(shù)據(jù)庫(kù)到遠(yuǎn)程對(duì)象。 使用java編譯程序編譯遠(yuǎn)程接口和服務(wù)。 創(chuàng)建調(diào)用遠(yuǎn)程對(duì)象的客戶查詢密碼,并使用java編譯程序編譯客戶查詢密碼。 創(chuàng)建RMI保密工作文件從RMIC編譯程序生成STUB和SKELETON。 啟動(dòng)RMI注冊(cè)服務(wù)器,START RMIREGISTRY在RMI注冊(cè)服
8、務(wù)器中注冊(cè)遠(yuǎn)程對(duì)象運(yùn)行RMI客戶機(jī),以獲取遠(yuǎn)程對(duì)象提供的公共方法。 (2)制作遠(yuǎn)程接口包RMI example的import java.rmi.* . publicationinterformationcenterforenterextendsremote/此方法由遠(yuǎn)程客戶端調(diào)用,并由publicationstrisayhello () throwsremoteexcepti 注意:1)此接口只向RMI客戶端發(fā)布一個(gè)方法sayHello,而發(fā)布到遠(yuǎn)程接口的方法必須拋出遠(yuǎn)程執(zhí)行。 2 )遠(yuǎn)程接口必須擴(kuò)展名為Remote的接口。 遠(yuǎn)程接口的完整路徑是java.rmi.Remote。 3 )作為參數(shù)
9、或關(guān)返還值字傳遞的遠(yuǎn)程對(duì)象必須聲明為遠(yuǎn)程接口,而不能聲明為遠(yuǎn)程對(duì)象類。 (3)制作遠(yuǎn)程對(duì)象package rmiexample的import java.rmi.* . publicscleorserverextensuncalcastremoteobjectimplementshellinterface/此方法由遠(yuǎn)程客戶端使用. public string say hello () throwsrem system.out.println ( hello server.say hello () hasbeenremotelyinvoked. )消息傳遞給遠(yuǎn)程對(duì)象正在運(yùn)行的虛擬機(jī); /為遠(yuǎn)程客戶
10、返回“hello,遠(yuǎn)程世界! 的消息” /main ()方法實(shí)現(xiàn)在RMI注冊(cè)服務(wù)器中注冊(cè)遠(yuǎn)程對(duì)象,以便遠(yuǎn)程客戶端可以通過(guò)JNDI發(fā)現(xiàn)遠(yuǎn)程對(duì)象。 publicstaticvoidmain (string args ) /保密工作管理器if (system.getsecuritymanager ()=null ) system.setsecuritymanager (newrmisesecuritymanager try /遠(yuǎn)程對(duì)象的斯坦共和國(guó)入HelloServer obj=new HelloServer (); 在/rmi注冊(cè)伺服器上注冊(cè)索引(hello server,obj ); /將消息s
11、ystem.out.println發(fā)送到運(yùn)行遠(yuǎn)程對(duì)象的JVM其他端口。catch (exceptive ) system.out.println (“helloservererror 3360”e.gets e .打印堆棧跟蹤(); 注意:1)此基本服務(wù)類只實(shí)現(xiàn)了兩種方法:在遠(yuǎn)程接口中定義的sayHello方法和向RMI注冊(cè)表注冊(cè)服務(wù)的main方法。 2)Main方法創(chuàng)建遠(yuǎn)程對(duì)象斯坦共和國(guó),并在hello服務(wù)器名稱下使用名稱服務(wù)進(jìn)行注冊(cè)。 3 )遠(yuǎn)程UnicastRemoteObject類4 )必須擴(kuò)展遠(yuǎn)程接口,其返回類型、方法名、參數(shù)以及拋出的異常必須與接口一致。(4)編譯遠(yuǎn)程接口和遠(yuǎn)程對(duì)象
12、使用javac編譯遠(yuǎn)程接口和遠(yuǎn)程對(duì)象。 (5)生成遠(yuǎn)程對(duì)象的存根和俯式冰橇,制作遠(yuǎn)程對(duì)象的主干和信息幀工作。 要完成此任務(wù),請(qǐng)使用rmic編譯程序,rmic編譯程序?qū)檫h(yuǎn)程對(duì)象生成存根和俯式冰橇。 存根(Stub )是將RMI調(diào)用傳遞給客戶端俯式冰橇的遠(yuǎn)程對(duì)象的本代理,這些遠(yuǎn)程對(duì)象負(fù)責(zé)將RMI調(diào)用傳遞給實(shí)際的遠(yuǎn)程方法語(yǔ)法。 rmicd 3360 rmipoxamplermexample.hellserver此命令編譯elloIterface_WLStub.class和hello接口_ wl skel.class并將其寫入輸出目錄查詢。在執(zhí)行RMI編譯程序時(shí),將生成存根和俯式冰橇之間的中間Jav
13、a源文件,將這些源文件編譯到類中,然后刪除這些源文件。 注意:在JDK1.2或更高版本中,不再需要Skeleton,僅保留遠(yuǎn)程客戶端的Stub。 /stub類別generatedbyrmic,dono tedit./contentsbestochangetochangewithoutnotice.packagermexample; publinformationclasshelloserver _ stubbextensjava.RMI.server.remotimplementsrmirexample.hell接口,Java.RMI.remotivep privatestaticjava.l
14、ang.reflect.method $ method _ say hello _ 0; 靜態(tài)輔助方法0=rmipoxample.hell接口. class.get方法(say hello,新Java.lang.class ); catch (Java.lang.nosuchmethodexception ) throw new Java.lang.nosuchmethoderror (stub類初始化失敗),/constructorspublichelloserver /methodsfromremoteinterfaces/implementationofsayhello () publi
15、c Java.lang.string say hello () throws Java.RMI.remoteexceptiontry 返回(Java.lang.string ) $返回); catch (Java.lang .運(yùn)行時(shí)間檢測(cè)) throw; catch (Java.RMI .遠(yuǎn)程執(zhí)行) throw; 創(chuàng)建catch (Java.lang.exception ) throw new Java.RMI.unexpectexception (undelaredcheckedexception,e ),()遠(yuǎn)程調(diào)用服務(wù)的客戶端pack 導(dǎo)入Java.RMI.* . publicscleo
16、rteclientpublityfildstaticstringsrevenme=RMI :/202.196.9.17533609/hello伺服器publicstaticvoidmain tryhellointerfaceobj=(hell接口) naming.lookup (服務(wù)器名稱) system.out.println ( connectedtohelloserver. ); 字符串消息=obj.say hello (); system.out .打印機(jī)(消息)捕捉(可移動(dòng)) t .打印堆棧跟蹤(); System.exit(-1 ),(7)編譯客戶端程序javaclirmexample.hellocolient (8) RMI注冊(cè)服務(wù)器的配置和啟動(dòng)注冊(cè)服務(wù)器的啟動(dòng):
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度工程項(xiàng)目承包保證人擔(dān)保承諾書(shū)范本6篇
- LED廣告車2024年租賃合同范本2篇
- 2025年度鄰里社區(qū)共筑住宅項(xiàng)目綠化養(yǎng)護(hù)協(xié)議3篇
- 2025年度生態(tài)農(nóng)業(yè)地產(chǎn)合作開(kāi)發(fā)合同書(shū)
- 二零二五年度出租車座套定制與品牌推廣合同3篇
- 二零二五版電力設(shè)備質(zhì)檢員招聘與職責(zé)協(xié)議書(shū)3篇
- 個(gè)性化倉(cāng)儲(chǔ)解決方案服務(wù)外包協(xié)議范本版A版
- 2025年度企業(yè)員工心理健康培訓(xùn)服務(wù)合同范本8篇
- 中美洲2024年原材料供應(yīng)協(xié)議
- 養(yǎng)殖場(chǎng)動(dòng)物疫病防治服務(wù)合同(2025年度)3篇
- AQ-T 1009-2021礦山救護(hù)隊(duì)標(biāo)準(zhǔn)化考核規(guī)范
- 鹽酸??颂婺崤R床療效、不良反應(yīng)與藥代動(dòng)力學(xué)的相關(guān)性分析的開(kāi)題報(bào)告
- 消防設(shè)施安全檢查表
- 組合結(jié)構(gòu)設(shè)計(jì)原理 第2版 課件 第6、7章 鋼-混凝土組合梁、鋼-混凝土組合剪力墻
- 建筑公司資質(zhì)常識(shí)培訓(xùn)課件
- 旅居管家策劃方案
- GB/T 26316-2023市場(chǎng)、民意和社會(huì)調(diào)查(包括洞察與數(shù)據(jù)分析)術(shù)語(yǔ)和服務(wù)要求
- 春節(jié)值班安全教育培訓(xùn)
- 帶狀皰疹護(hù)理查房
- 平衡計(jì)分卡-化戰(zhàn)略為行動(dòng)
- 幼兒園小班下學(xué)期期末家長(zhǎng)會(huì)PPT模板
評(píng)論
0/150
提交評(píng)論