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

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

EJB入門文章

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

  一.EnterPRise Beans
  在EJB(Enterprise java Beans)中定義了兩種不同類別的Enterprise Bean :
  *會話 Bean (session Bean)
  *實體Bean (Entity Bean)
  
  1. 會話 Bean (Session Bean)
  會話 Bean 是調用它的客戶端代碼要完成的工作。當客戶端與服務器建立聯系,那么一個會話 Bean 就建立起來了。根據會話 Bean 的狀態不同有分為:
  A. 狀態會話 Bean (Stateful Session Bean)
  B. 無狀態會話 Bean (Stateless Session Bean)
  1.1 狀態會話 Bean (Stateful Session Bean)
  當客戶機和服務器建立連接之后,狀態會話 Bean (Stateful Session Bean) 將一直在客戶機和服務器之間保持著用戶的某個狀態。例如:用戶使用銀行的ATM時,經過驗證之后,用戶可以連續執行多次操作,在這個過程當中,用戶的合法狀態將一直被保留,直到她將信用卡取出,結束這次操作。這時,狀態會話 Bean (Stateful Session Bean) 也就被銷毀。
  1.2無狀態會話 Bean (Stateless Session Bean)
  當客戶機和服務器建立連接之后,無狀態會話 Bean (Stateless Session Bean)處理單一的用戶請求或商務過程。無狀態會話 Bean (Stateless Session Bean)不需要從以前的請求中提取任何狀態。例如,用戶的用戶密碼確認。用戶輸入密碼后,發送請求。組件返回真或假來確認用戶,一旦過程完成,無狀態會話 Bean (Stateless Session Bean) 也宣告結束。
  2. 實體Bean (Entity Bean)
  實體Bean (Entity Bean)只是數據模型,它不包括商務邏輯。實體Bean (Entity Bean)可以將關系/對象數據庫的數據映射到內存中供其它組件使用。實體Bean (Entity Bean)是一直存在的,而且具有很高的容錯性能。實體Bean (Entity Bean)能供答應多用戶同時訪問。
  
  二. 會話 Bean (Session Bean)
  Ejb的執行過程是被放在一個EJB容器中進行的,所以客戶端不會直接調用我們寫好的Enterprise Bean ,而是調用EJB容器生成的一個EJBObject (EJB對象)來實現。那么,我們在編寫服務器端的Enterprise Bean 時,就要考慮這點。既然客戶端不能直接訪問,就由EJBObject來代勞,所以在編寫服務器端時,就要編寫服務器端的一個接口(Remote)用來與客戶機聯系,實力化EJBObject。要生成EJBObject 就要調有Home 接口,來建立這個實力。
  
  以下是會話 Bean 的代碼分析:
  A.Enterprise Bean 類:sailorsy.class
  1.setSessionContext(SessionContext ctx)方法
  它是EJB容器和Enterprise Bean互相作用的關口。
  
  import java.rmi.*;
  import javax.ejb.*;
  public class sailorsy implements SessionBean{
  private SessionContext ctx=null;
  public voic setSessionContext(SessionContext ctx){
  this.ctx=ctx;
  }//setSessionContext
  }//class sailorsy
  
  2.ejbCreate(…)方法
  它可以初始化Enterprise Bean ,可以定義不同的ejbCreate(…)方法,每個方法所帶的參數不同。但是,必許要存在至少一種。
  
   import java.rmi.*;
   import javax.ejb.*;
  public class sailorsy implements SessionBean{
  private SessionContext ctx=null;
  public voic setSessionContext(SessionContext ctx){
  this.ctx=ctx;
  }//setSessionContext
      public void ejbCreate() {
      }//ejbCreate
  }//class sailorsy
  
  3.ejbPassivate()方法
  假如初始化的Enterprise Bean 過多,EJB容器將其中的一些掛起(passivate),釋放他們所占用的空間。
  
   import java.rmi.*;
   import javax.ejb.*;
  public class sailorsy implements SessionBean{
  private SessionContext ctx=null;
  
  public voic setSessionContext(SessionContext ctx){
  this.ctx=ctx;
  }//setSessionContext
  
      public void ejbCreate() {
      }//ejbCreate
      public void ejbPassivate() {
      }//ejbPassivate
  
  }//class sailorsy
  
  4.ejbActivate()方法
  和ejbPassivate正好相反,它將被掛起的Bean從新調回。
  
  import java.rmi.*;
   import javax.ejb.*;
  public class sailorsy implements SessionBean{
  private SessionContext ctx=null;
  
  public voic setSessionContext(SessionContext ctx){
  this.ctx=ctx;
  }//setSessionContext
  
      public void ejbCreate() {
      }//ejbCreate
      public void ejbPassivate() {
      }//ejbPassivate
      
      public void ejbActivate() {
      }//ejbActivate
  
  }//class sailorsy
  
  5.ejbRemove()方法
  它可以清除EJB容器中的Bean。
  
   import java.rmi.*;
   import javax.ejb.*;
  public class sailorsy implements SessionBean{
  private SessionContext ctx=null;
  
  public voic setSessionContext(SessionContext ctx){
  this.ctx=ctx;
  }//setSessionContext
  
      public void ejbCreate() {
      }//ejbCreate
  
      public void ejbPassivate() {
      }//ejbPassivate
      
      public void ejbActivate() {
      }//ejbActivate
  
      public void ejbRemove() {
      }//ejbRemove
     
       public String showname(){
       return "Hello,my name is sailorsy";
      }//自己的商務方法
  }//class sailorsy
  
  以上這些是EJB必需的回調方法,我們可以在里面加入自己的方法,加入自己的商務邏輯。
  B.Home 接口: sailorsyHome
  
    import java.rmi.*;
  import javax.ejb.*;
  
  public interface sailorsyHome extends EJBHome {
   public sailorsyRemote create() throws RemoteException, CreateException;
  }
  
  C. Remote接口:sailorsyRemote
  import java.rmi.*;
  import javax.ejb.*;
  
  public interface sailorsyRemote extends EJBObject {
   public java.lang.String showname() throws RemoteException;
  }
  
  三.調用會話 Bean:sailorsyTestClient1
   [code]    import javax.naming.*;
  import javax.ejb.*;
  import javax.rmi.PortableRemoteObject;
  import java.rmi.*;
  
  public class sailorsyTestClient1 {
   private sailorsyHome sailorsyHomeObject = null;
  
   //ConstrUCt the EJB test client
   public sailorsyTestClient1() {
    try {
     //以下是客戶端使用JNDI定位Home對象。
     Context ctx = new InitialContext();
  
     //look up jndi name
     Object ref = ctx.lookup("sailorsy");
  
     //cast to Home interface
     sailorsyHomeObject = (sailorsyHome) PortableRemoteObject.narrow(ref, sailorsyHome.class);
  
    }
    catch(Exception e) {
     e.printStackTrace();
    }
   }
  
   //----------------------------------------------------------------------------
   // Utility Methods
   //----------------------------------------------------------------------------
  
   public sailorsyHome getHome() {
    return sailorsyHomeObject;
   }
   //Main method
  
   public static void main(String[] args) throws Exception{
    sailorsyTestClient1 client = new sailorsyTestClient1();
    sailorsyRemote sr=client.getHome() .create()
    String s=sr.showname()
    System.out.print(s);
    // Use the getHome() method of the client object to call Home interface
    // methods that will return a Remote interface reference. Then
    // use that Remote interface reference to access the EJB.
   }
  }[/code]
  
  以上的EJB在win2000+jbuilder5/jbuilder6+BAS4.5經過測試。
  
  以下是整個EJB的執行過程:
  1. 客戶端通過JNDI檢索Home對象的引用;
  2. JNDI返回Home對象的引用;
  3. 請求創建一個新的EJB對象;
  4. 創建EJB對象;
  5. 返回EJB對象;
  6. 調用商務方法;
  7. 調用Enterprise Bean.

上一篇:EJB設計模式1

下一篇:EJB設計模式4

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美国产高跟鞋裸体秀xxxhd| 91视频九色网站| 欧美精品在线播放| 亚洲国产精品va在看黑人| 日韩av在线网页| 激情亚洲一区二区三区四区| 久久99精品久久久久久琪琪| 国产精品电影在线观看| zzijzzij亚洲日本成熟少妇| 欧美极品美女电影一区| 97视频在线免费观看| 亚洲男人天天操| 欧美午夜片在线免费观看| 国产精品18久久久久久首页狼| 欧美怡春院一区二区三区| 亚洲偷欧美偷国内偷| 亚洲成人黄色在线| 国产一区在线播放| 久久九九亚洲综合| 九九精品在线视频| 欧美日韩精品二区| 欧美大片免费观看在线观看网站推荐| 午夜精品久久久久久99热| 欧美成人午夜视频| 97久久久免费福利网址| 欧美一区视频在线| 国产欧美日韩精品专区| 国产精品福利在线观看| 亚洲va码欧洲m码| 午夜精品久久久久久99热软件| 精品国产成人在线| 粉嫩老牛aⅴ一区二区三区| 国产精品福利网| 欧美激情一区二区三区久久久| 中文在线资源观看视频网站免费不卡| 亚洲精品91美女久久久久久久| 2019中文字幕在线免费观看| 一本色道久久88综合日韩精品| 在线亚洲国产精品网| 国产精品2018| 成人国产精品久久久久久亚洲| 国产精品美女久久久免费| 国产精品私拍pans大尺度在线| 亚洲国产精品大全| 日韩视频在线免费观看| 国产精品日韩欧美| 欧美性20hd另类| 亚洲欧美国产精品久久久久久久| 亚洲国产精品va在看黑人| 日韩精品免费综合视频在线播放| 精品无人区太爽高潮在线播放| 亚洲高清一二三区| 国产精品∨欧美精品v日韩精品| 欧美激情一级精品国产| 日韩理论片久久| 91中文字幕一区| 欧美尤物巨大精品爽| 欧美疯狂做受xxxx高潮| 国产日韩欧美电影在线观看| 午夜精品福利在线观看| 欧美性色19p| 91精品免费看| 亚洲欧美国内爽妇网| 日韩黄色在线免费观看| 欧美激情免费观看| 国产精品一香蕉国产线看观看| 成人精品视频在线| 成人做爰www免费看视频网站| 欧美电影在线观看高清| 亚洲精品欧美极品| 久久精品人人做人人爽| 伊人伊成久久人综合网站| 91在线观看免费高清完整版在线观看| 欧美xxxwww| 久久99久久久久久久噜噜| 国内精品久久久久影院 日本资源| 国产日韩欧美视频在线| 成人黄色网免费| 欧美日韩亚洲一区二| 亚洲欧美综合区自拍另类| 国产精品久久久久7777婷婷| 久久久久99精品久久久久| 亚洲人成毛片在线播放| 91精品久久久久| 亚洲免费伊人电影在线观看av| 欧美乱妇高清无乱码| 欧美午夜精品久久久久久人妖| 成人免费视频a| 中文字幕日韩在线播放| 亚洲片在线观看| 亚洲免费影视第一页| 久久久国产视频91| 日本一区二区三区在线播放| 色香阁99久久精品久久久| 日韩a**站在线观看| 中文字幕在线看视频国产欧美在线看完整| 91啪国产在线| 亚洲男人天堂2024| 欧美午夜片在线免费观看| 一区二区欧美日韩视频| 国产香蕉97碰碰久久人人| 日本高清不卡的在线| 久久精品国产69国产精品亚洲| 色吧影院999| 欧美精品激情blacked18| 日本精品一区二区三区在线| 欧美电影免费观看高清| 操日韩av在线电影| 91久久久久久久久久久| 亚洲欧洲高清在线| 日韩精品福利在线| 欧美另类99xxxxx| 国产高清视频一区三区| 国产精品国产自产拍高清av水多| 欧美精品在线网站| 777777777亚洲妇女| 欧美一级电影在线| 国产美女精彩久久| 亚洲黄色www| 国产精品久在线观看| 亚洲激情在线观看| 中文字幕欧美日韩在线| 日韩欧美在线网址| 亚洲欧美中文另类| 最新国产精品亚洲| 久久久久久高潮国产精品视| 欧美大片免费观看| 国产精品久久久久高潮| 97国产精品视频人人做人人爱| 日韩小视频网址| 欧美激情视频一区二区三区不卡| 欧美激情性做爰免费视频| 成人免费直播live| 亚洲欧美资源在线| 欧美精品18videos性欧美| 国产一区二区三区四区福利| 日韩小视频在线观看| 欧美成人精品xxx| 国产日韩中文字幕在线| 日韩中文字幕在线观看| 国产精品久久97| 丝袜美腿精品国产二区| 国产成人精品久久二区二区91| 九九热精品视频在线播放| 日韩欧美国产网站| 亚洲精品动漫100p| 久久偷看各类女兵18女厕嘘嘘| 国产精品一区二区三区在线播放| 久久男人av资源网站| 日本精品久久电影| 伊人亚洲福利一区二区三区| 亚洲白拍色综合图区| 亚洲精品欧美一区二区三区| 久久久av网站| 91av视频在线免费观看| 一区二区三区四区视频| 亚洲日本中文字幕| 在线观看欧美成人| 精品美女久久久久久免费| 97色在线播放视频| 中文字幕日韩综合av| 久久久这里只有精品视频| 亚洲色图五月天| 国产精品久久久|