<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    yanmin

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      16 隨筆 :: 1 文章 :: 9 評論 :: 0 Trackbacks
    最近狂多的面試,發(fā)現(xiàn)自己的基礎(chǔ)知識(shí)和理論都弱了很多,為了不誤人子弟,開始惡補(bǔ):

    一.Enterprise Beans
      在EJB(Enterprise Java Beans)中定義了兩種不同類別的Enterprise Bean :
      *會(huì)話 Bean (Session Bean)
      *實(shí)體Bean (Entity Bean)
      
      1. 會(huì)話 Bean (Session Bean)
      會(huì)話 Bean 是調(diào)用它的客戶端代碼要完成的工作。當(dāng)客戶端與服務(wù)器建立聯(lián)系,那么一個(gè)會(huì)話 Bean 就建立起來了。根據(jù)會(huì)話 Bean 的狀態(tài)不同有分為:
      A. 狀態(tài)會(huì)話 Bean (Stateful Session Bean)
      B. 無狀態(tài)會(huì)話 Bean (Stateless Session Bean)
      1.1 狀態(tài)會(huì)話 Bean (Stateful Session Bean)
      當(dāng)客戶機(jī)和服務(wù)器建立連接之后,狀態(tài)會(huì)話 Bean (Stateful Session Bean) 將一直在客戶機(jī)和服務(wù)器之間保持著用戶的某個(gè)狀態(tài)。例如:用戶使用銀行的ATM時(shí),經(jīng)過驗(yàn)證之后,用戶可以連續(xù)執(zhí)行多次操作,在這個(gè)過程當(dāng)中,用戶的合法狀態(tài)將一直被保留,直到她將信用卡取出,結(jié)束這次操作。這時(shí),狀態(tài)會(huì)話 Bean (Stateful Session Bean) 也就被銷毀。
      1.2無狀態(tài)會(huì)話 Bean (Stateless Session Bean)
      當(dāng)客戶機(jī)和服務(wù)器建立連接之后,無狀態(tài)會(huì)話 Bean (Stateless Session Bean)處理單一的用戶請求或商務(wù)過程。無狀態(tài)會(huì)話 Bean (Stateless Session Bean)不需要從以前的請求中提取任何狀態(tài)。例如,用戶的用戶密碼確認(rèn)。用戶輸入密碼后,發(fā)送請求。組件返回真或假來確認(rèn)用戶,一旦過程完成,無狀態(tài)會(huì)話 Bean (Stateless Session Bean) 也宣告結(jié)束。
      2. 實(shí)體Bean (Entity Bean)
      實(shí)體Bean (Entity Bean)只是數(shù)據(jù)模型,它不包括商務(wù)邏輯。實(shí)體Bean (Entity Bean)可以將關(guān)系/對象數(shù)據(jù)庫的數(shù)據(jù)映射到內(nèi)存中供其它組件使用。實(shí)體Bean (Entity Bean)是一直存在的,而且具有很高的容錯(cuò)性能。實(shí)體Bean (Entity Bean)能供允許多用戶同時(shí)訪問。
      
      二. 會(huì)話 Bean (Session Bean)
      Ejb的執(zhí)行過程是被放在一個(gè)EJB容器中進(jìn)行的,所以客戶端不會(huì)直接調(diào)用我們寫好的Enterprise Bean ,而是調(diào)用EJB容器生成的一個(gè)EJBObject (EJB對象)來實(shí)現(xiàn)。那么,我們在編寫服務(wù)器端的Enterprise Bean 時(shí),就要考慮這點(diǎn)。既然客戶端不能直接訪問,就由EJBObject來代勞,所以在編寫服務(wù)器端時(shí),就要編寫服務(wù)器端的一個(gè)接口(Remote)用來與客戶機(jī)聯(lián)系,實(shí)力化EJBObject。要生成EJBObject 就要調(diào)有Home 接口,來建立這個(gè)實(shí)力。
      
      以下是會(huì)話 Bean 的代碼分析:
      A.Enterprise Bean 類:sailorsy.class
      1.setSessionContext(SessionContext ctx)方法
      它是EJB容器和Enterprise Bean互相作用的關(guān)口。
      
      import java.rmi.*;
      import javax.ejb.*;
      public class sailorsy implements SessionBean{
      private SessionContext ctx=null;
      public voic setSessionContext(SessionContext ctx)//setSessionContext
      }//class sailorsy
      
      2.ejbCreate(…)方法
      它可以初始化Enterprise Bean ,可以定義不同的ejbCreate(…)方法,每個(gè)方法所帶的參數(shù)不同。但是,必許要存在至少一種。
      
       import java.rmi.*;
       import javax.ejb.*;
      public class sailorsy implements SessionBean{
      private SessionContext ctx=null;
      public voic setSessionContext(SessionContext 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)//setSessionContext
      
          public void ejbCreate() //ejbCreate
          public void ejbPassivate() //ejbPassivate
      
      }//class sailorsy
      
      4.ejbActivate()方法
      和ejbPassivate正好相反,它將被掛起的Bean從新調(diào)回。
      
      import java.rmi.*;
       import javax.ejb.*;
      public class sailorsy implements SessionBean{
      private SessionContext ctx=null;
      
      public voic setSessionContext(SessionContext 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)//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";
          }//自己的商務(wù)方法
      }//class sailorsy
      
      以上這些是EJB必需的回調(diào)方法,我們可以在里面加入自己的方法,加入自己的商務(wù)邏輯。
      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;
      }
      
      三.調(diào)用會(huì)話 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)
       }
      
       //----------------------------------------------------------------------------
       // 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經(jīng)過測試。
      
      以下是整個(gè)EJB的執(zhí)行過程:
      1. 客戶端通過JNDI檢索Home對象的引用;
      2. JNDI返回Home對象的引用;
      3. 請求創(chuàng)建一個(gè)新的EJB對象;
      4. 創(chuàng)建EJB對象;
      5. 返回EJB對象;
      6. 調(diào)用商務(wù)方法;
      7. 調(diào)用Enterprise Bean.
    posted on 2007-10-19 15:57 yanmin 閱讀(187) 評論(0)  編輯  收藏
    主站蜘蛛池模板: fc2成年免费共享视频18| 中文文字幕文字幕亚洲色| 无码毛片一区二区三区视频免费播放 | 国产无遮挡又黄又爽免费视频| 国产婷婷综合丁香亚洲欧洲| 免费可以看黄的视频s色| 亚洲国产日韩在线成人蜜芽 | 在线观看免费视频资源| 亚洲黄网在线观看| 久久天天躁狠狠躁夜夜免费观看| 亚洲日韩中文字幕| 在线视频免费观看www动漫| 国产亚洲一卡2卡3卡4卡新区| 国产午夜鲁丝片AV无码免费| 色妞www精品视频免费看| 久久久久亚洲AV综合波多野结衣| 大妹子影视剧在线观看全集免费| 亚洲成a人片在线观看无码 | 久久精品中文字幕免费| 2022年亚洲午夜一区二区福利| 丁香花免费高清视频完整版| 亚洲成a人无码亚洲成av无码| 亚洲国产成人五月综合网| 久久免费美女视频| 亚洲日日做天天做日日谢| 亚洲国产精品激情在线观看| 久久这里只精品热免费99| 亚洲一区中文字幕在线电影网 | 精品亚洲成AV人在线观看| 毛片免费观看视频| 国产精品偷伦视频免费观看了| 亚洲人成网站在线播放vr| 1000部禁片黄的免费看| 在线播放亚洲精品| 国产V亚洲V天堂无码| 在线观看人成视频免费| a毛片免费全部播放完整成| 一本色道久久88—综合亚洲精品| 亚洲国产成人久久一区久久| 亚洲一区二区免费视频| 无码AV动漫精品一区二区免费|