濮阳杆衣贸易有限公司

主頁 > 知識庫 > 基于EJB技術的商務預訂系統(tǒng)的開發(fā)

基于EJB技術的商務預訂系統(tǒng)的開發(fā)

熱門標簽:珠海銷售外呼系統(tǒng)運營商 地圖標注創(chuàng)業(yè)項目入駐 地圖標注制作道路 山東智能云外呼管理系統(tǒng) 四川電信外呼系統(tǒng)靠譜嗎 長春回撥外呼系統(tǒng)廠家 外呼系統(tǒng)啥意思 廣州三五防封電銷卡 電銷外呼系統(tǒng) 排行榜
技術已經(jīng)越來越多地應用到大型網(wǎng)絡系統(tǒng)開發(fā)中,本文中,筆者將介紹EJB(Enterprise Java Beans)的定義、基于EJB技術的應用系統(tǒng)結構模型以及EJB組件的內容和分類,最后結合基于EJB的結構模型和EJB組件開發(fā)了一個商務預訂系統(tǒng)。
EJB從技術上而言不是一種“產品”,而是一種技術規(guī)范。SUN公司對EJB的定義是:EJB的結構是開發(fā)和配置基于組件的分布式商務應用程序的一種組件結構。用EJB結構開發(fā)的應用程序是可伸縮的、事務型的、多用戶安全的。這些應用程序可能只需編寫一次,卻可以在支持EJB規(guī)范的任務服務器平臺上進行配置??偟膩碚f,EJB是一個組件事務監(jiān)控的標準服務器端的組件模型。

基于EJB技術的系統(tǒng)結構模型
EJB結構是一個服務端組件結構,是一個層次性結構,其結構模型如圖1所示。該結構模型在通常情況下可分為客戶層、業(yè)務邏輯層和數(shù)據(jù)層,下面筆者對此作一簡單介紹。


圖2:商務預訂系統(tǒng)的構架 

Entity Bean是為了現(xiàn)實世界的對象建造的模型,這些對象通常是數(shù)據(jù)庫的一些持久記錄。Entity Bean為那些可以表達成名詞的商務概念建立模型,它既描述了真實世界對象的狀態(tài),也描述了它們的行為,同時允許開發(fā)者封裝與具體概念有關的數(shù)據(jù)和商務規(guī)則。Session Bean是一種通過Home Interface創(chuàng)建并對客戶端連接專有的Enterprise Bean,Session bean實例一般不與其它客戶端共享。Session Bean是客戶端應用程序的一個擴展,并負責管理整個過程或任務。Session Bean可以管理Entity Bean之間的交互,描述它們如何一起工作來完成一個特殊任務。
Entity Bean根據(jù)管理持久性的方式可以分為容器管理的Bean和使用Bean管理的Bean。容器管理的Bean由EJB容器自動管理它們的持久性,容器知道Bean實例的字段是怎樣映射到數(shù)據(jù)庫中去,并自動管理插入、更新和刪除數(shù)據(jù)庫中與實體有關的數(shù)據(jù);使用Bean管理持久性的Bean需要明確地完成所有這些工作。Bean的開發(fā)者必須編寫代碼操作數(shù)據(jù)庫,EJB容器只告訴Bean實例什么時候可以在數(shù)據(jù)庫中安全地插入、更新和刪除數(shù)據(jù),除此之外,它不提供任何別的幫助。Bean實例自己完成所有的持久性工作。
Session Bean根據(jù)是否有狀態(tài)可分為無狀態(tài)Bean和有狀態(tài)Bean。無狀態(tài)Session Bean傾向于通用并可重復使用;有狀態(tài)Session Bean是客戶應用程序的擴展,它代表客戶完成任務并維護客戶的相關狀態(tài)。

商務預訂系統(tǒng)的開發(fā)
客艙預訂系統(tǒng)是在J2EE平臺上開發(fā)的基于EJB組件技術的商務預訂系統(tǒng),其主要流程是用戶登錄以后,將被依次帶領著通過顧客選擇頁和導航選擇頁,并將為顧客選擇一個可獲得的客艙(從TraveAgentBean處獲得可供選擇的客艙列表,TravelAgentBean的listAvailableCabin()方法由生成此網(wǎng)頁的Servlet調用,客艙列表將用于裝載到用戶瀏覽器的網(wǎng)頁上創(chuàng)建HTML列表框),當用戶選擇一間客艙并提交了選擇時,一個HTTP請求將會發(fā)送到EJB服務器(Websphere Application Server),服務器接到此請求后,將其分派給ReservationServlet,此Servlet調用TravelAgent.BookPassage()方法做實際的預訂,BookPassage()方法返回的標簽信息將用于創(chuàng)建另一個送回用戶瀏覽器的網(wǎng)頁。如果預訂成功,則由ProcessPaymentServlet去調用ProcessPaymentBean中的支付方法,從而實現(xiàn)對客戶的收費過程。其具體構架見圖2。
預定系統(tǒng)中的EJB組件主要包括以下幾個部分:
CabinBean:實體Bean,主鍵是CabinPK,是用來封裝現(xiàn)實世界中的航船客艙的一個實體Bean。
CustomerBean:實體Bean,主鍵是CustomerPK,是用來封裝現(xiàn)實世界中需要預訂航船客艙的消費者的一個實體Bean。
CruiseBean:實體Bean,主鍵是CruisePK,是用來封裝現(xiàn)實世界中航船航線的一個實體Bean。ReservationBean:實體Bean,主鍵是CruiseID,CabinID,它代表了數(shù)據(jù)庫中不變的一條記錄,即一個預訂,它記錄了預訂系統(tǒng)的歷史事件,主要是用來防止雙重預訂,即兩個客戶預訂相同航線的相同客艙,產生這種問題的原因是因為客戶選擇客艙和航線的時刻與調用bookPassage()方法的時刻之間有一段間隔時間。TravelAgentBean:有狀態(tài)會話Bean,一個負責預訂航行艙位工作流的會話Bean,它封裝了完成一條航線的一個預訂操作的過程并在全世界的旅行代理的客戶端應用程序中使用。TravelAgentBean不僅滿足消費者預訂票據(jù)的需要,還可提供在航行中剩余客艙的消息。為了完成此任務,Bean需要知道預訂是由哪一條航線、客艙,以及客戶組成,收集到這些信息后,由bookPassage()方法來完成處理預訂過程,它為客戶賬戶的計費負責,在正確航線的正確船只上預訂選擇的客艙,并通過Ticket類來為客戶產生一張票據(jù)。在這里,我們需使用CreditCard類存儲有關客戶信用卡的相關信息,同時,ListAvailableCabins()方法用來顯示可用的尚未被預訂的客艙。
ProcessPaymentBean:無狀態(tài)會話Bean,它是在事務系統(tǒng)中向消費者收費的過程。它定義了支票、現(xiàn)金和信用卡支付方式的三個事務方法,即ByCheck()、ByCash()和ByCredit()。

商務預訂系統(tǒng)的程序代碼示例
整個商務預訂系統(tǒng)的開發(fā)是在IBM VisualAge for Java下面開發(fā)完成的,在該IDE開發(fā)環(huán)境中,實體Bean相對會話Bean要容易開發(fā)得多,以下就以TravelAgentBean為例,介紹EJB組件的開發(fā)過程:

1.TravelAgent遠程接口
它提供了設置客戶希望預訂的航線和客艙ID的方法。此外,還設置boolPassage()方法來對客戶的預訂進行計費,并為客戶產生一張票據(jù)。具體代碼如下:
package com.titan.travelagent;
import java.rmi.RemoteException;
import javax.ejb.FinderException;
import com.titan.cruise.Cruise;
import com.titan.customer.Customer;
import com.titan.processpayment.CreditCard;
public interface TravelAgent extends javax.ejb.EJBObject
{
public void setCruiseID(int cruise) throws RemoteException, FinderException;
public int getCruiseID( ) throws RemoteException, IncompleteConversationalState;
public void setCabinID(int cabin) throws RemoteException, FinderException;
public int getCabinID()throws RemoteException, IncompleteConversationalState;
public int getCustomerID()throws RemoteException, IncompleteConversationalState;
public Ticket boolPassage(CreditCard card,double price) throws RemoteException, IncompleteConversationalState;


2.TravelAgent Home接口
TravelAgent Home接口代碼如下:

puckage com.titan.tracelagent;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import com.titan.customer.Customer;
public interface TravelAgentHome extends javax.ejb.EJBHome {
public TravelAgent create(Customer cust) throws RemoteException,CreateException;} 

3.TravelAgent Bean類
它需要實現(xiàn)TravelAgent的遠程接口和Home接口中的所有行為,限于篇幅,本文將不再介紹其實現(xiàn)代碼,感興趣的讀者可自己加以完成。

通過以上步驟,我們就完成了一個商務預定系統(tǒng)的EJB組件的開發(fā)。 

標簽:吳忠 玉樹 肇慶 廣元 潮州 紹興 保定 北海

巨人網(wǎng)絡通訊聲明:本文標題《基于EJB技術的商務預訂系統(tǒng)的開發(fā)》,本文關鍵詞  基于,EJB,技術,的,商務,預訂,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《基于EJB技術的商務預訂系統(tǒng)的開發(fā)》相關的同類信息!
  • 本頁收集關于基于EJB技術的商務預訂系統(tǒng)的開發(fā)的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    石门县| 三台县| 克东县| 鄱阳县| 赤城县| 大荔县| 汨罗市| 乐安县| 桃江县| 涿鹿县| 周至县| 和静县| 巴东县| 拉萨市| 台东市| 沂水县| 抚顺县| 义马市| 开鲁县| 湘西| 鲁甸县| 达尔| 阳原县| 赤峰市| 延庆县| 贵州省| 安吉县| 兰坪| 团风县| 静海县| 盐亭县| 定边县| 儋州市| 西平县| 达日县| 仲巴县| 五峰| 丹阳市| 定西市| 铜鼓县| 廊坊市|