主頁(yè) > 知識(shí)庫(kù) > 基于EJB技術(shù)的商務(wù)預(yù)訂系統(tǒng)的開(kāi)發(fā)

基于EJB技術(shù)的商務(wù)預(yù)訂系統(tǒng)的開(kāi)發(fā)

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

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


圖2:商務(wù)預(yù)訂系統(tǒng)的構(gòu)架 

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

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

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

1.TravelAgent遠(yuǎn)程接口
它提供了設(shè)置客戶希望預(yù)訂的航線和客艙ID的方法。此外,還設(shè)置boolPassage()方法來(lái)對(duì)客戶的預(yù)訂進(jìn)行計(jì)費(fèi),并為客戶產(chǎn)生一張票據(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類
它需要實(shí)現(xiàn)TravelAgent的遠(yuǎn)程接口和Home接口中的所有行為,限于篇幅,本文將不再介紹其實(shí)現(xiàn)代碼,感興趣的讀者可自己加以完成。

通過(guò)以上步驟,我們就完成了一個(gè)商務(wù)預(yù)定系統(tǒng)的EJB組件的開(kāi)發(fā)。 

標(biāo)簽:吳忠 玉樹(shù) 肇慶 廣元 潮州 紹興 保定 北海

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《基于EJB技術(shù)的商務(wù)預(yù)訂系統(tǒng)的開(kāi)發(fā)》,本文關(guān)鍵詞  基于,EJB,技術(shù),的,商務(wù),預(yù)訂,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《基于EJB技術(shù)的商務(wù)預(yù)訂系統(tǒng)的開(kāi)發(fā)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于基于EJB技術(shù)的商務(wù)預(yù)訂系統(tǒng)的開(kāi)發(fā)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章