日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

輕型目錄存取協(xié)議 LDAP目錄中JAVATM對(duì)象的表征模式( 四 )


對(duì)象被調(diào)用,它的參數(shù)被整理并從本地虛擬機(jī)送至逆整理并使用這些參數(shù)的遠(yuǎn)端虛擬
機(jī) 。當(dāng)該方法結(jié)束,結(jié)果自遠(yuǎn)端被整理并送至調(diào)用者的虛擬機(jī) 。
為使一個(gè)遠(yuǎn)程對(duì)象對(duì)別的虛擬機(jī)可訪問,有個(gè)程序一般性地用RMI注冊(cè)器進(jìn)行注冊(cè) 。
該程序提供給RMI注冊(cè)器該遠(yuǎn)程對(duì)象的字符串名字和該遠(yuǎn)程對(duì)象本身 。當(dāng)有程序欲訪
問遠(yuǎn)程對(duì)象,它提供此對(duì)象的字符串名字給與遠(yuǎn)程對(duì)象同樣的機(jī)器上的RMI注冊(cè)器 。
RMI注冊(cè)器返回給調(diào)用者一個(gè)參考(稱作“stub”)給遠(yuǎn)程對(duì)象 。當(dāng)程序收到遠(yuǎn)程對(duì)象
的stub,它就可以調(diào)用遠(yuǎn)程對(duì)象的方法(通過stub) 。程序也可獲得作為向其它遠(yuǎn)程對(duì)
象的遠(yuǎn)程調(diào)用的結(jié)果的遠(yuǎn)程對(duì)象參考,或從其它名字服務(wù)獲得遠(yuǎn)程對(duì)象的參考 。比如,
程序可以從一個(gè)支持文中所定義的模式的LDAP服務(wù)器上查尋到一個(gè)遠(yuǎn)程對(duì)象的參考 。
RMI注冊(cè)器接受的字符串名字語(yǔ)法為“rmi://hostname:port/remoteObjectName”,其中
hostname與port標(biāo)識(shí)RMI注冊(cè)器運(yùn)行的主機(jī)和端口,remoteObjectName是遠(yuǎn)程對(duì)象的
名字 。hostname,port和前綴"rmi:"是可選的 。假如hostname沒指定,默認(rèn)為本地主機(jī)
(localhost) 。假如port沒指定,默認(rèn)為1099 。假如remoteObjectName沒指定,則對(duì)象被
命名為RMI注冊(cè)器自己 。細(xì)節(jié)見[RMI] 。
RMI能被不能的協(xié)議所支持:JAVA遠(yuǎn)程方法協(xié)議(JRMP)和互聯(lián)網(wǎng)Inter-ORB協(xié)議
(IIOP) 。JRMP是專為RMI設(shè)計(jì)的協(xié)議;IIOP是CORBA對(duì)象間通信的標(biāo)準(zhǔn)協(xié)議
[CORBA] ?;贗IOP的RMI答應(yīng)JAVA遠(yuǎn)程對(duì)象與可能是用非JAVA語(yǔ)言編寫的
CORBA對(duì)象進(jìn)行通信[RMI–IIOP] 。
2.5.1目錄中的表征
使用IIOP的遠(yuǎn)程對(duì)象在目錄中被作為CORBA對(duì)象參考來表征[CORBA–LDAP] 。
使用JRMP的遠(yuǎn)程對(duì)象在目錄中用一種或兩種方法來表征:作為整理過的對(duì)象,或作為
JNDI參考 。
一個(gè)整理過的對(duì)象記錄遠(yuǎn)程對(duì)象存根(stub)和任何可序列化的或遠(yuǎn)程的所參考的對(duì)象
的代碼存根,并且用它們的存根(stubs)代替遠(yuǎn)程對(duì)象 。為將一個(gè)遠(yuǎn)程對(duì)象作為整理
過的對(duì)象(java.rmi.MarshalledObject)來保存,你應(yīng)先創(chuàng)建一個(gè)它的
java.rmi.MarshalledObject實(shí)例 。
java.rmi.Remoterobj=...;
java.rmi.MarshalledObjectmobj=newjava.rmi.MarshalledObject(robj);
然后你可以將此MarshalledObject實(shí)例作為javaMarshalledObject來保存 。javaClassName
屬性應(yīng)該包含此遠(yuǎn)程對(duì)象的完整的知名類名 。javaClassNames屬性應(yīng)該包含遠(yuǎn)程對(duì)象的
類和接口的名字 。欲從目錄中讀回遠(yuǎn)程對(duì)象,先要逆序列化javaSerializedData的內(nèi)容
以得到一個(gè)MarshalledObject(mobj),然后像如下那樣從該MarshalledObject恢復(fù):
java.rmi.Remoterobj=(java.rmi.Remote)mobj.get();
本語(yǔ)句返回遠(yuǎn)程存根(stub),你可用來調(diào)用遠(yuǎn)程方法 。
MarshalledObject只在Java2Platfrom,StandardEdition,V1.2或更高版本的平臺(tái)上可用 。
因此,作為MarshalledObject保存的遠(yuǎn)程對(duì)象只能被使用Java2Platfrom,StandardEdition,
V1.2或更高版本平臺(tái)的客戶所讀取 。
欲將JNDI參考保存為遠(yuǎn)程對(duì)象,你得先創(chuàng)建一個(gè)javax.naming.Reference對(duì)象實(shí)例,因
為它使用遠(yuǎn)程對(duì)象的名字就像它已經(jīng)或?qū)⒁挥涗浽赗MI注冊(cè)器上,并且存在附加限
制"rmi:"前綴 。這里是例子:
javax.naming.Referenceref=newjavax.naming.Reference(
obj.getClass().getName(),
newjavax.naming.StringRefAddr("URL",
"rmi://rserver/AppRemoteObjectX"));
然后你可將此javax.naming.Reference實(shí)例作為javaNamingReference保存 。使用JNDI
參考的好處在于可以沒有遠(yuǎn)程對(duì)象的參考時(shí)進(jìn)行 。實(shí)事上,該遠(yuǎn)程對(duì)象不必在目錄中的

推薦閱讀