六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

轉貼:使用EJB創(chuàng)建CRM系統(tǒng)

[摘要]利用EJB創(chuàng)建CRM系統(tǒng) 林建剛、聶旭琰、薛瑛   本文主要是利用EJB(Enterprise JavaBean)技術來開發(fā)一個CRM系統(tǒng),整個系統(tǒng)應用J2EE構架,以IBM Websphere Application Server作為應用服務器來進行開發(fā)的。本文將介紹整個系統(tǒng)的構架以及整個系統(tǒng)中...
利用EJB創(chuàng)建CRM系統(tǒng)

林建剛、聶旭琰、薛瑛

  本文主要是利用EJB(Enterprise JavaBean)技術來開發(fā)一個CRM系統(tǒng),整個系統(tǒng)應用J2EE構架,以IBM Websphere Application Server作為應用服務器來進行開發(fā)的。本文將介紹整個系統(tǒng)的構架以及整個系統(tǒng)中EJB的分析設計和實現(xiàn)。


  系統(tǒng)結構


  本系統(tǒng)運用了當今流行的J2EE構架,將整個CRM系統(tǒng)分成四層,即客戶層、Web層、EJB層和數(shù)據(jù)層。其中EJB層主要處理系統(tǒng)的業(yè)務邏輯,系統(tǒng)運用Session facade設計模式即利用Session Bean包裝所有Entity Bean,來負責調用Entity Bean的方法,客戶端只允許與Session Bean交互,這樣可以縮短系統(tǒng)響應時間,減少資源利用。Entity Bean用來代表數(shù)據(jù)庫中的數(shù)據(jù),所有對Entity Bean的操作都代表了底層數(shù)據(jù)庫中數(shù)據(jù)的變動,EntityBean與數(shù)據(jù)庫的同步過程由容器來管理。Session Bean用來處理業(yè)務邏輯和工作流,是客戶端工作的抽象。由Web層來處理企業(yè)的表示邏輯,用來處理與EJB層和客戶端之間的交互,包括接收、響應客戶端的請求,并向EJB層發(fā)出請求,接收它的響應結果。

  系統(tǒng)以IBM VasualAge for Java作為開發(fā)工具,以IBM DB2作為后臺數(shù)據(jù)庫,利用IBM Websphere Application Server作為應用服務器。下圖就是整個系統(tǒng)的結構圖。


  客戶層(Client Tier):包括瀏覽器、筆記本等客戶端。

  Web層(Web Tier):使用JSP(Java Server Pages)來開發(fā)業(yè)務邏輯。

  業(yè)務層(也叫EJB層):WebServer / AppServer,使用IBM HTTP Server 作為HTTP Server,IBM Websphere Server作為應用服務器。

  數(shù)據(jù)層(Data Tier):使用IBM DB2存儲企業(yè)數(shù)據(jù)。


  EJB設計


  下面,我們將詳細介紹系統(tǒng)中所需的實體EJB與會話Bean的功能。

  實體EJB設計

  使用了EJB的實體Bean類型,所有的數(shù)據(jù)都封裝到實體EJB中,因此數(shù)據(jù)庫設計就成了EJB的設計。對應于上面的數(shù)據(jù)庫設計,這里可以抽象出來以下數(shù)據(jù)實體:

  SystemManagerEJB:主要用來描述整個系統(tǒng)的管理員信息的實體Bean;

  CustomerEJB:主要用來描述整個系統(tǒng)的客戶信息的實體Bean;

  ContactEJB:主要用來描述與客戶接觸洽談的有關信息的相關資料的實體Bean;

  CustomerServiceEJB:主要用來描述企業(yè)對客戶提供服務的相關信息的實體Bean;

  ProductPurchaseEJB:主要用來描述客戶向企業(yè)購買產品的有關信息的實體Bean;

  ProdutCheckoutEJB:主要用來描述客戶向企業(yè)購買產品后,企業(yè)的產品出庫的相關信息的實體Bean;

  ProductStorageEJB:主要用來企業(yè)向銷售廠家購買產品后,產品入庫的相關信息的實體Bean。

  會話Bean設計

  會話Bean(Session Bean)主要完成一些邏輯處理,包括以下會話Bean :

  FacadeEJB:主要用來封裝所有實體Bean;

  StatProductEJB:主要是用來統(tǒng)計庫存產品的會話Bean;

  StatCustomerEJB:主要是用來統(tǒng)計客戶信息的會話Bean。


  程序示例


  下面,筆者以CustomerEJB為例,簡述程序的開發(fā)過程:

  編寫Home接口

  Home接口是用來創(chuàng)建、定位和刪除對象的,每個實體Bean都有自己的Home接口。下面的代碼包含了CustomerHome接口的具體代碼:

  import java.rmi.;

  import javax.ejb.;

  import java.util.;

  public interface CustomerHome extends EJBHome {

  public Customer create(

   String customerName,

   String customerPassword,

   String customerSex,

   String customerDepartment,

   String customerInfo)

  throws RemoteException,CreateException;

  public Customer findByPrimaryKey(String primaryKey)

  throws RemoteException,FinderException;

  public Collection findAll() throws RemoteException, FinderException;

  ……

  }

  編寫Remote接口

  遠程接口定義了客戶端和Bean交互使用的商務方法。下面的代碼顯示了Customer接口的定義。

  import java.rmi.;

  import javax.ejb.;

  public interface Customer extends EJBObject {

  String getCustomerName() throws RemoteException;

  void setCustomerName(String customerName) throws RemoteException;

  ……

  }

  編寫B(tài)ean類

  開發(fā)任何Bean都要以它的遠程接口作向導。遠程接口中定義的商務方法必須復制到Bean類中。在一個CMP中,Bean類必須有與Home接口中的創(chuàng)建方法對應的方法.最后還必須實現(xiàn)javax.ejb.EntityBean接口中定義的回調方法。下面是CustomerBean類的代碼示例:

  import java.rmi.;

  import javax.ejb.;

  public abstract class UserinfoBean implements EntityBean {

   EntityContext entityContext;

   String customerName;

  ……

  public Customer ejbcreate(

   String customerName,

   String customerPassword,

   String customerSex,

   String customerDepartment,

   String customerInfo)

  throws RemoteException,CreateException {

  this.customerName = customerName;

  ……

  }

  public void ejbRemove()

  throws RemoveException {

   }

   …… //其他回調方法

   public String getCustomerName(){

   return customerName;

   }

   …… //其他商務方法

  }

  在會話Bean中包裝實體

  在FacadeEJB中包裝實體Bean,以便客戶端調用。

  下面代碼演示了如何在會話Bean的一個商務方法中包裝實體Bean:

  public Collection getAllRecords(){

  Vector vectUserInfos = new Vector();

  try {

  Context ctx = new InitialContext();

  Object ref = ctx.lookup("CustomerHome");

  CustomerHome customerHome = (CustomerHome) PortableRemoteObject.narrow(ref, CustomerHome.class);

  Collection collection = customerHome.findAll();

   Return collection;

  } catch(Exception e) {

  e.printStackTrace();

  }

  }

  最后,我們只要在JSP頁面中調用整個Customer的數(shù)據(jù)資料即可。完成其他的設計工作后,一個用EJB技術開發(fā)的CRM系統(tǒng)就初具規(guī)模了。





主站蜘蛛池模板: 日韩欧美一区二区三区久久 | 中文字幕在线第一页 | 在线观看男女爱视频网站 | 天堂网www天堂在线资源链接 | 伊人久久精品 | 日本zzzwww| 中文字幕一区二区在线视频 | 四虎sihu新版影院亚洲精品 | 亚洲第一页综合 | 欧美专区在线观看 | 午夜精品久久久久久久四虎 | 色橹橹欧美在线观看视频高清免费 | 午夜国产精品福利在线观看 | 欧美性理论片在线观看片免费 | 青青青爽在线视频观看大全 | 日韩小视频在线播放 | 日韩另类视频 | 日韩免费专区 | 日韩毛片免费视频一级特黄 | 中文字幕成人免费视频 | 最近更新免费韩国视频 | 网友自拍区一区二区三区 | 四虎a456tncom | 亚洲video | 四虎影院新网址 | 天天操夜夜骑 | 日本一区二区视频在线观看 | 真实国产乱子伦精品一区二区三区 | 日本激情视频在线观看 | 欧美性黄色 | 色综合天天综合高清影视 | 天天成人综合网 | 亚拍一区| 婷婷免费在线 | 日日干天天爽 | 日本激情在线观看 | 色涩综合| 色爱区综合 | 网站在线观看mv视频 | 一区福利视频 | 我要色综合网 |