RMI中的對(duì)象傳遞

          對(duì)于RMI的遠(yuǎn)程接口方法來(lái)說(shuō),傳入?yún)?shù)或返回值可以是任何類(lèi)型,包括本地對(duì)象,遠(yuǎn)程對(duì)象以及原始數(shù)據(jù)類(lèi)型。更準(zhǔn)確地說(shuō),任何類(lèi)型的任何實(shí)體(可理解為類(lèi)和對(duì)象的關(guān)系)都能被傳入或傳出遠(yuǎn)程方法,只要該實(shí)體是以下類(lèi)型的實(shí)例:原始數(shù)據(jù)類(lèi)型,遠(yuǎn)程對(duì)象,或者可串行化對(duì)象,即實(shí)現(xiàn)了接口java.io.Serializable。
          但是有些對(duì)象類(lèi)型卻不滿足以上這些要求,因而不能被傳入或傳出。比如,線程或者文件描述符(還有inputstream,outputstream對(duì)象),因?yàn)榉庋b了僅僅存在于單一地址空間的信息,這樣便無(wú)法通過(guò)RMI傳遞。另外許多核心類(lèi),包括位于java.lang和java.util包下的類(lèi)都是實(shí)現(xiàn)了Serializable接口的。
          怎樣傳遞參數(shù)和返回值的規(guī)則,介紹如下:
          1.遠(yuǎn)程對(duì)象是引用傳遞。
          這個(gè)引用就是位于client端的stub,起著代理的作用,遠(yuǎn)程對(duì)象實(shí)現(xiàn)了的遠(yuǎn)程接口,作為代理的stub也全部實(shí)現(xiàn);
          2.本地對(duì)象是值傳遞,即拷貝。
          缺省的話,所有的屬性都會(huì)被拷貝,除了標(biāo)示為static或transient的屬性之外。這種缺省行為是可以在類(lèi)里被覆蓋的。
          遠(yuǎn)程對(duì)象的引用傳遞意味著對(duì)遠(yuǎn)程方法調(diào)用的對(duì)象的狀態(tài)所作的任何改變都將反映到該stub所對(duì)應(yīng)的遠(yuǎn)程對(duì)象上去。當(dāng)一個(gè)遠(yuǎn)程對(duì)象被傳遞時(shí),接受者只能看到遠(yuǎn)程接口里定義的方法,而不能看到遠(yuǎn)程對(duì)象里定義的本地方法。
          本地對(duì)象的值傳遞意味著任何對(duì)接受者的對(duì)象的狀態(tài)的改變都不會(huì)影響到發(fā)送者那里的對(duì)象,反之亦然。

          posted on 2011-05-26 23:51 koradji 閱讀(1140) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): java

          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(2)

          隨筆分類(lèi)

          隨筆檔案

          文章分類(lèi)

          文章檔案

          收藏夾

          db2

          dos

          Groovy

          Hibernate

          java

          WAS

          web application

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 皮山县| 辰溪县| 长顺县| 靖江市| 池州市| 凌海市| 武义县| 陵川县| 临漳县| 富蕴县| 巴青县| 洛阳市| 梅河口市| 新巴尔虎右旗| 沈丘县| 永新县| 南郑县| 上杭县| 彰化市| 瑞金市| 探索| 桐乡市| 白玉县| 贡嘎县| 宜兰县| 大安市| 璧山县| 嘉禾县| 庆阳市| 普洱| 香港| 法库县| 北安市| 侯马市| 花莲市| 嘉黎县| 浠水县| 巴彦淖尔市| 商河县| 阳曲县| 德昌县|