成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發(fā) 后端
EJB技術已經(jīng)越來越多地應用到大型網(wǎng)絡系統(tǒng)開發(fā)中。本文中,筆者將介紹EJB(Enterprise Java Beans)的定義,最后結(jié)合基于EJB的結(jié)構(gòu)模型和EJB組件開發(fā)了一個商務預訂系統(tǒng)。

從EJB技術上而言不是一種“產(chǎn)品”,而是一種EJB技術規(guī)范。SUN公司對EJB的定義是:EJB的結(jié)構(gòu)是開發(fā)和配置基于組件的分布式商務應用程序的一種組件結(jié)構(gòu)。用EJB結(jié)構(gòu)開發(fā)的應用程序是可伸縮的、事務型的、多用戶安全的。這些應用程序可能只需編寫一次,卻可以在支持EJB規(guī)范的任務服務器平臺上進行配置。總的來說,EJB是一個組件事務監(jiān)控的標準服務器端的組件模型。

基于EJB技術的系統(tǒng)結(jié)構(gòu)模型

EJB結(jié)構(gòu)是一個服務端組件結(jié)構(gòu),是一個層次性結(jié)構(gòu)。該結(jié)構(gòu)模型在通常狀況下可分為客戶層、業(yè)務邏輯層和數(shù)據(jù)層,下面筆者對此作一簡單介紹。

1.客戶層 主要是用來滿足對整個系統(tǒng)的各種訪問需求并處理以下工作:

接收用戶的輸入,還可以對用戶的輸入進行分析檢查并作相應的處理;顯示由服務器端高層傳來的運行結(jié)果。客戶層通常是由客戶進程組成,這些進程由瀏覽器動態(tài)地創(chuàng)建和撤銷。

2.業(yè)務邏輯層這是整個系統(tǒng)最要害的部分。業(yè)務邏輯層在通常狀況下會分為兩層,其高層是請求接收層(一般稱之為Web層),用于接收從瀏覽器傳來的請求并將請求交給底層進行處理,同時將請求處理結(jié)果發(fā)送給瀏覽器。這些過程主要由jsp(SUN企業(yè)級應用的首選)頁面、基于Web的Applets以及顯示 HTML頁面的Servlets組成。底層是請求處理層(一般稱之為EJB層),包括監(jiān)聽進程、處理進程和數(shù)據(jù)庫操作進程,負責處理請求接收層傳來的客戶請求并對它進行處理,同時將請求結(jié)果傳遞給請求接收層,假如需要的話還需要將處理結(jié)果交給數(shù)據(jù)層進行存儲。

3.數(shù)據(jù)層 主要是為業(yè)務邏輯層提供數(shù)據(jù)服務,如存儲業(yè)務邏輯層處理結(jié)果、返回業(yè)務邏輯層檢索的數(shù)據(jù)結(jié)果,同時也是為了實現(xiàn)屏蔽數(shù)據(jù)源的變化,從而實現(xiàn)當數(shù)據(jù)庫發(fā)生變化時我們只需修改連接數(shù)據(jù)源的語句就可以。

EJB組件的分類

通常狀況下,服務端的EJB組件有兩種基本類型:Entity Bean(實體Bean)和Session Bean(會話Bean)。

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之間的交互,描述它們?nèi)绾我黄鸸ぷ鱽硗瓿梢粋€非凡任務。

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調(diào)用,客艙列表將用于裝載到用戶瀏覽器的網(wǎng)頁上創(chuàng)建HTML列表框),當用戶選擇一間客艙并提交了選擇時,一個HTTP請求將會發(fā)送到EJB服務器(Websphere Application Server),服務器接到此請求后,將其分派給ReservationServlet,此Servlet調(diào)用 TravelAgent.BookPassage()方法做實踐的預訂,BookPassage()方法返回的標簽信息將用于創(chuàng)建另一個送回用戶瀏覽器的網(wǎng)頁。假如預訂成功,則由 ProcessPaymentServlet去調(diào)用ProcessPaymentBean中的支付方法,從而實現(xiàn)對客戶的收費過程。

商務預定系統(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)的歷史事件,主要是用來防止雙重預訂,即兩個客戶預訂相同航線的相同客艙,產(chǎn)生這種問題的緣由是因為客戶選擇客艙和航線的時刻與調(diào)用bookPassage()方法的時刻之間有一段間隔時間。
◆TravelAgentBean:有狀態(tài)會話Bean,一個負責預訂航行艙位工作流的會話Bean,它封裝了完成一條航線的一個預訂操作的過程并在全世界的旅行代理的客戶端應用程序中使用。TravelAgentBean不僅滿足消費者預訂票據(jù)的需要,還可提供在航行中剩余客艙的消息。為了完成此任務,Bean需要知道預訂是由哪一條航線、客艙,以及客戶組成,收集到這些信息后,由bookPassage()方法來完成處理預訂過程,它為客戶賬戶的計費負責,在正確航線的正確船只上預訂選擇的客艙,并通過Ticket類來為客戶產(chǎn)生一張票據(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()方法來對客戶的預訂進行計費,并為客戶產(chǎn)生一張票據(jù)。具體代碼如下:

 
  1. package com.titan.travelagent;  
  2. import java.rmi.RemoteException;  
  3. import javax.ejb.FinderException;  
  4. import com.titan.cruise.Cruise;  
  5. import com.titan.customer.Customer;  
  6. import com.titan.processpayment.CreditCard;  
  7. public interface TravelAgent extends javax.ejb.EJBObject  
  8. {  
  9. public void setCruiseID(int cruise) throws RemoteException, FinderException;  
  10. public int getCruiseID( ) throws RemoteException, IncompleteConversationalState;  
  11. public void setCabinID(int cabin) throws RemoteException, FinderException;  
  12. public int getCabinID()throws RemoteException, IncompleteConversationalState;  
  13. public int getCustomerID()throws RemoteException, IncompleteConversationalState;  
  14. public Ticket boolPassage(CreditCard card,double price) throws RemoteException。IncompleteConversationalState;  
  15. }  

 

2.TravelAgent Home接口

TravelAgent Home接口代碼如下:

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

 

3.TravelAgent Bean類
它需要實現(xiàn)TravelAgent的遠程接口和Home接口中的所有行為,限于篇幅,本文將不再介紹其實現(xiàn)代碼,感愛好的讀者可自己加以完成。以上就是基于EJB技術的商務預訂系統(tǒng)的開發(fā)。

【編輯推薦】

  1. EJB入門知識簡單介紹
  2. 選擇EJB3.0,不再需要Spring+Hibernate
  3. EJB3.0和Spring的抉擇
  4. 使用EJB事務屬性控制事務的作用域
  5. EJB的分類及其各自的功能和應用
責任編輯:佚名 來源: jsp博客
相關推薦

2009-06-25 16:35:12

EJB技術

2009-04-13 11:37:12

IBMdWSOAP

2009-06-11 16:53:09

什么是EJBEJB

2009-06-25 16:47:30

EJB技術

2011-03-04 10:03:45

EJB數(shù)據(jù)庫應用

2009-06-26 16:01:39

EJB組織開發(fā)EJB容器EJB

2009-06-12 11:06:35

EJB技術

2009-06-26 14:10:24

EJB開發(fā)

2011-05-16 16:26:14

EJB

2009-06-11 16:25:44

EJB2.0EJB

2009-06-15 16:29:42

JSONAJAX

2009-08-17 17:53:07

RSS訂閱開發(fā)實例

2009-06-25 17:08:14

2022-09-04 23:24:45

Go語言監(jiān)控

2010-06-18 17:09:05

UML用例驅(qū)動

2009-06-12 12:46:59

EJB3.0

2009-06-11 14:25:17

EJBJava

2009-06-11 14:52:20

EJB組件MyEclipse

2009-06-26 15:58:28

EJB

2009-06-26 14:54:18

Spring支持EJB
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产丝袜一区二区三区免费视频 | 欧美日韩在线观看视频 | 成人动漫视频网站 | 国产成人精品久久久 | 日韩成人精品在线观看 | 国产福利91精品一区二区三区 | 四虎最新 | 99精品一区二区 | 天天天久久久 | japan21xxxxhd美女| 国产成人福利视频在线观看 | 国产精品视频一区二区三区四蜜臂 | 美女天天操 | 天天玩夜夜操 | 欧美特级黄色 | 看特级黄色片 | 精品视频一区二区三区在线观看 | 国产日日操 | 日韩波多野结衣 | 做a视频在线观看 | 国产伦精品一区二区三区照片91 | 福利久久| 在线视频一区二区 | 免费一级黄 | 免费欧美 | 日韩精品久久一区二区三区 | 91精品国产91久久久久久 | 精品国产一区二区三区成人影院 | 久久av一区二区三区 | 精品国产乱码久久久久久蜜退臀 | 男人的天堂在线视频 | 成人二区| 波多野结衣精品 | 日韩一区二区三区在线观看 | 日韩视频成人 | 毛片免费观看视频 | 亚洲成人一区二区 | 日韩视频国产 | 免费在线观看一区二区三区 | 欧美久久久久久久 | 亚洲欧美中文日韩在线v日本 |