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

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

Enterprise JavaBeans導論2

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

  理解EJB組件
  你現在應該已經熟悉了整個EJB體系結構及其主要的部件。這一節更具體地描述了這些部件,并解釋它們運行時的行為語意。
  
  Home接口
  EJB庫使用enterPRise bean的客戶端通過它的home接口創建它的實例。Home接口包含一個或多個用來創建enterprise bean實例的create()方法。這個home接口不是由bean來實現,而是通過稱為home object的類來實現。一個home object的實例在服務器中實例化,使得客戶端可以訪問它們。
  定位home object 一個home object的引用被放在名字服務中,客戶端能通過JNDI訪問它。EJB服務器一般提供某種名字空間的實現,雖然有時可以使用外部的名字空間。在這兩種情況下客戶端都必須知道名字空間的位置以及JNDI的上下文類。例如,一個客戶端的applet可能接收名字空間和JNDI上下文類作為applet的參數。
  除了提供位置和類名,客戶端也必須知道在名字樹中定位home object.這些必須在客戶端啟動時提供。當部署者把enterprise bean部署進EJB服務器中時,他必須可以以參數形式指定名字樹,如ejb/accounting/AccountsPayable.客戶端必須獲得這個完整的路徑名來定位并獲得AccountsPayable home object的引用。并不是說客戶端通過JNDI獲得容器。客戶端使用JNDI查找home接口的實現。Home接口的實現由某個非凡的container來提供,但這是該容器廠商的細節,enterprise bean開發者和客戶端應該忽略它。
  Home接口中的方法
  Enterprise bean開發者定義ejbCreate()方法的同時必須在home接口中聲明與其相應的create()方法。實體bean可以包含finder方法以使得客戶端能定位已有的實體bean. Home接口是通過繼續javax.ejb.EJBHome來定義的。該接口包含如下的方法:
  
  public interface javax.ejb.EJBHome extends Remote {
  public EJBMetaData getEJBMetaData() throws RemoteException;
  public void remove(Handle handle) throws
  RemoteException,RemoveException;
  public void remove(Object primaryKey) throws
  RemoteException,RemoveException;
  一個bean的home接口可以象下面這樣:
  public interface myHome extends EJBHome {
  public myRem create() throws RemoteException,CreateException;
  public myRem create(String str) throws
  RemoteException,CreateException;
  其中
  public interface myRem extends EJBObject { … }
  
  容器開發商負責提供實現home接口的home對象,因為只有開發商才能實現存貯enterprise bean的庫的編碼。
  
  容器
  定義容器在理解EJB規范時容器這個術語并不應從字面上簡單地理解為類,而是一層代替bean執行相應服務的接口。容器開發商提供運行在EJB服務器中一套完成這些功能的工具和接口。
  這些服務包括:
  
  ·與二級存儲中交換(對會話bean)
  ·持久性治理(對實體bean)
  ·實現創建和查找服務的home object的可用性
  ·在可通過JNDI訪問的名字空間home object的可視性
  ·正確的創建、初始化和刪除bean
  ·保證商業方法正確地運行在事務上下文中
  ·實現某一基本的安全服務
  ·從home object和EJBObject上的RMI上產生stub和skeleton
  
  容器和EJBObject對規范經常引用由容器或EJBObject提供的服務。這些服務只是用來說明而不暗示非凡類的服務需求。支持enterprise bean的EJBObject和容器類都由容器開發商提供。這些類必須完成bean容器的功能。對bean來說容器和EJBObject是不同的入口點,對某個非凡的服務提供支持獨特的能力。例如,容器通過讀部署描述符來知道應用于bean方法的事務屬性。然而,這些商業方法通過EJBObject調用。
  EJBObject必須與容器通訊來確定調用商業方法的事務上下文。確定以后,EJBObject在調用商業方法以前建立事務上下文。重要的是EJBObject 和容器的協同工作來實現容器所需的事務。容器廠商提供二者的實現,但對二者的功能分割卻是自由的。與home接口的關系
  目前廠商提供工具來讀home 接口并產生作為容器的home object.在這種情況下廠商對每個enterprise bean類使用不同的容器類。容器廠商可以使用其它的實現策略,如一個容器類實現多個home接口,甚至一個標準的容器類創建獨立的home object實現。唯一的必要條件是容器廠商必須使客戶端能通過JNDI訪問home object. 客戶端和bean開發者都不需關心容器和home object的實現細節。
  
  Enterprise JavaBean
  
  Enterprise bean是開發者編寫的提供給用程序功能的類。開發者可以選擇創建會話bean或實體bean,通過實現不同的接口聲明其部署描述符來加以區分。
  對于會話bean:
  public class myBean implements javax.ejb.sessionBean …
  對于實體bean:
  public class myBean implements javax.ejb.EntityBean …
  客戶端不會直接訪問enterprise bean中的任何方法??蛻舳送ㄟ^EJBObject 間接調用bean中的方法,EJBObject就象一個代理一樣。在把調用通過EJBObject傳遞時,容器開發商通過包裝編碼插入其自己的功能,這稱為方法插入。方法插入的一個例子是為每個方法調用創建一個新的事務上下文,當方法返回到EJBObject時提交或回滾事務。
  當容器廠商的工具在安裝bean產生stub和skeleton時,它產生bean的EJBObject一個stub和skeleton.實際上它并不創建bean本身的stub和skeleton,因為bean不會通過網絡被訪問。EJBObject是真正的網絡對象。Bean 是包含應用相關的商業編碼的代表。
  容器也可以調用bean中的某個方法。例如,容器保證當一個bean 實例生成后,home object中的create()的任何參數會傳遞bean相應的ejbCreate()方法。 Enterprise bean還有其它的接口和要求。然而,會話bean和實體bean的要求是不同的。這些在隨后詳述會話和實體bean的章節中會cover.
  
  Remote Interface
  
  編寫完enterprise bean后開發者創建了一個客戶端可訪問創建方法的home interface,在home interface中每一個create()方法在相應的bean中都必須有一個ejbcreate()方法。同樣,開發者必須創建描述客戶端能夠訪問的商業方法的remote interface。
  因為所有的客戶端調用都通過EJBObject,因此實現這個接口的是EJBObject而不是home object. Remote interface中列出的方法名和signature必須和實現bean的方法名和signature相同。這不同于home interface--方法signature是一樣的,而名字卻不同。以下是一個remote interface的例子:
  
  public interface Account extends javax.ejb.EJBObject {
  public void deposit(double amount) throws RemoteException;
  public void withdraw(double amount) throws RemoteException;
  public double balance() throws RemoteException;
  }
  
  所有聲明的方法都必須拋出一個RemoteException例外,因為規范要求客戶端stub是RMI兼容的。但這并不意味著排除了用其它的傳輸方式的stub/skeleton實現,如CORBA/IIOP.
  Remote interface繼續javax.ejb.EJBObject接口,增加了額外的方法要求。
  
  EJBObject
  EJBObject是網絡上可視的對象,包含stub和skeleton,作為bean的代理。Bean的remote interface繼續了EJBObject接口,而EJBObject類實現這個remote interface,使得bean類有自己的EJBObject類。對每個bean類有一個定制的EJBObject類。
  如下是EJBObject接口的定義,被bean的remote interface繼續:
  
  public interface javax.ejb.EJBObject extends java.rmi.Remote {
  public EJBHome getEJBHome() throws RemoteException;
  public Object getPrimaryKey() throws RemoteException;
  public Handle getHandle() throws RemoteException;
  public void remove() throws RemoteException,RemoveException;
  public boolean isIdentical(EJBObject other) throws RemoteException;
  }
  
  實現這個接口的EJBObject類是一個RMI服務器對象,因為它是他實現了一個RMI remote interface.注重bean本身不是一個remote object,在網絡上是不可視的。當容器實例化了這個EJBObject類時,容器會初始化bean實例的引用,使得它能正確地delegate商業方法調用。
  廠商的實現是維護EJBObject實例和bean實例的一對一關系。因為remote interface包含EJBObject接口的方法,所以bean不必顯式地實現這個接口,雖然它提供了列出的商業方法的實現。因為EJBObject必須正式地實現bean的remote interface,容器在bean安裝時產生EJBObject的源代碼,這些產生的源代碼實現了bean的remote interface.典型的EJBObject有一個獨特的類名,作為EJBObject類和bean的聯系。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美不卡视频一区发布| 国产精自产拍久久久久久蜜| 欧美性xxxxxxx| 国内精品久久影院| 成人av资源在线播放| 欧美日韩国产123| 久久综合国产精品台湾中文娱乐网| 亚洲精品国精品久久99热一| 57pao国产成人免费| 欧美精品日韩三级| 欧美激情按摩在线| 国产精品视频专区| 日韩在线播放一区| 亚洲电影免费观看高清| 两个人的视频www国产精品| 欧美黑人一区二区三区| 亚洲自拍另类欧美丝袜| 国产性猛交xxxx免费看久久| 91美女高潮出水| 亚洲视频999| 日韩精品中文字幕有码专区| 97av在线视频免费播放| 欧美激情a在线| 91av在线影院| 欧美精品日韩三级| 亚洲国产精品成人精品| 亚洲精品欧美日韩专区| 激情久久av一区av二区av三区| 26uuu久久噜噜噜噜| 国产精品久久国产精品99gif| 91久久国产综合久久91精品网站| 亚洲人成网站色ww在线| 日韩毛片在线观看| 尤物99国产成人精品视频| 日韩免费观看网站| 这里只有精品丝袜| 欧洲中文字幕国产精品| 欧美日韩成人网| 亚洲国产一区二区三区在线观看| 国产精品精品久久久久久| 中文字幕亚洲欧美| 91牛牛免费视频| 欧美成人激情图片网| 美女黄色丝袜一区| 亚洲一区av在线播放| 国产精品永久在线| 亚洲免费一在线| 欧美日韩中文在线| 97欧美精品一区二区三区| 亚洲一区二区三区视频播放| 日韩av第一页| 久久偷看各类女兵18女厕嘘嘘| 欧美综合在线第二页| 日韩精品视频在线| 欧美黑人性视频| 国产美女91呻吟求| 欧美最猛性xxxxx免费| 欧美激情免费在线| 亚洲四色影视在线观看| 68精品久久久久久欧美| 亚洲摸下面视频| 欧美韩国理论所午夜片917电影| 夜夜嗨av一区二区三区免费区| 国产亚洲欧美日韩精品| 97涩涩爰在线观看亚洲| 国产精品久久在线观看| 日韩激情第一页| 日韩中文综合网| 伊人久久久久久久久久久| 欧美日韩福利在线观看| 亚洲欧洲日韩国产| 欧美精品激情视频| 国产精品国产自产拍高清av水多| 国产精品一区二区久久国产| 日韩在线视频观看正片免费网站| 亚洲激情国产精品| 欧美大片欧美激情性色a∨久久| 国产香蕉一区二区三区在线视频| 疯狂蹂躏欧美一区二区精品| 国产综合在线视频| 久久久久一本一区二区青青蜜月| 操人视频在线观看欧美| 亚洲欧美另类在线观看| 欧美大片在线免费观看| 国内精品久久久久久久久| 国产精品久久久久av免费| 欧美性极品xxxx做受| 欧美疯狂性受xxxxx另类| 亚洲欧美日韩综合| 精品在线欧美视频| 成人写真视频福利网| 国产69精品久久久久9| 久久亚洲精品小早川怜子66| 久久91精品国产| 欧美大人香蕉在线| 国产99久久精品一区二区 夜夜躁日日躁| 国产精品福利久久久| 中文字幕亚洲一区| 在线观看视频99| 日韩中文在线中文网在线观看| 欧美精品手机在线| 久久精品福利视频| 久久精品国产久精国产一老狼| 欧美日韩裸体免费视频| 亚洲精品美女久久久久| 国产精品久久久久免费a∨大胸| www.国产一区| 欧美成人亚洲成人日韩成人| 亚洲**2019国产| 中文字幕av一区二区| 成人精品网站在线观看| 91av视频在线播放| 欧美精品激情在线| 日韩电影免费观看在线| 清纯唯美日韩制服另类| 欧美色播在线播放| 精品久久久视频| 亚洲www视频| 国产精品亚洲аv天堂网| 亚洲а∨天堂久久精品喷水| 亚洲欧美日韩在线高清直播| 日韩黄在线观看| 久久久999精品视频| 美女久久久久久久久久久| 国产亚洲综合久久| 亚洲成人国产精品| 日韩男女性生活视频| 成人免费视频在线观看超级碰| 久久伊人精品视频| 日韩一区二区三区xxxx| 国产不卡av在线| 国产精品久久久av久久久| 97精品伊人久久久大香线蕉| 成人观看高清在线观看免费| 日本国产一区二区三区| 国自产精品手机在线观看视频| 国产精品美女主播在线观看纯欲| 亚洲色图狂野欧美| 欧美性极品xxxx做受| 日本不卡免费高清视频| 成人国产亚洲精品a区天堂华泰| 中文字幕欧美日韩精品| 视频一区视频二区国产精品| 亚洲全黄一级网站| 5278欧美一区二区三区| 国产大片精品免费永久看nba| 亚洲激情 国产| 久久69精品久久久久久国产越南| 久久精品视频99| 全亚洲最色的网站在线观看| 久久国产精品久久国产精品| 欧美性猛交xxxx久久久| 色综合视频一区中文字幕| 日韩在线视频免费观看| 国产美女91呻吟求| 久久久久久一区二区三区| 色哟哟亚洲精品一区二区| 成人a在线视频| 91丝袜美腿美女视频网站| 国产成人精品在线视频| 日韩有码在线播放| 亚洲国产欧美在线成人app| 2019中文字幕免费视频| 日韩在线资源网|