亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

漫談EJB——Enterprise JavaBeans(二)

2019-11-18 12:34:59
字體:
來源:轉載
供稿:網友

  EJB技術的基礎是另外兩種技術:RMI-IIOP和JNDI。要想了解EJB,一定要先了解RMI-IIOP和JNDI。因此,我們在介紹EJB細節之前,先了解這兩項技術。我們的介紹比較基本,因此大多數組織只要了解這些就已經夠了。
  
  java RMI-IIOP
  Java RMI-IIOP(Java Remote Method Invocation over the Internet Inter-ORB PRotocol)是J2EE的網絡機制。Java RMI-IIOP答應你編寫分布式對象,使得對象的通信范圍能夠在內存中,跨Java虛擬機,跨物理設備。
  
  Remote Method Invocation
  RPC(remote procedure call)是一臺機器的進程調用另一臺機器的進程的過程。而remote method invocation則比RPC的概念更進一步,答應分布式對象間的通信。RMI-IIOP答應調用遠程對象的方法,而不僅僅是過程。這有利于面向對象編程。Java RMI (Remote Method Invocation 遠程方法調用)是用Java在JDK1.1中實現的,它大大增強了Java開發分布式應用的能力。Java作為一種風靡一時的網絡開發語言,其巨大的威力就體現在它強大的開發分布式網絡應用的能力上,而RMI就是開發百分之百純Java的網絡分布式應用系統的核心解決方案之一。其實它可以被看作是RPC的Java版本。但是傳統RPC并不能很好地應用于分布式對象系統。而Java RMI 則支持存儲于不同地址空間的程序級對象之間彼此進行通信,實現遠程對象之間的無縫遠程調用。
  
  remote method invocation決不簡單,需要考慮幾個問題:
  
  marshalling和unmarshalling.在不同機器間通過網絡傳遞變量(包括Java基本類型和對象),假如目標機器表示數據的方式和原機器不同該怎么辦?例如二進制庫不同。因此marshalling和unmarshalling就是傳遞變量的過程。
  
  變量傳遞方法.變量有兩種傳遞方法:pass-by-value和pass-by-reference。對于前者,你的目標方法只需使用一份copy,但對于后者,遠程方法對變量的任何修改都會影響到源數據。
  
  網絡和機器的不穩定.需要有一種機制保證一個JVM崩潰之后,不會影響系統的正常運作。
  
  在 Java 分布式對象模型中,remote object 是這樣一種對象:它的方法可以從其它 Java 虛擬機(可能在不同的主機上)中調用。該類型的對象由一種或多種 remote interfaces(它是聲明遠程對象方法的 Java 接口)描述。遠程方法調用 (RMI) 就是調用遠程對象上遠程接口的方法的動作。更為重要的是,遠程對象的方法調用與本地對象的方法調用語法相同。
  
  Remote Interface
  RMI-IIOP遵循了接口和實現的原則。你寫的所有網絡代碼都是應用于接口,而不是實現。實際上,你必須使用RMI-IIOP中的范例,沒有其它的選擇。直接在你的對象實現上執行遠程調用是不可能的,你只能在對象類的接口上單獨進行這一操作。
  
  所以我們在使用RMI-IIOP時,你必須建立一個客戶接口,叫做remote interface。這個遠程接口應該擴展java.rmi.Remote接口。
  
  Remote Object Implementation
  
  遠程對象和客戶機的物理位置并不是很重要??梢赃\行在同一地址空間或是跨Internet運行。
  
  為了使對象成為一個遠程對象,你需要執行一下步驟:
  
  繼續javax.rmi.PortableRemoteObject。PortableRemoteObject是進行遠程調用的基類,當你的遠程對象調用構造器時,PortableRemoteObject對象的構造器也會自動被調用。
  
  不繼續javax.rmi.PortableRemoteObject。假如你的遠程對象需要繼續其它的類,而Java不答應多重繼續,因此你不能繼續PortableRemoteObject。這時,你需要手動調用javax.rmi.PortableRemoteObject.eXPortObject()。
  
  Stub和Skeletons
  我們來看看在RMI-IIOP背后隱藏的網絡架構。RMI-IIOP的一個好處就是你可以不用管你要調用的對象是本地的還是遠程的。這就叫做local/remote transparency。
  
  RMI應用程序通常包括兩個獨立的程序:服務器程序和客戶機程序。典型的服務器應用程序將創建多個遠程對象,使這些遠程對象能夠被引用,然后等待客戶機調用這些遠程對象的方法。而典型的客戶機程序則從服務器中得到一個或多個遠程對象的引用,然后調用遠程對象的方法。RMI為服務器和客戶機進行通信和信息傳遞提供了一種機制。
  
  在與遠程對象的通信過程中,RMI使用標準機制:stub和skeleton。遠程對象的stub擔當遠程對象的客戶本地代表或代理人角色。調用程序將調用本地stub的方法,而本地stub將負責執行對遠程對象的方法調用。在RMI中,遠程對象的stub與該遠程對象所實現的遠程接口集相同。調用stub的方法時將執行下列操作:(1) 初始化與包含遠程對象的遠程虛擬機的連接;(2) 對遠程虛擬機的參數進行編組(寫入并傳輸);(3) 等待方法調用結果;(4) 解編(讀?。┓祷刂祷蚍祷氐漠惓?;(5) 將值返回給調用程序。為了向調用程序展示比較簡單的調用機制,stub將參數的序列化和網絡級通信等細節隱藏了起來。在遠程虛擬機中,每個遠程對象都可以有相應的skeleton(在JDK1.2環境中無需使用skeleton)。Skeleton負責將調用分配給實際的遠程對象實現。它在接收方法調用時執行下列操作:(1) 解編(讀?。┻h程方法的參數;(2) 調用實際遠程對象實現上的方法;(3) 將結果(返回值或異常)編組(寫入并傳輸)給調用程序。stub和skeleton由rmic編譯器生成。
  
  要實現local/remote transparency可沒有那么簡單。為了屏蔽你調用的是遠端主機上的對象,RMI-IIOP需要模擬一個本地對象供你調用。這個本地對象叫做stub。它負責接受本地的方法調用請求,把這些請求委托給真正實現它們的對象(可以通過網絡定位)。這樣就使得遠程調用看起來就和本地調用一樣。
  
  利用RMI編寫分布式對象應用程序需要完成以下工作:(1) 定位遠程對象。應用程序可使用兩種機制中的一種得到對遠程對象的引用。它既可用RMI的簡單命名工具rmiregistry來注冊它的遠程對象,也可以將遠程對象引用作為常規操作的一部分來進行傳遞和返回。(2)與遠程對象通信。遠程對象間通信的細節由RMI處理,對于程序員來說,遠程通信看起來就像標準的Java方法調用。(3)給作為參數或返回值傳遞的對象加載類字節碼。因為RMI答應調用程序將純Java對象傳給遠程對象,所以,RMI將提供必要的機制,既可以加載對象的代碼又可以傳輸對象的數據。在RMI分布式應用程序運行時,服務器調用注冊服務程序以使名字與遠程對象相關聯。客戶機在服務器上的注冊服務程序中用遠程對象的名字查找該遠程對象,然后調用它的方法。
  
  定位遠程對象。應用程序可使用兩種機制中的一種得到對遠程對象的引用。它既可用 RMI 的簡單命名工具 rmiregistry 來注冊它的遠程對象;也可將遠程對象引用作為常規操作的一部分來進行傳遞和返回。
  
  與遠程對象通訊。遠程對象間通訊的細節由 RMI 處理;對于程序員來說,遠程通訊看起來就象標準的 Java 方法調用。給作為參數或返回值傳遞的對象加載類字節碼因為 RMI答應調用程序將純 Java 對象傳給遠程對象,所以 RMI 將提供必要的機制,既可以加載對象的代碼又可以傳輸對象的數據。服務器調用注冊服務程序以使名字與遠程對象相關聯??蛻魴C在服務器注冊服務程序中用遠程對象的名字查找該遠程對象,然后調用它的方法。RMI 能用 Java系統支持的任何 URL 協議(例如 HTTP、FTP、file 等)加載類字節碼。
  
  stub只是解決了一半的問題。我們還希望遠程對象也不用考慮網絡問題。因此遠程對象也需要一個本地的skeleton來接受調用。skeleton接受網絡調用并把調用委托給遠程對象實現。
  
  你的J2EE服務器應當提供一種方法來產生必須的stub和skeleton,以減輕你的對網絡問題考慮的負擔。典型的是通過命令行工具來完成,例如sun的J2EE參考實現包就使用了一個名為rmic(RMI compiler)的工具來產生stub和skeleton類。你應當把stub部署在客戶機上,并把skeleton部署在服務器上。
  
  對象序列化和變量傳遞
  在RMI分布式應用系統中,服務器與客戶機之間傳遞的Java對象必須是可序列化的對象。不可序列化的對象不能在對象流中進行傳遞。對象序列化擴展了核心Java輸入/輸出類,同時也支持對象。對象序列化支持把對象編碼以及將通過它們可訪問到的對象編碼變成字節流;同時,它也支持流中對象圖形的互補重構造。序列化用于輕型持久性和借助于套接字或遠程方法調用(RMI)進行的通信。序列化中現在包括一個 API(application Programming Interface,應用程序接口),答應獨立于類的域指定對象的序列化數據,并答應使用現有協議將序列化數據域寫入流中或從流中讀取,以確保與缺省讀寫機制的兼容性。
  
  為編寫應用程序,除多數瞬態應用程序外,都必須具備存儲和檢索 Java對象的能力。以序列化方式存儲和檢索對象的要害在于提供重新構造該對象所需的足夠對象狀態。存儲到流的對象可能會支持 Serializable(可序列化)或 Externalizable(可外部化)接口。對于Java對象,序列化形式必須能標識和校驗存儲其內容的對象所屬的 Java類,并且將該內容還原為新的實例。對于可序列化對象,流將提供足夠的信息將流的域還原為類的兼容版本。對于可外部化對象,類將全權負責其內容的外部格式。序列化 Java 對象的目的是:提供一種簡單但可擴充的機制,以序列化方式維護 Java對象的類型及安全屬性;具有支持編組和解編的擴展能力以滿足遠程對象的需要;具有可擴展性以支持 Java 對象的簡單持久性;只有在自定義時,才需對每個類提供序列化自實現;答應對象定義其外部格式。
  
  java.rmi.Remote 接口
  在 RMI 中,遠程接口是聲明了可從遠程 Java 虛擬機中調用的方法集。遠程接
  口必須滿足下列要求:
  
  遠程接口至少必須直接或間接擴展 jav

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久久国产| 日韩av电影在线播放| 国模叶桐国产精品一区| 中日韩美女免费视频网址在线观看| 欧美成人sm免费视频| 欧美日韩精品在线播放| 日韩在线视频免费观看| 久久久国产视频91| 日韩精品福利在线| 在线看日韩欧美| 久久黄色av网站| 欧美激情小视频| 欧美黑人又粗大| 欧美成人第一页| 97精品欧美一区二区三区| 久久影院资源网| 亚洲激情视频在线播放| 成人免费观看49www在线观看| 91经典在线视频| 91美女片黄在线观看游戏| 日本精品久久久久久久| 国内精品模特av私拍在线观看| 欧美成人在线网站| 亚洲在线免费观看| 国产91免费观看| 日韩在线中文视频| 亚洲午夜av电影| 国产精品视频网址| 国产精品盗摄久久久| 姬川优奈aav一区二区| 国产激情久久久久| 成人黄色免费网站在线观看| 中文字幕亚洲综合| 日韩欧美在线中文字幕| 国产精品成人观看视频国产奇米| 国产精品激情自拍| 国产成人+综合亚洲+天堂| 欧美成年人视频网站| 欧美午夜女人视频在线| 伊人久久综合97精品| 久久亚洲精品国产亚洲老地址| 亚洲成人中文字幕| 麻豆一区二区在线观看| 国产一区二区三区在线观看网站| 久久久精品国产网站| 亚洲欧美在线免费观看| 一本色道久久综合亚洲精品小说| 美女国内精品自产拍在线播放| 在线播放亚洲激情| 亚洲va男人天堂| 国产精品女人久久久久久| 欧美精品福利在线| 国产成人自拍视频在线观看| 日本午夜在线亚洲.国产| 57pao国产成人免费| 亚洲jizzjizz日本少妇| 91国偷自产一区二区三区的观看方式| 国产精品v片在线观看不卡| 另类专区欧美制服同性| 日韩av电影免费观看高清| 久久久久久999| 中国china体内裑精亚洲片| 亚洲欧美在线免费| 国产美女精品视频| 日本成人在线视频网址| 欧美大码xxxx| 日本国产精品视频| 97av视频在线| 国内精品久久久久伊人av| 美女啪啪无遮挡免费久久网站| 国产91在线播放精品91| 日本在线精品视频| 成人久久久久爱| 欧美电影在线观看高清| 欧美日韩国产一区中文午夜| 亚洲国产小视频在线观看| 日韩成人中文电影| 久久精品亚洲热| 日韩在线免费观看视频| 国产欧美日韩高清| 久久久久久国产免费| 91系列在线播放| 91久久中文字幕| 在线观看欧美日韩| 欧美国产第二页| 国产精品高清免费在线观看| 欧美成人免费视频| 日韩中文字幕在线视频| 亚洲高清免费观看高清完整版| 欧美视频在线观看 亚洲欧| 精品久久久久久久久久久| 久久精品国产96久久久香蕉| 国产成人亚洲综合91精品| 国产亚洲精品美女久久久| 国产精品久久精品| 国产精品永久免费| 国产精品扒开腿做| 欧美美女操人视频| 亚洲电影在线观看| 亚洲无线码在线一区观看| 午夜精品在线视频| 久久在线精品视频| 欧美日韩国产精品专区| **欧美日韩vr在线| 久久久av亚洲男天堂| 日韩欧美有码在线| 国产精品久久久久久av福利软件| 91国内免费在线视频| 精品亚洲一区二区三区在线观看| 国产精品视频白浆免费视频| 欧美另类xxx| 国产亚洲在线播放| 色综合五月天导航| 色99之美女主播在线视频| 性色av一区二区三区红粉影视| 亚洲国产精品va在线观看黑人| 欧美成人免费小视频| 91热精品视频| 欧美床上激情在线观看| 成人a在线观看| 亚洲999一在线观看www| 国产精品入口免费视| 欧美日韩视频免费播放| 欧美激情视频播放| 国产91热爆ts人妖在线| 欧美中文在线观看| 欧美乱大交xxxxx另类电影| 91精品视频在线免费观看| 久久影院资源站| 国产精品福利在线观看网址| 色婷婷av一区二区三区久久| 亚洲性xxxx| 成人免费福利视频| 久久久久这里只有精品| 日本电影亚洲天堂| 亚洲综合在线小说| 国产精品精品一区二区三区午夜版| 亚洲精品国产精品乱码不99按摩| 美日韩精品免费视频| 中文字幕国产精品久久| 亚洲女人初尝黑人巨大| 国产精品成熟老女人| 日韩成人在线播放| 国产精品青草久久久久福利99| 亚洲综合在线播放| 久久久免费电影| 国产精品都在这里| 精品视频久久久久久久| 午夜精品久久久久久99热| 日本老师69xxx| 777777777亚洲妇女| 国产极品精品在线观看| 高清日韩电视剧大全免费播放在线观看| 欧美精品一区在线播放| 欧美国产日韩xxxxx| 国产精品99久久久久久久久久久久| 色婷婷**av毛片一区| 国产精品极品美女粉嫩高清在线| 亚洲国产欧美在线成人app| 姬川优奈aav一区二区| 精品国产网站地址| 国产精品高清免费在线观看| 777国产偷窥盗摄精品视频| 国产精品露脸av在线|