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

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

什么是 Enterprise JavaBeans 組件(2)

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

  本文的第二部分說明創建 EnterPRise javaBean 組件所需的 Java 接口和類的作用。除了對 bean 類本身進行編碼外,EJB 開發人員還必須為 bean 定義一個本地接口和一個遠程接口。這些接口的實現類通常由容器生成,因此部署 EJB 組件是開發人員和 EJB 容器的合作行為。第二部分還區分了 enterprise bean 的兩種主要類型,即會話 bean 和實體 bean,并說明了 EJB 容器和 EJB 服務器之間的關系。
  
  enterprise bean 的編程模型的三個要害特征是:面向對象、對象的分布式和使用代理對象。由于此編程模型使用 Java 技術,因此它在本質上就是面向對象的。此模型也是分布式的,這是指 bean 在理論上是位置透明的。根據 Enterprise JavaBeans (EJB) 規范,“一般說來,EJB 類和 EJB 容器的實際位置對客戶機是透明的?!痹诳蛻魴C想要訪問 EJB 組件時使用代理對象。bean 本身對于客戶機是不可訪問的,對 bean 方法的訪問則由 helper 類提供。
  
  接口、委托和代理
  當 Java 程序員編寫一個 Enterprise JavaBeans 組件時,他們所創建的類必須實現一個 EJB 接口,并且它必須包含一個名為 ejbCreate() 的方法。一個 EJB 接口 -- 例如 sessionBean 接口 -- 指定了一些方法,它們包括以下各項:
  
  ejbActivate()
  ejbPassivate()
  ejbRemove()
  setSessionContext()
  
  ejbActivate() 和 ejbPassivate() 方法通知一個 bean,治理該 bean 的容器組件正在主動和被動之間切換 bean 的狀態(這通常是指在內存中還是交換到磁盤)。ejbRemove() 方法使 bean 知道它已被從容器中刪除。setSessionContext() 方法使 bean 與一個上下文對象相關聯,此上下文對象是為了便于 bean 與其容器進行通信。
  
  ejbCreate() 方法并不是從零做起創建 enterprise bean 的。當客戶機想要創建新的 enterprise bean 時,bean 的容器將調用這個 bean 的類的 newInstance() 方法,來實例化新的 bean 對象。然后容器調用 setSessionContext() 方法來建立上下文對象,用于與 bean 進行通信。最后,容器調用新 bean 中的 ejbCreate() 方法。像 ejbCreate()、ejbActivate() 和 ejbPassivate() 這樣的方法有時稱為對象生存周期方法,以區別于業務邏輯方法。
  
  當開發人員設計一個新的 EJB 組件時,編寫組成 enterprise bean 類的代碼本身是不夠的。EJB 程序員還必須編寫兩個將由 helper 類使用的 Java 接口。這些強制性接口必須擴展標準的 EJBObject 和 EJBHome 接口,而這兩個接口則都是 java.rmi.Remote marker 接口的擴展。擴展標準 EJBObject 接口的接口被稱為 enterprise bean 的遠程接口,它指定在 bean 自身中定義的業務方法。當應用程序調用 enterprise bean 中的業務方法時,應用程序并不訪問 bean 本身。實際上,方法調用被傳遞給實現 EJBObject 接口擴展的那個對象。這種做法稱為委托,它是 EJB 體系結構中的一個設計要點:
  
  
  “客戶機從來不直接訪問 enterprise bean 類的實例??蛻魴C總是使用 enterprise bean 的遠程接口來訪問 enterprise bean 的實例。實現 enterprise bean 的遠程接口的類由容器提供。此類所實現的分布式對象稱為 EJB 對象?!?Enterprise JavaBeans Specification 1.0)
  
  bean 對 EJBObject 接口的擴展稱為其遠程接口,而實現遠程接口的對象則稱為 EJB 對象。
  
  enterprise bean 還必須具有本地接口。此接口是標準 EJBHome 接口的擴展。實現 bean 的本地接口的對象稱為本地對象。本地對象包含一個 create() 方法,此方法由應用程序調用,而應用程序則必須創建一個 bean 實例。本地對象中的 create() 方法創建一個新的 EJB 對象。它并不直接創建新的 enterprise bean 實例,因為不答應直接訪問 bean。
  
  EJB 對象和本地對象充當 bean 對象的代理,因為它們代表 bean 接收方法調用。EJB 對象主要為 bean 業務方法充當代理;本地對象主要為 bean 生存周期方法充當代理。
  
  為 EJB 組件使用 create() 方法并不一定要實例化新的 bean。容器確定如何最好地滿足創建請求,對于某些類型的 bean,它可以重用現有的實例:
  
  
  “客戶機使用會話 bean 本地接口上的 create 和 remove 方法。雖然客戶機以為它正在控制著 EJB 實例的生存周期,但是,是容器在處理 create 和 remove 調用,而不一定要創建和刪除 EJB 實例。在客戶機和...實例之間不存在固定的映射。容器只是將客戶機的工作委托給任何一個方法已經就緒的可用實例而已?!?Enterprise JavaBeans Specification 1.0)
  
  創建新的 bean 實例受容器的控制,并可以與客戶機發布 create() 方法異步。
  
  當創建一個 EJB 組件時,開發人員負責定義 EJBObject 接口和 EJBHome 接口,但是無需編寫實現這些接口的類的代碼。EJB 容器軟件組件自動創建這些類。
  
  下面的代碼段說明客戶機應用程序可能怎樣使用稱為 CartBean 的 enterprise bean 來進行在線購物:
  
  CartHome cartHome = javax.rmi.PortableRemoteObject.narrow(
  initialContext.lookup("applications/shopping_cart"), CartHome.class);
  Cart cart = cartHome.create();
  cart.addItem(item29);
  cart.addItem(item67);
  cart.addItem(item91);
  cart.purchase();
  cart.remove();
  
  
  CartHome 是實現本地接口的類(EJBHome 接口的擴展)。Cart 是實現遠程接口的類(EJBObject 接口的擴展)。當客戶機調用應用程序方法(如 addItem() 和 purchase())時,它們是在 cart 對象上調用的,此對象接著將這些方法的執行委托給 bean 自身。enterprise bean 的功能是通過其代理 EJB 對象(即 cart)來獲得的。假如多臺客戶機同時訪問 cart bean,將會發生什么事情呢?Enterprise bean 開發人員無需編寫代碼來支持并發訪問。并發性由 EJB 容器支持。
  
  下圖說明各 EJB 對象之間的關系:
  
  服務器和容器
  EJB 體系結構包括 EJB 服務器和 EJB 容器兩個概念。EJB 服務器充當一種組件執行系統,正如 EJB 白皮書中所述:
  
  “Enterprise JavaBeans 規范為每個支持完全可移植性的 Java 應用程序服務器定義了一個標準模型。任何廠商都可以使用此模型來實現對 Enterprise JavaBeans 組件的支持。多種系統(如 TP 監視器、CORBA 運行時系統、COM 運行時系統、數據庫系統、Web 服務器系統或其它基于服務器的運行時系統)都可以調整到能夠支持可移植的 Enterprise JavaBeans 組件?!?Thomas, Enterprise JavaBeans Technology: Server Component Model for the Java Platform)
  
  EJB 服務器為使用 EJB 組件的應用程序提供操作環境,并供給所有必需的服務,來支持 EJB 體系結構。打包 EJB 服務器軟件并沒有預先規定的方式。一種方法是將它作為一項功能增強包括到應用程序服務器中,這就是在 IBM WebSphere Application Server, Advanced Edition, Version 2.0 中采用的方法。
  
  EJB 組件并不在 EJB 服務器的頂部直接執行。一個稱為 EJB 容器的中間軟件組件在 EJB 服務器環境中運行,從而又為這些 bean 自身提供操作環境。EJB 容器對 EJB 應用程序是完全透明的,但是在支持 bean 操作方面起著要害性的作用。
  
  為了使 enterprise bean 能充當可重用的軟件組件,它們對特定的服務器或平臺功能不能有內建的相關性。服務器端功能的幾種常見類型已經被從 bean 設計中“分離出去”,而將此功能的責任轉移給了容器組件。例如,容器將被用來接管安全性、并發性、事務處理、交換到輔助存儲器和其它服務的責任,從而使 bean 免受服務器相關性的制約,并將按業務邏輯來優化,而不是按服務邏輯來優化。
  
  EJB 白皮書這樣描述容器的作用:
  
  “EJB 容器治理部署于其中的 enterprise bean??蛻魴C應用程序并不直接與 enterprise bean 進行交互。相反,客戶機應用程序通過由容器生成的兩個封裝接口( EJB Home 接口和 EJB Object 接口)與 enterprise bean 進行交互。當客戶機使用封裝接口調用各種操作時,容器截獲每個方法調用,并插入治理服務。”(Thomas, Enterprise JavaBeans Technology: Server Component Model for the Java Platform)
  
  可以期望 EJB 容器軟件一般都會隨 EJB 服務器軟件一起提供,盡管規范答應分離這些組件。除了提供對運行時服務(如事務處理和安全性)的訪問以外,還期望 EJB 容器包括各種必要工具,來支持 enterprise bean 的安裝、操作和治理。例如,需要有工具解釋 EJB jar 文件的內容,有工具生成數據庫訪問,來獲得容器提供的持久性,有工具監視正在運行的 bean 的行為,以及實現安全性等。
  
  Bean 風格
  EJB 組件分為兩種主要類別 -- 會話 bean 和實體 bean。根據 bean 處理狀態、事務和持久性的方式這些類別還可以進一步細分。會話 bean 通常具有以下屬性:
  
  代表單個客戶機執行
  可以是事務性的
  可以更新共享數據庫中的數據
  生存期相對較短
  其生存期通常就是客戶機的生存期
  任何持久性數據都由 bean 治理
  可以依容器的判定予以刪除
  會在 EJB 服務器失敗時被刪除
  實體 bean 通常具有以下屬性:
  
  代表數據庫中的數據
  是事務性的
  答應多個用戶共同訪問
  可以長期存在
  持久性數據可以由容器治理
  在 EJB 服務器失敗后能繼續生存
  EJB 規范對會話 bean 和實體 bean 的說明如下:
  
  “對于客戶機,會話 enterprise bean 是一種非持久性的

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品在线观看www| 欧美大尺度激情区在线播放| 久久深夜福利免费观看| 日韩av在线网页| 国产精品91久久久| 亚洲人成毛片在线播放| 中文字幕在线看视频国产欧美在线看完整| 97在线精品国自产拍中文| 日本不卡视频在线播放| 亚洲第一在线视频| 岛国av午夜精品| 日本亚洲欧洲色α| 日韩免费在线免费观看| 精品久久久久久久久久ntr影视| 在线电影欧美日韩一区二区私密| 欧美一级视频一区二区| 日韩国产一区三区| 国内精品久久久久影院 日本资源| 亚洲男人7777| 亚洲性av在线| 欧美巨大黑人极品精男| 日韩av高清不卡| 国产激情综合五月久久| 久久久久国产精品一区| 91深夜福利视频| 亚洲xxx自由成熟| 国产精品扒开腿做爽爽爽的视频| 精品久久久久国产| 亚洲自拍偷拍色图| 欧美第一淫aaasss性| 欧美日韩精品在线视频| 日韩中文字幕在线观看| 91久久国产婷婷一区二区| 亚洲精品美女久久久久| 91精品国产91久久久久| 国产精品老牛影院在线观看| 久久久久久69| 久久亚洲国产精品成人av秋霞| 欧美一区亚洲一区| 国产欧美久久久久久| 97香蕉超级碰碰久久免费的优势| 亚洲韩国日本中文字幕| 久久夜色精品国产欧美乱| 亚洲精品久久久久久久久| 国产一区二区在线播放| 国产成人一区二区三区小说| 亚洲性xxxx| 国产成人精品综合久久久| 国产欧美va欧美va香蕉在| 奇米成人av国产一区二区三区| 欧美性猛交丰臀xxxxx网站| 国产一区红桃视频| 55夜色66夜色国产精品视频| 亚洲欧美国产精品久久久久久久| 国模叶桐国产精品一区| 日本中文字幕成人| 亚洲欧美一区二区精品久久久| 欧美日韩福利电影| 日韩亚洲在线观看| 久色乳综合思思在线视频| 日韩欧美在线播放| 国产精品美女视频网站| 青青在线视频一区二区三区| 亚洲电影中文字幕| 69视频在线免费观看| 欧美性做爰毛片| 日韩国产欧美精品一区二区三区| 欧美日本黄视频| 亚洲美女性生活视频| 亚洲黄色在线看| 国内精品模特av私拍在线观看| 亚洲最新视频在线| 亚洲精品国产精品久久清纯直播| 亚洲日韩欧美视频| 亚洲欧美日本另类| 欧美一级片在线播放| 成人h片在线播放免费网站| 自拍偷拍亚洲在线| 日韩中文字幕亚洲| 亚洲美女自拍视频| 亚洲精品按摩视频| 国模私拍视频一区| 97av在线播放| 日韩精品中文字幕在线播放| 91精品国产综合久久久久久蜜臀| 亚洲成人黄色网| 一区二区欧美激情| 欧美成人午夜视频| 亚洲品质视频自拍网| 色偷偷综合社区| 国产精品视频资源| 91免费欧美精品| 欧美床上激情在线观看| 97视频在线观看免费| 欧美人与性动交a欧美精品| 亚洲美女精品久久| 亚洲а∨天堂久久精品9966| 日韩小视频在线| 91精品国产乱码久久久久久久久| 狠狠操狠狠色综合网| 国产精品91在线| 成人做爽爽免费视频| 国产精品igao视频| 欧美日韩亚洲一区二区三区| 欧美黄色免费网站| 中文字幕亚洲字幕| 性欧美视频videos6一9| 国产欧美精品一区二区| 亚洲精品美女久久| 久久视频精品在线| 国产97在线观看| 成人中文字幕在线观看| 精品久久久久久久久久久久久| 韩国一区二区电影| 精品亚洲一区二区三区四区五区| 亚洲高清福利视频| 欧美日韩人人澡狠狠躁视频| 国产精品久久网| 成人欧美在线观看| 欧美激情久久久久久| 久久久国产精彩视频美女艺术照福利| 91精品国产成人www| 国产v综合v亚洲欧美久久| 久久久中精品2020中文| 日本aⅴ大伊香蕉精品视频| 日本19禁啪啪免费观看www| 久久视频这里只有精品| 美女撒尿一区二区三区| 亚洲免费影视第一页| 日韩一区二区三区国产| 精品亚洲精品福利线在观看| 午夜精品一区二区三区在线| 色婷婷综合成人av| 国产激情久久久| 国产精品av在线播放| 日韩成人在线电影网| 亚洲国产古装精品网站| 久久久久久久999| 国产热re99久久6国产精品| 一本色道久久88综合亚洲精品ⅰ| 中文字幕在线日韩| 91亚洲午夜在线| 欧美在线激情视频| 5252色成人免费视频| 国产精品久久久久久亚洲影视| 国产成人涩涩涩视频在线观看| 国产精品扒开腿做爽爽爽的视频| 欧美一区第一页| 久久人人97超碰精品888| 日韩av在线免费观看一区| 欧美激情videoshd| 91日韩在线播放| 国产999精品| 日韩免费看的电影电视剧大全| 日韩久久免费视频| 久久这里只有精品视频首页| 欧美大码xxxx| 亚洲精品久久久久国产| 日韩美女福利视频| 亚洲人精选亚洲人成在线| 中文亚洲视频在线| 久久国产精品久久精品| 色偷偷亚洲男人天堂| 亚洲片国产一区一级在线观看|