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

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

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

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

  無狀態會話beans基礎
  無狀態會話beans是可以模擬業務過程的組件,它可以在單獨的方法調用中被執行。Stateless session beans不能夠維持一個調用客戶的狀態,在一個方法調用中,Stateless Session beans 可以維持調用客戶的狀態,當方法執行完,狀態不會被保持。在調用完成后,Stateless Session beans被立即釋放到緩沖池中,所以Stateless Session beans具有很好的伸縮性,可以支持大量用戶的調用。
  
  無狀態會話beans的特點
  1. 沒有對話狀態
  2. 無狀態會話beans可以擁有內部狀態,它們的狀態不能為非凡的客戶端定制。這意味著所有的無狀態beans對于客戶端是無差別的,客戶端也不能分離它們。客戶端必須將所有的必需的客戶端數據作為業務邏輯方法的參數傳給無狀態beans,無狀態beans可以從外部資源(例如數據庫)獲得所需的數據。
  3. 初始化無狀態beans只有一種方法,我們知道會話beans的初始化調用ejbCreate()方法,因為無狀態會話beans不能夠在方法調用之間保留狀態,因此它也不能在客戶端給ejbCreate()調用傳遞數據以后保留狀態。調用不帶參數的ejbCreate()或create()。
  4. 容器可以聚集和重用無狀態會話beans。
  
  
  構建“Hello,World!”遠程接口
  package com.wiley.compBooks.roman.session.helloworld;
  import javax.ejb.*;
  import java.rmi.RemoteException;
  import java.rmi.Remote;
  /**
  * This is the Hellobeans remote interface.
  *
  * This interface is what clients Operate on when
  * they interact with EJB objects. The container
  * vendor will implement this interface; the
  * implemented object is the EJB object, which
  * delegates invocations to the actual beans.
  */
  public interface Hello extends EJBObject {
  /**
  * The one method - hello - returns a greeting to the client.
  */
  public String hello() throws java.rmi.RemoteException;
  }
  Source 4.1 Hello.java.
  
  Hello接口繼續了EJBObject接口,EJBObject繼續Remote接口,因此hello可以拋出rmi異常。 下面建立beans,實現業務方法:hello()。 他實現了javax.ejb.Sessionbeans接口:
  
  package com.wiley.compBooks.roman.session.helloworld;
  import javax.ejb.*;
  /**
  * Demonstration stateless session beans.
  */
  public class Hellobeans implements Sessionbeans {
  //
  // EJB-required methods
  //
  public void ejbCreate() {
  System.out.  }
  public void ejbRemove() {
  System.out.println("ejbRemove()");
  }
  public void ejbActivate() {
  System.out.println("ejbActivate()");
  }
  public void ejbPassivate() {
  System.out.println("ejbPassivate()");
  }
  public void setSessionContext(SessionContext ctx) {
  System.out.println("setSessionContext()");
  }
  //
  // Business methods
  //
  public String hello() {
  System.out.println("hello()");
  return "Hello, World!";
  }
  }
  Source 4.2 Hellobeans.java
  
  注重:不需要實現自己的遠程接口,初始化方法不帶參數。破壞beans時,使用比較簡單的ejbRemove()方法。ejbActivate()和ejbPassivate()方法不需應用在無狀態會話beans,因此,這兩個方法為空。建立“Hello,World!”Home接口:
  
  Home接口繼續了javax.ejb.EJBHome。Home接口為EJB對象擴展了一個不帶參數的方法create()方法。
  
  package com.wiley.compBooks.roman.session.helloworld;
  import javax.ejb.*;
  import java.rmi.RemoteException;
  /**
  * This is the home interface for Hellobeans. This interface
  * is implemented by the EJB Server′s glue-code tools - the
  * implemented object is called the Home Object and serves
  * as a factory for EJB Objects.
  *
  * One create() method is in this Home Interface, which
  * corresponds to the ejbCreate() method in Hellobeans.
  */
  public interface HelloHome extends EJBHome {
  /*
  * This method creates the EJB Object.
  *
  * @return The newly created EJB Object.
  */
  Hello create() throws RemoteException, CreateException;
  }
  creat方法拋出了a java.rmi.RemoteException和aavax.ejb.CreateException.異常。
  
  寫配置描述符
  在EJB1.0中,配置描述符是作為文件存儲在磁盤上的java對象。在EJB1.1種,配置描述符是一個
xml文檔。EJB容器或IDE環境應該提供生成配置描述符的工具。
  配置描述符的設置
  beans home的名字
  企業級beans類名
  home接口類名
  遠程接口類名
  Re-entrant
  狀態或無狀態
  會話時間
  Hellobeans的配置描述符
  環境屬性
  beans通過使用此信息來適應不同的非凡環境。
  Ejb-jar文件
  我們需要將我們所需要的文件打包成Ejb-jar文件。
  企業級的beans
  遠程接口
  home接口
  配置描述符,包括屬性
  以上這些必須被包含進Ejb-jar文件。在EJB1.0中,jar文件理有一個文本文件的列表。它表示jar的具體信息。它用來鑒別哪個企業beans在Ejb-jar文件。在EJB1.1中,XML文件包含了所有的必要信息。 生成Ejb-jar文件
  jar cmf ../manifest HelloWorld.jar *
  配置beans
  
  最后,我們還需要在Ejb容器中配置beans。經常執行一下步驟:
  Ejb-jar文件的檢驗
  容器工具來產生EJB對象和home對象
  容器工具來生成RMI所需的stubs和skeletons
  寫無狀態beans的客戶代碼:
  
  package com.wiley.compBooks.roman.session.helloworld;
  import javax.ejb.*;
  import javax.naming.*;
  import java.rmi.*;
  import java.util.Properties;
  /**
  * This class is an example of client code that invokes
  * methods on a simple stateless session beans.
  */
  public class HelloClient {
  public static void main(String[] args) {
  try {
  /*
  * Get System properties for JNDI initialization
  */
  Properties props = System.getProperties();
  /*
  * Form an initial context
  */
  Context ctx = new InitialContext(props);
  /*
  * Get a reference to the home object
  * (the factory for EJB objects)
  */
  HelloHome home = (HelloHome) ctx.lookup("HelloHome");
  /*
  * Use the factory to create the EJB Object
  */
  Hello hello = home.create();
  /*
  * Call the hello() method, and print it
  */
  System.out.println(hello.hello());
  /*
  * Done with EJB Object, so remove it
  */
  hello.remove();
  } catch (Exception e) {
  e.printStackTrace();
  }
  }
  }
  
  客戶端代碼執行了一下任務:
  
  定位home接口
  
  使用home接口建立EJB對象
  
  調用EJB對象上的hello()
  
  移走EJB對象
  
  運行
  
  首先運行應用服務器。對于BEA的WebLogic,執行:
  
  t3server
  
  客戶端執行:
  
  java -Djava.naming.factory.initial=
  weblogic.jndi.TengahInitialContextFactory
  -Djava.naming.provider.url=
  t3://localhost:7001
  com.wiley.compBooks.roman.session.helloworld.HelloClient
  
  服務端輸出:
  
  setSessionContext()
  ejbCreate()
  hello()
  ejbRemove()
  
  客戶端輸出:
  
  Hello, World!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品视频久久久久久| 欧美巨大黑人极品精男| 精品福利在线视频| 国产精品户外野外| 成人黄色激情网| 影音先锋日韩有码| 成人激情视频在线观看| 5278欧美一区二区三区| 亚洲第一精品久久忘忧草社区| 热久久这里只有精品| 亚洲男子天堂网| 亚洲国产欧美久久| 成人黄色片网站| 国产精品揄拍一区二区| 欧美日韩在线观看视频小说| 日日狠狠久久偷偷四色综合免费| 亚洲国产欧美一区| 爽爽爽爽爽爽爽成人免费观看| 国产精品久久精品| 性欧美xxxx| 国产三级精品网站| 亚洲精品乱码久久久久久金桔影视| 久久久成人av| 中文字幕av日韩| 亚洲理论电影网| 日韩av手机在线观看| 久久99久久99精品免观看粉嫩| 久久免费国产精品1| 亚洲美女视频网站| 欧美一级淫片aaaaaaa视频| 日韩一区二区欧美| 97香蕉久久超级碰碰高清版| 91精品久久久久久久久青青| 欧美麻豆久久久久久中文| 亚洲а∨天堂久久精品喷水| 久久精品久久久久久国产 免费| 久久6免费高清热精品| 视频在线观看一区二区| 久久久国产精品视频| 久久露脸国产精品| 国产91色在线|免| 亚洲四色影视在线观看| 成人欧美在线视频| 国产区精品在线观看| 欧美亚洲在线观看| 亚洲美腿欧美激情另类| 中文字幕一区日韩电影| 欧美精品福利视频| 97香蕉超级碰碰久久免费的优势| 精品一区电影国产| 亚洲精品电影久久久| 69av成年福利视频| 日韩av有码在线| 日韩精品在线看| 亚洲偷欧美偷国内偷| 欧美伊久线香蕉线新在线| 亚洲欧美一区二区精品久久久| 亚洲国产一区二区三区在线观看| 亚洲欧美激情精品一区二区| 亚洲国产精品久久精品怡红院| 中文字幕一精品亚洲无线一区| 亚洲综合色激情五月| 欧美高清视频在线| 国产精品成久久久久三级| 精品人伦一区二区三区蜜桃网站| 777国产偷窥盗摄精品视频| 久久视频在线观看免费| 亚洲欧美成人网| 国产精品久久久久av免费| 国产精品视频播放| 亚洲天堂视频在线观看| 亚洲最大成人在线| 欧美午夜宅男影院在线观看| 亚洲第一国产精品| 日本不卡免费高清视频| 国产亚洲免费的视频看| 日韩影视在线观看| 欧美精品在线免费观看| 国产成人一区二| www.亚洲免费视频| 久久精品这里热有精品| 久久免费精品日本久久中文字幕| 尤物精品国产第一福利三区| 亚洲精品视频网上网址在线观看| 国产精品欧美亚洲777777| 91免费国产视频| 国产一区二区日韩| 久久高清视频免费| 亚洲成人av在线| 欧美一区二区三区免费观看| 在线电影av不卡网址| 伊人精品在线观看| 日韩欧美国产黄色| 久久久久久久久亚洲| 欧美一级免费视频| 精品毛片三在线观看| 欧美专区国产专区| 中文字幕在线国产精品| 亚洲最大福利视频网站| 日韩视频永久免费观看| 久久久欧美精品| 精品自拍视频在线观看| 7777精品久久久久久| 国产有码一区二区| 夜夜嗨av一区二区三区四区| 国产精品久久久久久久久久久久| 久久久女人电视剧免费播放下载| 日韩精品视频三区| 国产亚洲精品一区二555| 国产在线日韩在线| 亚洲石原莉奈一区二区在线观看| 日韩美女视频在线观看| 久久成人综合视频| 亚洲女人天堂色在线7777| 午夜精品久久久久久久白皮肤| 欧美高清视频免费观看| 精品精品国产国产自在线| 欧美大胆a视频| 久久这里只有精品99| 国产精品www| 日韩精品一区二区视频| 欧美日韩在线视频一区二区| 亚洲最大av在线| 97视频在线观看视频免费视频| 亚洲精品影视在线观看| 国产精品综合久久久| 91日韩在线视频| 欧美夫妻性生活视频| 日韩精品有码在线观看| 日韩精品中文字幕视频在线| 日本精品久久久久影院| 日韩av电影在线网| 成人性生交大片免费看小说| 欧美一区二区三区精品电影| 国产精品视频精品视频| 亚洲精品suv精品一区二区| 色偷偷88888欧美精品久久久| 亚洲电影免费观看| 亚洲精品久久久久久久久久久| 欧洲美女7788成人免费视频| 国产精品久久久久久久久久免费| 欧美日韩国产精品一区二区不卡中文| 国产精品直播网红| 51久久精品夜色国产麻豆| 欧美黑人xxxx| 国产小视频91| 欧美在线影院在线视频| 日韩av电影手机在线| 亚洲最大成人在线| 色多多国产成人永久免费网站| 国产精品视频男人的天堂| 日韩av在线网站| 久久国产天堂福利天堂| 97国产精品免费视频| 国产成人精品免高潮费视频| 日韩欧美在线视频日韩欧美在线视频| 久久婷婷国产麻豆91天堂| 亚洲人成在线电影| 日韩av电影在线网| 日韩精品欧美国产精品忘忧草| 亚洲美女中文字幕| 国产丝袜一区二区| 欧美性xxxx| 国产精品成人免费视频|