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

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

教您如何成為 EJB 專家詳解系列連載之二

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

  開發Beans
  一、會話Beans介紹
  按功能可把EJB分為兩類:session Beans 與 Entity Beans。
  
  1. 企業級Beans類
  
  為了使Beans可以在任一容器中工作,Beans必須被附在接口中。在EJB中,在enterPRise Beans class中提供了企業級Beans組件的實現。這是個簡單的遵循接口的java類。 一個enterprise Beans class 包含對組件的實現細節。會話Beans的實現不同于實體Beans的實現, 一個Session Beans針對單一的客戶完成一次連接或會話,其生存直到客戶完成連接與會話,或系統意外中止。
  
  當一個新的客戶從EJB Server訪到一個Session Beans時,那么EJB Container創建一個新的Session Beans實例,其運行直到會話結束,Session Beans必須實現接口Javax.eJb.SessionBeans。 Entity Beans實現接口Javax.eJb.EntityBeans,其描述了特定數據源中的數據,能長時間存在于EJB Container中,不會隨系統的意外中止而消失,并且可以讓多個客戶同時訪問。
  
  EJB規范定義了許多Beans類能夠實現的標準接口。定義了所有的Beans類必須有的方法。容器調用這些方法用來治理Beans。所有Beans類(無論是會話Beans還是實體Beans)必須實現的最基本的接口是Javax.eJb.EnterpriseBeans接口。
  
  public interface Javax.eJb.EnterpriseBeans extends Java。io。Serializable
  {
  }
  
  值得注重的是:它繼續了Java。io。Serializable。所有的會話Beans必須實現Javax.eJb.SessionBeans,所有的實體Beans必須實現Javax.eJb.EntityBeans。
  
  EJB對象
  當客戶想使用enterprise Beans class的一個實例時,客戶不必直接在實際的實例上調用方法,調用過程被EJB容器截取,Beans實例被容器中對象所代表。
  
  1、Enterprise Beans class不能通過網絡直接被調用,我們知道EJB容器可以操縱網絡,因此它通過容器將Beans包裝成可在網絡上使用的對象。
  
  2、通過截取請求,容器可以自動執行許多必要的治理工作。
  
  3、EJB容器可以跟蹤哪個方法被調用,在系統治理者的用戶接口上顯示其用法等等。
  
  因此,EJB容器可以看作間接的存在于客戶代碼和Beans之間的層。這個間接的層使用單獨的網絡對象來表示自己,這個對象稱為EJB對象。EJB對象作為容器物理的部分;所有的EJB對象都有針對容器非凡要求的代碼。因此,容器提供商提供專門工具,用來自動為EJB對象產生類文件。
  
  遠程接口
  
  我們前面了解到,Beans客戶調用EJB對象上的方法來代替調用Beans,為了執行它,EJB對象必須復制Beans類中的每個業務方法。但是,怎樣才能使自動產生的EJB對象知道復制了哪個方法呢?這就用到了Beans提供者寫的一個非凡的接口,這個接口復制所有的與Beans類相關聯的業務邏輯方法。這個接口被稱為遠程接口。這個接口必須遵循EJB規范的定義,所有的遠程接口必須從sun公司提供的通用接口繼續而來,即Javax.eJb.EJBObJect。
  
  EJB對象
  public interface Javax.eJb.EJBObJect
  extends Java.rmi.Remote
  {
  public abstract Javax.eJb.EJBHome getEJBHome()
  throws Java.rmi.RemoteException;
  
  public abstract Java。lang。ObJect getPrimaryKey()
  throws Java.rmi.RemoteException;
  
  public abstract void remove()
  throws Java.rmi.RemoteException,
  Javax.eJb.RemoveException;
  
  public abstract Javax.eJb.Handle getHandle()
  throws Java.rmi.RemoteException;
  
  public abstract boolean isIdentical(Javax.eJb.EJBObJect)
  throws Java.rmi.RemoteException;
  }
  
  以上是對于所有EJB對象必須擁有的方法,你不需實現這些方法,這些方法的實現,生成EJB對象時由容器自動生成??蛻舳舜a通過調用Javax.eJb.EJBObJect的方法來和Beans協同工作。
  
  Java RMI和EJB對象
  你應當注重到:Java。eJb。EJBObJect繼續了Java.rmi.Remote。Java.rmi.Remote接口是Java遠程方法調用(RMI)的一部分,任一個實現Java.rmi.Remote的對象都是rmote對象,它可以被另外的Java虛擬機所調用。
  
  被容器提供的EJB對象實現了遠程接口,同時也間接實現了Java.rmi.Remote,這樣也就意味著你的EJB對象是完全符合網絡需要的,可以被網絡上的其他Java虛擬機調用。當然,EJB接口也必須遵守EJB規范。
  
  EJB遠程接口必須遵守Java的RMI遠程接口規范。例如:錯誤處理,二者相同。
  
  遠程接口同樣也必須遵守Java RMI參數傳遞規范。不是什么都可以通過VM方法調用來在網絡上傳遞,傳遞的參數必須符合RMI類型。EJB也繼續了RMI的優點,對于RMI,你正在調用的遠程對象的物理地址是不可見的。這個特點同樣也適用于EJB。客戶代碼不必關心正使用的EJB對象是在鄰近的計算機上還是從internat傳遞來的。這樣,EJB對象可以和客戶端處在同一個Java VM中。
  
  EJB保證了本地分布式組件的透明度。這種透明對于多層配置來說是非常必要的??蛻舳舜a是非常輕易移植的,不受限于非凡的多層配置。EJB容器可以以最佳化方式在本地執行。
  
  Home對象
  
  我們看到,客戶端代碼處理EJB對象,而從不直接操作Beans。那么,客戶端如何得到EJB對象的參考呢?客戶端不直接將EJB對象實例化。因為EJB對象可以存在于不同的機器中。同樣的,EJB使本地透明化,因此客戶端不知道它的確切所在??蛻舳舜a通過EJB對象工廠得到EJB對象的參考。EJB規范里稱這種工廠為home對象。它主要起一下作用:
  
  建立EJB對象。
  
  找到已經存在的EJB對象。
  
  刪除EJB對象。
  
  在一些細節方面,EJB對象工廠同EJB對象的特征相同。
  
  Home接口
  
  Home接口簡單的定義了建立、刪除和尋找EJB對象的方法。容器的home對象實現了home接口。
  
  通常,EJB定義了所有home接口必須支持的許多方法,這些必須的方法被定義在Javax.eJb.EJBHome接口上,home接口必須繼續Java。eJb。EJBHome接口。
  
  public interface Javax.eJb.EJBHome
  extends Java.rmi.Remote
  {
  public abstract EJBMetaData getEJBMetaData()
  throws Java.rmi.RemoteException;
  public abstract void remove(Handle handle)
  throws Java.rmi.RemoteException
  Javax.eJb.RemoveException;
  public abstract void remove(ObJect primaryKey)
  throws Java.rmi.RemoteException,
  Javax.eJb.RemoveException;
  }
  
  Javax.eJb.EJBHome接口
  注重Javax.eJb.EJBHome繼續了Java.rmi.Remote,這意味著home接口同樣也支持RMI遠程對象,傳遞的參數和RMI也相同。
  
  Home對象
  
  所有home對象所需的方法
  
  配置描述符
  
  配置描述符答應EJB容器向企業級的Beans組件提供隱含的中間件服務。隱含的中間件服務是Beans可以獲得不必將任何中間件API解碼,可以自動獲得服務的一種服務。
  
  Beans的非凡屬性
  
  最后,你還需要有一個基于Java的Beans的屬性文件。Beans在運行時讀這些屬性,這些屬性在使用Beans函數時會被用到。
  
  EJb-Jar文件
  
  一旦生成Beans的類、home接口、遠程接口、配置描述符和Beans的屬性,我們就可以把它們打包成一個實體。這個實體稱作EJb-Jar文件。這是個壓縮文件。
  
  建立EJb-Jar文件
  
  什么是會話Beans,一個Session Beans針對單一的客戶完成一次連接或會話,其生存直到客戶完成連接與會話,或系統意外中止。Session Beans必須實現接口Javax.eJb.SessionBeans。
  
  會話Beans的生存期
  會話Beans和實體Beans的主要不同是它們的生存期的長短。會話Beans的生存期短。與客戶的會話時間相當。在與客戶連接端開時,EJB容器會破壞會話Beans。相反,實體Beans可以存活相當長的時間,實體Beans是永久存取的一部分,例如:數據庫。會話Beans不能保存永久的存儲數據,但是,它可以進行數據庫操作。所有的會話Beans都需要治理callback方法,容器定時的調用它,用來對Beans的重要事件發出警告。這個方法僅能被容器調用。
  
  Conversational versus Nonconversational Session Beans
  
  如何寫會話Beans
  寫會話Beans的類,必須實現Javax.eJb.SessionBeans接口
  public interface Javax.eJb.SessionBeans
  extends Javax.eJb.EnterpriseBeans
  {
  public abstract void setSessionContext(SessionContext ctx)
  throws Java.rmi.RemoteException;
  
  public abstract void eJbPassivate()
  throws Java.rmi.RemoteException;
  
  public abstract void eJbActivate()
  throws Java.rmi.RemoteException;
  
  public abstract void eJbRemove()
  throws Java.rmi.RemoteException;
  }
  
  會話Beans和實體Beans都繼續了Javax.eJb.EnterpriseBeans接口,讓我們具體看看接口中的各種方法:
  
  setSessionContext(SessionContext ctx)
  容器調用這個方法來通過會話上下文與Beans連接。
  Beans可以通過會話上下文向容器查詢當前事物的狀態和當前的安全狀態等。
  import Javax.eJb.*;
  public class MyBeans implements SessionBeans {
  private S

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人激情av在线| 久久久久久久久久久免费精品| 亚洲国产精品资源| 在线观看久久久久久| 在线观看中文字幕亚洲| 国产精品久久久91| 亚洲国产高潮在线观看| 精品综合久久久久久97| 亚洲性av在线| 成人福利网站在线观看11| 欧美精品免费在线观看| 成人高h视频在线| 国产精品久久久久国产a级| 色午夜这里只有精品| 亚洲国产精品国自产拍av秋霞| 自拍偷拍亚洲在线| 俺去了亚洲欧美日韩| 国产成人久久精品| 国产在线不卡精品| 91久久嫩草影院一区二区| 成人黄色影片在线| 欧美激情国产精品| 亚洲欧洲一区二区三区在线观看| 日韩在线播放av| 91精品国产高清| 高清欧美性猛交xxxx黑人猛交| 中文字幕免费国产精品| 狠狠躁18三区二区一区| 永久免费看mv网站入口亚洲| 亚洲欧美日韩精品久久| 69久久夜色精品国产69| 日韩av在线导航| 57pao国产成人免费| 亚洲国产精品久久久久秋霞不卡| 欧美在线www| 欧美性猛交丰臀xxxxx网站| 欧美影院久久久| 97久久国产精品| 91天堂在线观看| 久久国产精品久久精品| 欧美中文字幕视频在线观看| 黑人巨大精品欧美一区二区一视频| 韩剧1988免费观看全集| 欧美国产一区二区三区| 欧美黑人xxxx| 亚洲精品视频久久| 欧美成人网在线| 久久在线观看视频| 日韩精品久久久久久久玫瑰园| 欧美多人乱p欧美4p久久| 亚洲午夜精品久久久久久久久久久久| 欧美电影免费在线观看| 在线性视频日韩欧美| 一区二区三区在线播放欧美| 色悠久久久久综合先锋影音下载| 国产欧美在线播放| 欧美精品成人91久久久久久久| 97精品一区二区视频在线观看| 久久久久久久爱| 欧美日韩国产专区| 欧美在线中文字幕| 国产福利精品av综合导导航| 国产欧美精品一区二区三区-老狼| 欧美日本精品在线| 国产精品偷伦一区二区| 色偷偷88888欧美精品久久久| 欧美寡妇偷汉性猛交| 欧美日韩中国免费专区在线看| 日韩在线激情视频| 国产精品第七十二页| 久久久久国产精品www| 国产在线视频不卡| 精品久久久久久中文字幕大豆网| 亚洲午夜精品久久久久久性色| 成人免费网视频| 亚洲伊人一本大道中文字幕| 69影院欧美专区视频| 国产丝袜一区视频在线观看| 日韩高清有码在线| 91亚洲精品久久久| 亚洲欧洲xxxx| xxav国产精品美女主播| 亚洲iv一区二区三区| 国产日韩欧美电影在线观看| 亚洲丁香婷深爱综合| 3344国产精品免费看| 精品中文字幕久久久久久| 久久久亚洲影院| 精品国产一区二区三区在线观看| 一本大道香蕉久在线播放29| 在线观看国产精品日韩av| 91亚洲国产精品| 高清欧美一区二区三区| 91av在线精品| 国产精品视频成人| 亚洲一区二区三| 国产成人在线亚洲欧美| 一本一本久久a久久精品综合小说| 久久久久久这里只有精品| 欧美猛少妇色xxxxx| 欧美成人精品h版在线观看| 国产精品美女呻吟| 亚洲影院高清在线| 亚洲欧洲xxxx| 亚洲美女www午夜| 欧美精品九九久久| 亚洲女人天堂色在线7777| 国产有码在线一区二区视频| 亚洲精品小视频| 色视频www在线播放国产成人| 久久久欧美精品| 欧美疯狂性受xxxxx另类| 91亚洲va在线va天堂va国| 久久中文字幕在线视频| 亚洲国产小视频| 国产精品久久久久久久久免费| 国产成人欧美在线观看| 久久久久久av| 日韩中文字幕国产| 欧美视频国产精品| 欧美激情一级精品国产| 一区二区欧美亚洲| 国产aⅴ夜夜欢一区二区三区| 欧美日韩美女视频| 午夜伦理精品一区| 91沈先生在线观看| 成人免费视频在线观看超级碰| 成人免费看吃奶视频网站| 久久亚洲精品视频| 最近2019好看的中文字幕免费| 欧美最顶级的aⅴ艳星| 亚洲午夜未删减在线观看| 日韩在线观看视频免费| 国产精品久久久久久av下载红粉| 日韩av电影手机在线| 欧美超级乱淫片喷水| 亚洲男人av在线| 国产91ⅴ在线精品免费观看| 91亚洲精品在线| 日韩精品中文字幕久久臀| 日韩精品中文字| 综合网日日天干夜夜久久| 久久久成人精品视频| 亚洲视频在线免费看| 亚洲国产高清高潮精品美女| 日韩av综合网| 欧美日韩国产精品| 亚洲激情视频在线| 亚洲影院污污.| 日韩中文字幕网址| 国产欧美va欧美va香蕉在| 成人黄色av免费在线观看| 欧美美女操人视频| 欧美成aaa人片在线观看蜜臀| 热99精品里视频精品| 欧美日韩成人免费| 7777kkkk成人观看| 中日韩美女免费视频网址在线观看| 久久久www成人免费精品张筱雨| 最新中文字幕亚洲| 久久国产精品久久久久久久久久| 日韩暖暖在线视频| 欧美色图在线视频| 亚洲欧美综合精品久久成人|