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

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

作為一個初學者如何開發第一個Beans

2019-11-18 11:15:05
字體:
來源:轉載
供稿:網友

  一、會話Beans介紹
  按功能可把EJB分為兩類:session Beans 與 Entity Beans。
  
  企業級Bean類
  為了使bean可以在任一容器中工作,bean必須被附在接口中。在EJB中,在enterPRise bean class中提供了企業級bean組件的實現。這是個簡單的遵循接口的java類。
  一個enterprise bean class 包含對組件的實現細節。會話bean的實現不同于實體bean的實現,
  一個Session Beans針對單一的客戶完成一次連接或會話,其生存直到客戶完成連接與會話,或系統意外中止。當一個新的客戶從EJB Server訪到一個Session Beans時,那么EJB Container創建一個新的Session Beans實例,其運行直到會話結束,Session Beans必須實現接口javax.ejb.SessionBean。
  Entity Beans實現接口javax.ejb.EntityBean,其描述了特定數據源中的數據,能長時間存在于EJB Container中,不會隨系統的意外中止而消失,并且可以讓多個客戶同時訪問。
  EJB規范定義了許多bean類能夠實現的標準接口。定義了所有的bean類必須有的方法。容器調用這些方法用來治理bean。
  所有bean類(無論是會話bean還是實體bean)必須實現的最基本的接口是javax.ejb.EnterpriseBean接口。
  public interface javax.ejb.EnterpriseBean extends java.io.Serializable
  {
  }
  值得注重的是:它繼續了java.io.Serializable。
  所有的會話bean必須實現javax.ejb.SessionBean,
  所有的實體bean必須實現javax.ejb.EntityBean.
  
  EJB對象
  當客戶想使用enterprise bean class的一個實例時,客戶不必直接在實際的實例上調用方法,調用過程被EJB容器截取,bean實例被容器中對象所代表。
  1、Enterprise bean class不能通過網絡直接被調用,我們知道EJB容器可以操縱網絡,因此它通過容器將bean包裝成可在網絡上使用的對象。
  2、通過截取請求,容器可以自動執行許多必要的治理工作。
  3、EJB容器可以跟蹤哪個方法被調用,在系統治理者的用戶接口上顯示其用法等等。
  因此,EJB容器可以看作間接的存在于客戶代碼和bean之間的層。這個間接的層使用單獨的網絡對象來表示自己,這個對象稱為EJB對象。
  EJB對象作為容器物理的部分;所有的EJB對象都有針對容器非凡要求的代碼。因此,容器提供商提供專門工具,用來自動為EJB對象產生類文件。
  
  遠程接口
  我們前面了解到,bean客戶調用EJB對象上的方法來代替調用bean,為了執行它,EJB對象必須復制bean類中的每個業務方法。但是,怎樣才能使自動產生的EJB對象知道復制了哪個方法呢?這就用到了bean提供者寫的一個非凡的接口,這個接口復制所有的與bean類相關聯的業務邏輯方法。這個接口被稱為遠程接口。
  這個接口必須遵循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對象時由容器自動生成。
  
  客戶端代碼通過調用javax.ejb.EJBObject的方法來和bean協同工作。
  
  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??蛻舸a不必關心正使用的EJB對象是在鄰近的計算機上還是從internat傳遞來的。這樣,EJB對象可以和客戶端處在同一個java VM中。
  EJB保證了本地分布式組件的透明度。這種透明對于多層配置來說是非常必要的??蛻舳舜a是非常輕易移植的,不受限于非凡的多層配置。EJB容器可以以最佳化方式在本地執行。
  
  Home對象
  我們看到,客戶端代碼處理EJB對象,而從不直接操作beans。那么,客戶端如何得到EJB對象的參考呢?
  客戶端不直接將EJB對象實例化。因為EJB對象可以存在于不同的機器中。同樣的,EJB使本地透明化,因此客戶端不知道它的確切所在。
  客戶端代碼通過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容器向企業級的bean組件提供隱含的中間件服務。隱含的中間件服務是bean可以獲得不必將任何中間件API解碼,可以自動獲得服務的一種服務。
  
  Bean的非凡屬性
  最后,你還需要有一個基于java的bean的屬性文件。Bean在運行時讀這些屬性,這些屬性在使用bean函數時會被用到。
  
  Ejb-jar文件
  一旦生成bean的類、home接口、遠程接口、配置描述符和bean的屬性,我們就可以把它們打包成一個實體。這個實體稱作Ejb-jar文件。這是個壓縮文件。
  
  建立Ejb-jar文件
  
  什么是會話bean
  一個Session Beans針對單一的客戶完成一次連接或會話,其生存直到客戶完成連接與會話,或系統意外中止。Session Beans必須實現接口javax.ejb.SessionBean。
  
  會話bean的生存期
  會話bean和實體bean的主要不同是它們的生存期的長短。會話bean的生存期短。與客戶的會話時間相當。在與客戶連接端開時,EJB容器會破壞會話bean。
  相反,實體bean可以存活相當長的時間,實體bean是永久存取的一部分,例如:數據庫。
  會話bean不能保存永久的存儲數據,但是,它可以進行數據庫操作。
  所有的會話bean都需要治理callback方法,容器定時的調用它,用來對bean的重要事件發出警告。這個方法僅能被容器調用。
  
  Conversational versus Nonconversational Session Beans
  
  如何寫會話Bean
  寫會話bean的類,必須實現javax.ejb.SessionBean接口
  public interface javax.ejb.SessionBean
  extends javax.ejb.EnterpriseBean
  {
  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;
  }
  會話bean和實體bean都繼續了javax.ejb.EnterpriseBean接口
  讓我們具體看看接口中的各種方法:
  setSessionContext(SessionContext ctx)
  容器調用這個方法來通過會話上下文與bean連接。Bean可以通過會話上下文向容器查詢當前事物的狀態和當前的安全狀態等。
  import javax.ejb.*;
  public class MyBean implements SessionBean {
  private SessionContext ctx;
  public void setSessionContext(SessionContext ctx) {
  this.ctx = ctx;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产日韩在线亚洲字幕中文| 亚洲美女黄色片| 国产精品丝袜久久久久久不卡| 九九精品视频在线| 久久久精品国产网站| 日韩精品日韩在线观看| 97久久久免费福利网址| 国产91对白在线播放| 国产精品狠色婷| 久久久成人精品| 精品国内产的精品视频在线观看| 欧美电影院免费观看| 国产在线观看91精品一区| 国产在线视频一区| 51视频国产精品一区二区| 欧美视频在线观看 亚洲欧| 久久躁狠狠躁夜夜爽| 日韩免费观看高清| 欧美极品少妇与黑人| 国产成人精品视频在线观看| 国产又爽又黄的激情精品视频| 亚洲免费高清视频| 国产精品欧美日韩| 欧美超级免费视 在线| 欧美黑人xxxx| 亚洲无限乱码一二三四麻| 日韩精品中文字幕在线观看| 色无极亚洲影院| 日韩资源在线观看| 欧美大成色www永久网站婷| 日韩成人在线观看| 97**国产露脸精品国产| 欧美大码xxxx| 色狠狠av一区二区三区香蕉蜜桃| 宅男66日本亚洲欧美视频| 国产精品第一页在线| 国产亚洲精品久久| 热99精品只有里视频精品| 成人久久久久久| 亚洲激情电影中文字幕| 一区二区日韩精品| 一本一本久久a久久精品牛牛影视| 69av成年福利视频| 国产aaa精品| 欧美福利视频网站| 97免费视频在线播放| 亚洲国产精品久久| 国产精品成人一区二区三区吃奶| 国产精品欧美日韩久久| 91禁外国网站| 国产精品嫩草影院一区二区| 亚洲欧美中文字幕| 国产精品永久免费观看| 欧美性xxxx极品高清hd直播| 国产精品久久999| 国产欧美一区二区| 亚洲人a成www在线影院| 日韩美女免费视频| 7777精品视频| 久久99国产精品自在自在app| 亚洲三级av在线| 亚洲色图综合久久| 亚洲成人精品视频| 亚洲毛片一区二区| 日韩在线视频网站| 啪一啪鲁一鲁2019在线视频| 国产精品久久久久7777婷婷| 欧美性做爰毛片| 欧美www视频在线观看| 成人午夜两性视频| 欧美丰满老妇厨房牲生活| 久久精品国产亚洲一区二区| 欧美日韩国产91| 黑人精品xxx一区一二区| 亚洲欧洲激情在线| 成人久久一区二区三区| 97香蕉久久超级碰碰高清版| 日韩在线中文字| 国产91网红主播在线观看| 午夜精品一区二区三区在线| 国产精品免费久久久久久| 欧美日韩精品在线播放| 日韩美女福利视频| 国产午夜精品一区二区三区| 68精品国产免费久久久久久婷婷| 日韩欧美有码在线| 欧美日韩电影在线观看| 国产精品美乳在线观看| 欧美第一页在线| 成人乱人伦精品视频在线观看| 亚洲乱码一区av黑人高潮| 欧美老女人性视频| 色综久久综合桃花网| 97视频在线观看免费高清完整版在线观看| 国产精品网站入口| 精品女同一区二区三区在线播放| 日韩在线观看免费全集电视剧网站| 久久精品电影网站| 国产精品444| 中文字幕久热精品视频在线| 欧美野外wwwxxx| 91av视频导航| 国产精选久久久久久| 国产免费一区二区三区在线观看| 国产精品日日摸夜夜添夜夜av| 久久av资源网站| 疯狂欧美牲乱大交777| 日韩中文字幕在线| 亚洲专区国产精品| 姬川优奈aav一区二区| 韩日精品中文字幕| 尤物tv国产一区| 欧美高清激情视频| 日韩女在线观看| 欧美电影在线观看高清| 久久av中文字幕| 55夜色66夜色国产精品视频| 中文字幕日韩电影| 午夜精品一区二区三区在线视| 精品久久香蕉国产线看观看亚洲| 91精品国产91久久久久久| 成人h片在线播放免费网站| 欧美午夜女人视频在线| 欧美日韩另类视频| 亚洲自拍偷拍区| 欧美成人第一页| 欧美色xxxx| 日本国产精品视频| 在线观看免费高清视频97| 日产精品99久久久久久| 欧美最猛性xxxx| 欧美色欧美亚洲高清在线视频| 在线视频精品一| 欧美在线视频免费| 国产精品一区二区三| 亚洲图片在区色| 亚洲xxxxx性| 亚洲精品资源美女情侣酒店| 国产精品毛片a∨一区二区三区|国| 亚洲精品第一国产综合精品| 国产69精品久久久久9999| 国产精品爱久久久久久久| 综合欧美国产视频二区| 尤物九九久久国产精品的特点| 亚洲国产欧美一区二区三区同亚洲| 色偷偷91综合久久噜噜| 日韩av在线影院| 91久久精品国产91久久性色| 欧洲成人免费aa| 91在线精品播放| 国产精品扒开腿做爽爽爽视频| 日本精品一区二区三区在线播放视频| 日本一区二区在线播放| 国产精品免费在线免费| 亚洲人成电影在线观看天堂色| 亚洲激情成人网| www.日韩视频| 亚洲男人第一av网站| 国产精品久久二区| 国产精品自拍视频| www.国产一区| 国产午夜精品一区理论片飘花| 国产精品美女视频网站| 4k岛国日韩精品**专区|