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

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

EJB應用開發的設計實例深入分析

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

  EJB技術是Sun公司發明的,從發明至今已經發布了3個版本的EJB規范,1.0,1.1,2.0。EJB 2.1版已經發布了被提義的最終草案
  
  EJB規范定義了組件開發者和EJB服務器廠商各自的職責。組件開發者根據EJB規范中定義的編程模型編寫EJB。遵循EJB規范的EJB在各個EJB服務器中都可以移植。這樣的一種編程模型給EJB開發者提供了很好的便利,EJB的產生背景是如何呢?
  
  EJB技術將TP monitors和distributed-component services中的優點吸收過來,同時把它們的缺點拋棄掉。TP monitors是一種運行用過程語言,比如COBOL、PL/1,編寫的應用程序可靠、功能強大的平臺,該平臺治理應用環境,比如事務性、安全性、資源治理、負載均衡、容錯等方面。
  
  所以這種平臺優勢給”mission-critical”企業級應用程序提供了很好的基礎架構。同時,TP monitors采用業界先進的3層體系結構,即由表示層、商業邏輯層和后端資源組成。distributed-component services提供了更為先進的3層體系結構,即把商業對象、組件放置在中間層,其他的進程可以通過其提供的romote PRoxies來訪問本身。
  
  分布式組件和負荷在傳統的TP monitors的基于過程的應用程序相比,其優點在于,它提供了更好的重用性和靈活性,因為它們可以將不同種類的商業對象集成起來,但這樣的組件很難編寫,同時缺少TP monitors所提供的健壯的基礎框架。假如能夠將兩者的優勢結合起來,便構成EJB出現的緣由。
  
  EJB服務器給distributed components提供了類似TP monitors的環境。EJB服務器中,類似TP monitors環境的給出減少了開發的復雜度、distributed components的給出使得開發者的開發效率大大提高。
  
  EJB客戶通過JNDI、java RMI-IIOP來訪問。這種客戶可能是Java應用程序、jsp(Servlets)、其他的EJB或者用其他語言寫的應用。
  
  設計實例的深入分析
  
  要求:
  
  本文假設讀者對EJB技術有一定熟悉,對SQL有一定了解就可以了。由于EJB涉及到的技術很多,盡管每次只講述一種技術,但各種技術是相關的,所以希望讀者諒解,因為這樣不是很好組織。
  
  實例背景
  
  數據庫: SQL Server 2000
  
  操作系統:?。譱ndows 2000
  
  開發工具; JBuilder 7
  
  EJB服務器:?。譭bLogic 7.0
  
  機器ip地址,10.11.12.58
  
  實例綜述:通過無狀態session Beans得到容器治理的Entity Beans中的數據,然后把無狀態Session Beans得到的數據給JSP頁面,從而客戶可以看到所要的結果。通過這樣一種過程使得您知道編寫EJB組件是多么簡單的事情。
  
  預備工作
  
  配置好SQL Server 2000的JDBC驅動(微軟網站有下載,或者用BEA提供的也可以!該例子中用的是微軟的JDBC)、JBuilder 7 + WebLogic 7集成環境,其他的也可以。
  
  開發過程
  
  1、配置JDBC數據源:這個過程包括兩個步驟,首先配置連接池(Connection Pools)。(為什么采用連接池:開發人員不想編寫Database方面的代碼、更換數據庫系統變得簡單、限制數據庫的連接數量、不需要為每個客戶建立新連接。這種池的概念在J2EE中有很多地方出現了,比如EJB本身)配置的參數如下:
  
  Name: cacd
  URL: jdbc:microsoft:sqlserver:
  //10.11.12.58:1433;user=sa;
  passWord=cacd;
  Driver ClassName:
  com.microsoft.jdbc.sqlserver.SQLServerDriver
  Initial Capacity: 3
  Maximum Capacity: 10
  
  其次,配置JDBC數據源,在Tx Data Sources中配置的參數如下:
  
  Name: cacd
  JNDI Name: cacd
  Pool Name: cacd
  (要與前面的相匹配!)
  
  其中,在URL中,你需要為SQL Server 2000配置一個用戶名sa,密碼為cacd,因為這里用的是Type 4的JDBC,所以需要將SQL Server 2000的用戶認證修改為:NT+SQL Server 2000混合認證。
  
  2、數據庫的建立:
  
  Entity Beans代表了Database中的數據,所以需要數據庫支持,但一般情況下,我們知道,可以根據容器治理的Entity Beans導出SQL DDL。另一方面,可以根據SQL DDL生成容器治理的Entity Beans。兩種方法都可以。
  
  比如JBuilder 7兩種方法都提供了。但我想,信息模型(數據庫)的建立在編碼之前就應該存在,所以建議采用第二種辦法。當然有些時候第一種會較為合理些,因為并不是表中所有的字段都會映射到Entity Beans中。該例子中建立了這樣這樣一個Table:
  
  /*=============================*/
  
  /* Table : techniquespec */
  
  /*=============================*/
  
  create table techniquespec
  (
  techniqueitem char(100) not null,
  units char(10) null,
  minvalue decimal(16,6) null,
  maxvalue decimal(16,6) null,
  types char(1) null,
  signon char(1) null,
  constraint PK_TECHNIQUESPEC
  primary key (techniqueitem)
  )
  
  其中,開發人員在建表的過程中,不需要手工去寫SQL DDL語句,一般都可以借助于工具進行,比如PowerDesigner、ERWin等工具。不要對工具產生不好的情緒,但前提是你熟悉數據庫理論。用戶建好Table后,可以填入數據,中文的也可以。
  
  3、容器治理的Entity Beans的開發:JBuilder對EJB開發支持的比較好,提供了圖形化的方式。由于我們已經建立好了Database,前面的techniquespec表,我們可以借助于Import Schema From Database,將SQL DLL引入進來。在這個過程中,一定要注重JNDI的名字和數據源中的JNDI要一致。
  
  得到SQL DLL后,我們可以根據techniquespec表生成CMP 2.0 Entity Beans,在這里我們采用LocalHome訪問Entity Beans,現在想返回表techniquespec中列techniqueitem的所有內容。
  
  首先,真假一個findByTypes Finder方法,EJB QL語句為:
  
  SELECT OBJECT(p) from Techniquespec AS p
  
  其中返回值為Collection。下面給出代碼。
  
  LocalHome接口:
  
  package cacdsystem;
  
  import javax.ejb.*;
  import java.util.*;
  
  public interface TechniquespecHome
  extends javax.ejb.EJBLocalHome
  {
  public Techniquespec create
  (String techniqueitem) throws
  CreateException;
  public Collection findByTypes()
  throws FinderException;
  //添加的Finder方法
  public Techniquespec
  findByPrimaryKey(String techniqueitem)
  throws FinderException;
  }
  
  Local接口:
  
  package cacdsystem;
  
  import javax.ejb.*;
  import java.util.*;
  import java.math.*;
  
  public interface Techniquespec
  extends javax.ejb.EJBLocalObject
  {
  public String getTechniqueitem();
  public void setUnits(String units);
  public String getUnits();
  public void setMinvalue
  (BigDecimal minvalue);
  public BigDecimal getMinvalue();
  public void setMaxvalue
  (BigDecimal maxvalue);
  public BigDecimal getMaxvalue();
  public void setTypes(String types);
  public String getTypes();
  public void setSignon(String signon);
  public String getSignon();
  }
  
  bean類:
  
  package cacdsystem;
  
  import javax.ejb.*;
  
  abstract public class
  TechniquespecBean implements EntityBean
  {
  EntityContext entityContext;
  public java.lang.String ejbCreate
  (java.lang.String techniqueitem)
  throws CreateException
  {
  setTechniqueitem(techniqueitem);
  return null;
  }
  
  public void ejbPostCreate
  (java.lang.String techniqueitem)
  throws CreateException
  {
  }
  
  public void ejbRemove()
  throws RemoveException
  {
  }
  
  public abstract void setTechniqueitem
  (java.lang.String techniqueitem);
  public abstract void setUnits
  (java.lang.String units);
  public abstract void setMinvalue
  (java.math.BigDecimal minvalue);
  public abstract void setMaxvalue
  (java.math.BigDecimal maxvalue);
  public abstract void setTypes
  (java.lang.String types);
  public abstract void setSignon
  (java.lang.String signon);
  public abstract java.lang.String
  getTechniqueitem();
  public abstract java.lang.String
  getUnits();
  public abstract
  java.math.BigDecimal getMinvalue();
  public abstract
  java.math.BigDecimal getMaxvalue();
  public abstract
  java.lang.String getTypes();
  public abstract
  java.lang.String getSignon();
  
  public void ejbLoad()
  {
  }
  
  public void ejbStore()
  {
  }
  
  public

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲午夜精品久久久久久久久久久久| 91精品在线看| 久久久亚洲网站| 国产精品v片在线观看不卡| 欧美日韩一二三四五区| 欧美人成在线视频| 国产精品一区二区三区毛片淫片| 国内精品一区二区三区四区| 成人福利视频在线观看| 亚洲欧美国产精品va在线观看| 国产精品极品美女在线观看免费| 成人a视频在线观看| 日本91av在线播放| 日韩精品免费电影| 亚洲香蕉成人av网站在线观看| 国产精品久久久久久久久久ktv| 日韩欧美中文在线| 成人黄色大片在线免费观看| 久久久久久久久久久成人| 国产视频一区在线| 欧美日韩综合视频| 九九热最新视频//这里只有精品| 亚洲精品福利视频| 久久久精品在线| 欧美日韩第一页| 国产精品扒开腿做爽爽爽的视频| 日韩欧美一区视频| 成人a视频在线观看| 亚洲小视频在线观看| 亚洲精品久久在线| 国产精品免费看久久久香蕉| 中文字幕亚洲在线| 青青久久av北条麻妃海外网| 亚洲精品国产suv| 91超碰caoporn97人人| 国产精品视频999| 亚洲图片欧美午夜| 91精品久久久久久久久久久| 久久国产一区二区三区| 性欧美视频videos6一9| 久久久视频免费观看| 北条麻妃久久精品| 精品久久久久久国产| 国产视频久久久久| 欧美亚洲国产精品| 欧美高清激情视频| 中文字幕亚洲综合久久| 亚洲国产精品电影在线观看| 国产欧美在线观看| 日韩在线观看成人| 亚洲国产成人久久综合| 久久精品国产成人| 国产视频久久久久| 色综合色综合久久综合频道88| 亚洲va欧美va国产综合久久| 97国产精品人人爽人人做| 38少妇精品导航| 久久精品视频网站| 欧美乱妇高清无乱码| 国产美女搞久久| 亚洲经典中文字幕| 亚洲电影免费观看高清完整版在线观看| 久久免费少妇高潮久久精品99| 亚洲日本中文字幕免费在线不卡| 中文字幕自拍vr一区二区三区| 久久久精品日本| 国产欧美日韩专区发布| 国产精品高潮粉嫩av| 国产欧美精品日韩| 国产日韩一区在线| 成人国产精品日本在线| 日韩成人在线免费观看| 欧美巨乳美女视频| 国产成+人+综合+亚洲欧洲| 最新中文字幕亚洲| 亚洲成人免费在线视频| 亚洲国产精品一区二区三区| 搡老女人一区二区三区视频tv| 久久久久成人精品| 久久久人成影片一区二区三区观看| 色播久久人人爽人人爽人人片视av| 亚洲国产精品成人av| 色综合视频一区中文字幕| 欧美激情第一页xxx| 久久久久久成人| 91精品国产综合久久香蕉最新版| 欧美午夜www高清视频| 日韩女优人人人人射在线视频| 一区二区欧美在线| 岛国av午夜精品| 国内伊人久久久久久网站视频| 麻豆一区二区在线观看| 国产精品夫妻激情| 理论片在线不卡免费观看| 久久电影一区二区| 国产精品美女久久久免费| 亚洲欧美激情视频| 68精品久久久久久欧美| 亚洲欧美日韩成人| 欧美日韩一区二区三区| 亚洲一区二区三区视频播放| 国产亚洲精品久久久久久| 亚洲成色999久久网站| 热久久视久久精品18亚洲精品| 91免费精品视频| 国产精品久久婷婷六月丁香| 欧美日韩福利在线观看| 欧美国产日韩一区二区三区| 久久久久久亚洲精品中文字幕| 国产日韩欧美在线播放| 欧美另类精品xxxx孕妇| 欧美日韩日本国产| 亚洲经典中文字幕| 成人黄色av免费在线观看| 欧美视频专区一二在线观看| 国产精品久久久久久久久久尿| 成人免费视频xnxx.com| 国产日产久久高清欧美一区| 亚洲精品影视在线观看| 丝袜美腿亚洲一区二区| 国内精久久久久久久久久人| 中文字幕日本精品| 亚洲精品中文字幕有码专区| 日韩a**中文字幕| 久久影视免费观看| 国产精品久久久久福利| 亚洲欧美国产精品专区久久| 最近2019中文字幕一页二页| 97人人模人人爽人人喊中文字| 色无极影院亚洲| 亚洲一区二区免费| 亚洲精品乱码久久久久久金桔影视| 欧美激情喷水视频| 青青草成人在线| 91视频国产精品| 欧美在线亚洲在线| 亚洲精品美女久久久| 在线日韩日本国产亚洲| 成人午夜在线影院| 一本色道久久88综合亚洲精品ⅰ| 揄拍成人国产精品视频| 最近中文字幕日韩精品| 欧美电影《睫毛膏》| 欧美在线视频免费| 亚洲性av网站| www.日本久久久久com.| 国产在线观看不卡| 国产美女扒开尿口久久久| 亚洲国产私拍精品国模在线观看| 欧美综合在线第二页| 69av在线播放| 亚洲夜晚福利在线观看| 欧美日韩久久久久| 日韩有码视频在线| 精品国产一区二区三区四区在线观看| 国产精品免费一区| 久久91精品国产91久久久| 日本精品性网站在线观看| 91九色国产视频| 国产玖玖精品视频| 欧美精品www在线观看| 久久久久久久久久久91| 国产不卡av在线| 亚洲18私人小影院|