*會話 Bean (Session Bean)
  *實體Bean (Entity Bean)
  1. 會話 Bean (Session Bean)
  會話,江蘇會計證考試報名,2022年會計從業(yè)資格考試報名,2022年江蘇會計從業(yè)證報名,2022年江蘇會計從業(yè)考試報名,江蘇2022年會計從業(yè)資格考試成報名,2022年江蘇會計從業(yè)考試,會計電算化考試試題,2022年江蘇會計電算化,江蘇會計電算化試題,江蘇會計電算化考試,江蘇初級會計電算化,江蘇初級會計電算化考試">

射精一区欧美专区|国产精品66xx|亚洲视频一区导航|日韩欧美人妻精品中文|超碰婷婷xxnx|日韩无码综合激情|特级黄片一区二区|四虎日韩成人A√|久久精品内谢片|亚洲成a人无码电影

您現(xiàn)在的位置:首頁 > IT認證 > JAVA >

經驗之談:對EJB中SessionBean的見解


  一.Enterprise Beans

  在EJB(Enterprise Java Beans)中定義了兩種不同類別的Enterprise Bean :
  *會話 Bean (Session Bean)
  *實體Bean (Entity Bean)
  1. 會話 Bean (Session Bean)
  會話 Bean 是調用它的客戶端代碼要完成的工作。當客戶端與服務器建立聯(lián)系,那么一個會話 Bean 就建立起來了。根據(jù)會話 Bean 的狀態(tài)不同有分為:
  A. 狀態(tài)會話 Bean (Stateful Session Bean)
  B. 無狀態(tài)會話 Bean (Stateless Session Bean)
  1.1 狀態(tài)會話 Bean (Stateful Session Bean)
  當客戶機和服務器建立連接之后,狀態(tài)會話 Bean (Stateful Session Bean) 將一直在客戶機和服務器之間保持著用戶的某個狀態(tài)。例如:用戶使用銀行的ATM時,經過驗證之后,用戶可以連續(xù)執(zhí)行多次操作,在這個過程當中,用戶的合法狀態(tài)將一直被保留,直到她將信用卡取出,結束這次操作。這時,狀態(tài)會話 Bean (Stateful Session Bean) 也就被銷毀。
  1.2無狀態(tài)會話 Bean (Stateless Session Bean)
  當客戶機和服務器建立連接之后,無狀態(tài)會話 Bean (Stateless Session Bean)處理單一的用戶請求或商務過程。無狀態(tài)會話 Bean (Stateless Session Bean)不需要從以前的請求中提取任何狀態(tài)。例如,用戶的用戶密碼確認。用戶輸入密碼后,發(fā)送請求。組件返回真或假來確認用戶,一旦過程完成,無狀態(tài)會話 Bean (Stateless Session Bean) 也宣告結束。
  2. 實體Bean (Entity Bean)
  實體Bean (Entity Bean)只是數(shù)據(jù)模型,它不包括商務邏輯。實體Bean (Entity Bean)可以將關系/對象數(shù)據(jù)庫的數(shù)據(jù)映射到內存中供其它組件使用。實體Bean (Entity Bean)是一直存在的,而且具有很高的容錯性能。實體Bean (Entity Bean)能供允許多用戶同時訪問。

  二. 會話 Bean (Session Bean)

  Ejb的執(zhí)行過程是被放在一個EJB容器中進行的,所以客戶端不會直接調用我們寫好的Enterprise Bean ,而是調用EJB容器生成的一個EJBObject (EJB對象)來實現(xiàn)。那么,我們在編寫服務器端的Enterprise Bean 時,就要考慮這點。既然客戶端不能直接訪問,就由EJBObject來代勞,所以在編寫服務器端時,就要編寫服務器端的一個接口(Remote)用來與客戶機聯(lián)系,實力化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(…)方法,每個方法所帶的參數(shù)不同。但是,必許要存在至少一種。
  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

  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.
  }
  }
  以上的EJB在win2000+jbuilder5/jbuilder6+BAS4.5經過測試。

相關文章

無相關信息
更新時間2022-03-13 10:53:43【至頂部↑】
聯(lián)系我們 | 郵件: | 客服熱線電話:4008816886(QQ同號) | 

付款方式留言簿投訴中心網站糾錯二維碼手機版

客服電話: