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

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

CMP實體bean實戰開發

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

  一個容器治理持續的實體bean答應容器處理一些或者它的全部數據訪問邏輯。用容器治理的持續,你需要把實體bean類的一些域公開出來,好讓容器在代表bean執行數據庫操作時可以設置這些域。
  在容器治理持續化的情況下,entity bean類的代碼必須滿足以下條件。首先,類必須定義為public。此外,這個類還必須實現以下內容:
  1.EntityBean接口
  2.零個或多個ejbCreate方法及ejbPostCreate方法
  3.對應于持續化及關聯字段的定義它的get方法及set方法
  4.home方法
  5.business方法
  entity bean類不能實現以下方法:
  1、finder方法
  2、finalize方法
  一個訪問方法的命名以get或set開始,后面是首字母大寫的持續化及關聯字段。例如,對salary字段的訪問 方法是getSalary和setSalary。
  本示例描述一個簡單的CMP 實體bean使用實例,構建一個簡單的產品查詢應用,實例中包括的3個主要 文件:
  PRodUCt.java-------遠程接口文件
  ProductHome.java--------本地接口文件
  ProductBean.java--------Bean文件
  
  Product.java內容如下
  import javax.ejb.*;
  import java.rmi.RemoteException;
  
  /**
  定義了企業bean的公開商務方法.
  客戶端通過遠程接口和企業bean交互
  */
  public interface Product extends EJBObject {
  
  // 實體bean域的獲得器和設置器方法
  
  public String getName() throws RemoteException;
  public void setName(String name) throws RemoteException;
  public String getDescription() throws RemoteException;
  public void setDescription(String description) throws RemoteException;
  public double getBasePrice() throws RemoteException;
  public void setBasePrice(double price) throws RemoteException;
  public String getProductID() throws RemoteException;
  }
  
  ProductHome.java內容如下
  import javax.ejb.*;
  import java.rmi.RemoteException;
  import java.util.Enumeration;
  public interface ProductHome extends EJBHome {
  /*
  這個方法創建EJB對象
  請注重本地接口返回一個EJB對象,而Bean卻沒有返回值。這是因為EJB容器負責生成這個EJB對象,而Bean負責初始化。
  @參數productID :產品號 (唯一)
  @參數name:產品名t
  @參數description :產品的描述
  @參數basePrice Base:產品的基礎價格
  @返回新創建的EJB對象
  */
  public Product create(String productID, String name, String description, double basePrice) throws CreateException, RemoteException;
  
  public Product findByPrimaryKey(String productID) throws FinderException, RemoteException;
  //定位器方法,容器負責實現。
  }
  
  Productbean.java文件內容如下
  import java.sql.*;
  import javax.naming.*;
  import javax.ejb.*;
  import java.util.*;
  import java.rmi.RemoteException;
  /**
  容器治理持續性,一個產品的持續內容包括ID#,name,description和 baseprice
  */
  public class ProductBean implements EntityBean {
  
  protected EntityContext ctx;
  
  //容器治理的狀態域必須定義成public類型
  public String productID; // 主鍵
  public String name;
  public String description;
  public double basePrice;
  
  public ProductBean() {
  System.out.println("New Product Entity Bean Java Object created by EJB Container.");
  }
  public String getName() throws RemoteException {
  System.out.println("getName() called.");
  return name;
  }
  
  public void setName(String name) throws RemoteException {
  System.out.println("getName() called.");
  this.name = name;
  }
  
  public String getDescription() throws RemoteException {
  System.out.println("getDescription() called.");
  return description;
  }
  
  public void setDescription(String description) throws RemoteException {
  System.out.println("setDescription() called.");
  this.description = description;
  }
  
  public double getBasePrice() throws RemoteException {
  System.out.println("getBasePrice() called.");
  return basePrice;
  }
  
  public void setBasePrice(double price) throws RemoteException {
  System.out.println("setBasePrice() called.");
  this.basePrice = price;
  }
  
  public String getProductID() {
  System.out.println("getProductID() called.");
  return productID;
  }
  
  // EJB必需的方法
  // 由容器調用,執行時可獲得需要的資源
  public void ejbActivate() throws RemoteException {
  System.out.println("ejbActivate() called.");
  }
  
  /**
  * EJB 容器在它從數據庫中移除實體bean前調用這個方法。它和客戶端調用home.Remove()方法相對應。
  */
  public void ejbRemove() throws RemoteException {
  System.out.println("ejbRemove() called.");
  }
  
  public void ejbPassivate() throws RemoteException {
  System.out.println("ejbPassivate () called.");
  }
  
  public void ejbLoad() throws RemoteException {
  System.out.println("ejbLoad() called.");
  }
  
  public void ejbStore() throws RemoteException {
  System.out.println("ejbStore() called.");
  }
  
  public void setEntityContext(EntityContext ctx) throws RemoteException {
  System.out.println("setEntityContext called");
  this.ctx = ctx;
  }
  
  public void unsetEntityContext() throws RemoteException {
  System.out.println("unsetEntityContext called");
  this.ctx = null;
  }
  
  public String ejbCreate(String productID, String name, String description, double basePrice) throws CreateException, RemoteException {
  System.out.println("ejbCreate(" + productID + ", " + name + ", " + description + ", " + basePrice + ") called");
  
  this.productID = productID;
  this.name = name;
  this.description = description;
  this.basePrice = basePrice;
  return null;
  }
  
  public void ejbPostCreate(String productID, String name, String description, double basePrice) throws RemoteException {
  System.out.println("ejbPostCreate() called");
  }
  // 因為是容器治理的持續性,不需要定義finder方法。
  }
  將以上3個文件編譯成class文件得到Product.class ProductBean.class ProductHome.class
  部署BEAN文件
  預備工作:啟動j2ee服務器j2ee -verbose;啟動cloudscape數據庫服務器cloudscape -start。
  1. 打開部署工具deploytool,新建一個applicaton命名為Product,display name 也使用Product
  2. 給新建的application添加一個EnterPrise Bean,以下操作取默認值。
  
  
  
  
  
  
  
  3.添加建立的三個 class文件(Product.Class ProductHome.Class 和 ProductBean.Class)
  
  4.下一步選擇 bean類型Entity bean 設置Enterprise bean Class
  ProductBean,Enterprise bean name 為ProductBean,display name 默認。
  5.設置remote home interface 為ProductHome,remote interface 為Product
  6.下一步操作如下,選取定義的狀態域。將Primary key class 修改為java.lang.String。
  設置Primary key field name為productID。
  
  7.下面的按next跳過,最后單擊finish按鈕完成實體Bean 的創建過程.
  8.選中創建的ProductBean 在右側的工作欄中點擊Entity設置Deployment Setting.
  選中Database Setting ,Database jndi name ---jdbc/cloudscape
  user name :scott,passWord :tiger.
  9.生成默認得sql語句
  10.下面可以部署了點擊deploy,設置jndi name。
  
  11.點擊finish完成部署
  12.使用客戶端測試剛部署的CMP實體bean。
  客戶端Client.java
  import javax.ejb.*;
  import javax.naming.*;
  import java.rmi.*;
  import java.util.Enumeration;
  import java.util.Properties;
  public class Client {
  public static void main(String[] args) {
  ProductHome home = null;
  try { Properties props=System.getProperties();
  Context ctx=new InitialContext(props);
  home = (ProductHome) ctx.lookup("ProductHome");
  //創建幾個產品EJB對象
  home.create("123-456

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一级片在线播放| 韩国日本不卡在线| 91在线免费看网站| 亚洲国产精品久久91精品| 亚洲第一视频网| 久久国产精品亚洲| 国产不卡在线观看| 日韩国产高清视频在线| 亚洲第一精品福利| 欧美成人h版在线观看| 亚洲男人av电影| 色偷偷av一区二区三区乱| 亚洲天堂2020| 精品视频在线观看日韩| 55夜色66夜色国产精品视频| 亚洲高清久久网| 久久激情视频久久| 欧美性20hd另类| 亚洲欧美中文日韩v在线观看| 日韩av综合网| 97视频在线观看网址| 亚洲成色777777女色窝| 18久久久久久| 精品亚洲夜色av98在线观看| 亚洲欧洲在线免费| 日本精品久久久| 91精品免费久久久久久久久| 国产精品视频999| 中文字幕v亚洲ⅴv天堂| 九九精品视频在线观看| 两个人的视频www国产精品| 亚洲二区在线播放视频| 国产成人在线精品| 亚洲国产古装精品网站| 国产欧美日韩精品专区| 亚洲无av在线中文字幕| 亚洲国产日韩欧美综合久久| 亚洲精品国产免费| 日韩在线小视频| 欧美日韩一区免费| 日本人成精品视频在线| 日韩精品久久久久| 91精品一区二区| 久久久精品视频成人| 国产精品久久久久久av福利软件| 亚洲欧美日韩精品久久亚洲区| 亚洲最新av在线网站| 91av在线视频观看| 亚洲欧美中文日韩在线| 日韩电影中文字幕在线| 亚洲成**性毛茸茸| 国产精品一区二区久久| 国产成人小视频在线观看| 亚洲最大成人在线| 日韩中文字幕在线免费观看| 91精品久久久久久久久不口人| 国产精品1区2区在线观看| 欧美一级片久久久久久久| 国产精品普通话| 国产成人在线精品| 久久久女人电视剧免费播放下载| 欧美日韩美女在线| 精品久久久久久久久久ntr影视| 欧美日韩在线观看视频小说| 欧美成人精品在线播放| 欧美黄色成人网| 国产精品成人免费视频| 日韩欧美a级成人黄色| 国产精品∨欧美精品v日韩精品| 欧美视频国产精品| 国产一区二区三区网站| 日韩中文字幕在线视频| 日韩av高清不卡| 亚洲男人7777| 欧美日韩亚洲激情| 国产自产女人91一区在线观看| 国产精品成人一区二区三区吃奶| 国产精品第七十二页| 精品久久香蕉国产线看观看亚洲| 在线免费观看羞羞视频一区二区| 成人激情视频小说免费下载| 亚洲最大的成人网| 国产精品综合不卡av| 亚洲色图激情小说| 91在线视频一区| 日韩美女在线观看| 欧美贵妇videos办公室| 国产欧美va欧美va香蕉在| 91精品国产91久久| 欧美久久精品一级黑人c片| 好吊成人免视频| 精品福利在线视频| 久久久av网站| 欧美视频不卡中文| 国产精品久久久久久超碰| 亚洲成人aaa| 永久免费毛片在线播放不卡| 久久久久久久久久久亚洲| 日韩在线视频线视频免费网站| 日本欧美黄网站| 欧美视频二区36p| 日韩一区二区三区国产| 亚洲色图欧美制服丝袜另类第一页| 国产日产欧美精品| 亚洲美女动态图120秒| 日韩精品视频免费| 国产精品永久在线| 久久精品99久久久久久久久| 精品久久久久久久久久久久久久| 亚洲天堂av综合网| 精品国产91久久久久久老师| 亚洲电影免费观看高清完整版| 亚洲韩国日本中文字幕| 热门国产精品亚洲第一区在线| 欧美日韩一区二区免费在线观看| 亚洲欧洲一区二区三区在线观看| 久久综合色影院| 亚洲美女免费精品视频在线观看| 97视频在线观看免费高清完整版在线观看| 日韩av观看网址| 精品中文视频在线| 不卡中文字幕av| 久久国产精品久久久久久| 91亚洲精品在线观看| 91久久久国产精品| 国产亚洲福利一区| 成人性生交大片免费观看嘿嘿视频| 韩国v欧美v日本v亚洲| 91麻豆国产精品| 亚洲欧美日韩图片| 国产999精品视频| 欧美孕妇毛茸茸xxxx| 日韩精品视频免费专区在线播放| 性色av一区二区咪爱| 久久99精品久久久久久青青91| 国产精品久久久久影院日本| 91丝袜美腿美女视频网站| 国外成人在线视频| 日韩中文字幕av| 欧美国产欧美亚洲国产日韩mv天天看完整| 久久精品成人动漫| 91精品在线一区| 黑人巨大精品欧美一区二区一视频| 日本亚洲欧美三级| 麻豆国产va免费精品高清在线| 亚洲精品丝袜日韩| 在线观看久久久久久| 亚洲电影免费观看高清完整版在线| 91色中文字幕| 亚洲奶大毛多的老太婆| 久久久999精品视频| 亚洲人成自拍网站| 最近2019中文免费高清视频观看www99| 狠狠久久五月精品中文字幕| 国产ts一区二区| 在线看福利67194| 欧美日韩福利视频| 日韩av在线免播放器| 欧美性做爰毛片| 91av在线免费观看| 欧美夜福利tv在线| 精品久久久久久中文字幕| 久久中文字幕在线| 欧美xxxx14xxxxx性爽|