郭玲
基于EJB技術(shù)的在線社區(qū)數(shù)字圖書館實(shí)現(xiàn)
郭玲
社區(qū)數(shù)字圖書館本質(zhì)是簡易型數(shù)字圖書館,具有規(guī)模小、功能與社區(qū)實(shí)際需求密切相關(guān)的固有特點(diǎn),適宜采用成本低廉、簡單易行的開發(fā)模式。在進(jìn)行開發(fā)技術(shù)可行性分析基礎(chǔ)上,選擇基于EJB技術(shù)的演示層、業(yè)務(wù)邏輯層和數(shù)據(jù)層的三層架構(gòu)實(shí)現(xiàn)一個(gè)Web應(yīng)用系統(tǒng)。演示層采用HTML,JavaScript,JSP技術(shù)實(shí)現(xiàn)與用戶的接口;在業(yè)務(wù)邏輯層采用與Oracle完全兼容的EJB技術(shù)和Oracle的PL/SQL語言實(shí)現(xiàn)系統(tǒng)主體功能;數(shù)據(jù)層采用Oracle的RDBMS實(shí)現(xiàn)數(shù)據(jù)庫體系。利用Oracle JDeveloper集成開發(fā)環(huán)境完成系統(tǒng)開發(fā)。
EJB技術(shù);社區(qū)數(shù)字圖書館;Oracle
社區(qū)數(shù)字圖書館是由網(wǎng)絡(luò)技術(shù)、數(shù)字信息資源和網(wǎng)絡(luò)虛擬服務(wù)共同構(gòu)建的社區(qū)數(shù)字文化信息中心,[1]以社區(qū)的全體居民為服務(wù)對象,強(qiáng)調(diào)個(gè)性化服務(wù),服務(wù)對象具體到人,服務(wù)載體已從單一文獻(xiàn)信息服務(wù)走向活動(dòng)和文獻(xiàn)信息服務(wù)并舉,一些社區(qū)圖書館開辦了電子閱覽室,還有的社區(qū)圖書館制作了日常生活信息咨詢網(wǎng)頁。由于社區(qū)圖書館固有的規(guī)模小且貼近生活的特點(diǎn),在構(gòu)建數(shù)字圖書館時(shí),只能采用成本低廉、簡單易行模式。本系統(tǒng)是一個(gè)具備在線閱讀、在線檢索、以及在線訂閱等功能的圖書管理系統(tǒng),實(shí)現(xiàn)一個(gè)具備紙質(zhì)圖書和電子圖書(e_Books)全面管理功能的在線社區(qū)圖書管理系統(tǒng)。[2]
1.1 開發(fā)技術(shù)可行性分析
本系統(tǒng)以O(shè)racle數(shù)據(jù)庫系統(tǒng)為底層數(shù)據(jù)庫支持,采用基于EJB技術(shù)的三層架構(gòu)實(shí)現(xiàn)一個(gè)Web應(yīng)用系統(tǒng)。用戶通過位于演示層的 Web頁面使用位于數(shù)據(jù)層的系統(tǒng)數(shù)據(jù)庫,從而實(shí)現(xiàn)數(shù)字圖書館的功能,而所有用戶功能實(shí)現(xiàn)而產(chǎn)生的數(shù)據(jù)交互的業(yè)務(wù)邏輯則通過業(yè)務(wù)邏輯層實(shí)現(xiàn)。[3]
演示層采用HTML,JavaScript,JSP技術(shù)實(shí)現(xiàn)與用戶的接口。HTML是Web頁面的基礎(chǔ)技術(shù),Javascript、JSP均為基于Java的頁面技術(shù),繼承了Java兼容性優(yōu)良的特征。通過完善的頁面技術(shù),實(shí)現(xiàn)了基于瀏覽器的客戶端界面。
在業(yè)務(wù)邏輯層采用與 Oracle完全兼容的 EJB技術(shù)與Oracle的 PL/SQL語言實(shí)現(xiàn)系統(tǒng)主體功能。EJB技術(shù)源于Java,具備了Java技術(shù)的全部技術(shù)優(yōu)勢,是實(shí)現(xiàn)三層架構(gòu)的主要技術(shù)手段之一,對圖書館的跨平臺(tái)特性提供了良好的解決方法。同時(shí)Oracle也提供了對于EJB技術(shù)的全面支持。
數(shù)據(jù)層采用Oracle的RDBMS實(shí)現(xiàn)數(shù)據(jù)庫體系。作為大型的RDBMS數(shù)據(jù)庫體系,Orcale不僅提供了完善的數(shù)據(jù)庫實(shí)現(xiàn)與管理技術(shù),還提供了豐富的開發(fā)工具與數(shù)據(jù)庫組件,為綜合性數(shù)據(jù)庫體系提供了全面的技術(shù)支持。[4]
1.2 開發(fā)技術(shù)介紹
1.2.1 EAD的三層體系結(jié)構(gòu)
企業(yè)應(yīng)用程序設(shè)計(jì)(Enterprise Application Design EAD)是設(shè)計(jì)適應(yīng)變化的應(yīng)用程序的過程。EAD強(qiáng)調(diào)構(gòu)建的應(yīng)用程序可以與外部和內(nèi)部進(jìn)程順利集成,可以對其進(jìn)行擴(kuò)展,來反映商務(wù)內(nèi)存在的不斷變化狀態(tài),具有高的可用性。EAD設(shè)計(jì)思想可以將不同信息集成到一起。并且充分利用并服務(wù)于企業(yè)。EAD層次體系層次結(jié)構(gòu)具有兩層體系結(jié)構(gòu)、三層體系結(jié)構(gòu)以及N層體系結(jié)構(gòu)。
兩層體系結(jié)構(gòu)的應(yīng)用邏輯位于一個(gè)層,而數(shù)據(jù)訪問邏輯位于另一層。該模型強(qiáng)調(diào)在強(qiáng)大的后端數(shù)據(jù)庫服務(wù)器和駐留在告別左面的“胖”客戶之間實(shí)現(xiàn)計(jì)算能力的分割,如圖1所示:
圖1 兩層體系結(jié)構(gòu)基本模型
采用兩層模型開發(fā)時(shí)具有可伸縮性差、兩層模型應(yīng)用程序具有很高的隱藏費(fèi)用、靈活性受專用開發(fā)工具的限制等局限性。
三層體系結(jié)構(gòu)的邏輯劃分為演示層、業(yè)務(wù)邏輯層和數(shù)據(jù)層三個(gè)孑然不同的層。演示層為“瘦”客戶,不含任何業(yè)務(wù)邏輯,主要為用戶接口代碼、確定如何顯示數(shù)據(jù)的代碼,以及用戶導(dǎo)航和用戶輸入數(shù)據(jù)的規(guī)則。業(yè)務(wù)邏輯層包含應(yīng)用程序全部業(yè)務(wù)邏輯,這些業(yè)務(wù)邏輯被劃分為若干程序模塊,對相關(guān)信息進(jìn)行處理。數(shù)據(jù)層負(fù)責(zé)為業(yè)務(wù)邏輯層提供對數(shù)據(jù)庫的檢索與操縱的SQL執(zhí)行,如圖2所示:
圖2 三層體系結(jié)構(gòu)基本模型
三層體系結(jié)構(gòu)具有一些獨(dú)到的優(yōu)勢與實(shí)用性,其層與層之間僅有數(shù)據(jù)交換,使得開發(fā)技術(shù)與實(shí)現(xiàn)過程分離成為一種可能,特別是面向用戶的演示層開發(fā)不再需要專門的技術(shù)與平臺(tái),滿足業(yè)務(wù)邏輯層的兼容規(guī)范即可。業(yè)務(wù)則采用單一服務(wù)器實(shí)現(xiàn),數(shù)據(jù)層駐留在強(qiáng)大功能的數(shù)據(jù)服務(wù)器上,處理眾多數(shù)據(jù)檢索和操縱。并且代碼的可重用性也得到提高。三層體系結(jié)構(gòu)雖然在部署時(shí)存在一些不足,例如,演示層依托Web技術(shù)與瀏覽器,其最終功能的實(shí)現(xiàn)局限于該項(xiàng)技術(shù)的發(fā)展;服務(wù)器相對集中,容易產(chǎn)生瓶頸現(xiàn)象。但社區(qū)圖書管理系統(tǒng)本質(zhì)是簡易型數(shù)字圖書館系統(tǒng)[1],三層體系結(jié)構(gòu)完全能夠滿足系統(tǒng)的需求。
1.2.2 JDBC (Java Data Base Connectivity)技術(shù)
Java是一個(gè)面向?qū)ο?、平臺(tái)獨(dú)立的開發(fā)應(yīng)用程序工具,具有獨(dú)立 GUI應(yīng)用程序、運(yùn)行在瀏覽器的小程序、服務(wù)器端應(yīng)用程序等典型特征。Oracle從Oracle 8i開始引入Java,現(xiàn)在Java已經(jīng)是Oracle Internet Platform一個(gè)必不可少的組件。Oracle對Java Virtual Machine提供了全面的技術(shù)支持與相應(yīng)的開發(fā)平臺(tái),實(shí)現(xiàn)了一個(gè)與 Java數(shù)據(jù)庫并排運(yùn)行的JVM。
JDBC是一個(gè)編程接口標(biāo)準(zhǔn),使Java程序能夠訪問和修改幾乎任何SQL數(shù)據(jù)庫中的數(shù)據(jù)。Oracle優(yōu)化了JDBC對Oracle數(shù)據(jù)庫的數(shù)據(jù)訪問。瘦客戶(thin client)要求確定程序純粹用 Java編寫,而企業(yè)應(yīng)用程序的中間層要求對后臺(tái)數(shù)據(jù)庫進(jìn)行快速的本機(jī)代碼訪問。Oracle通過對JDBC驅(qū)動(dòng)對此提供了較好的解決方案。
1.2.3 EJB (Enterprise JavaBean)技術(shù)
JavaBean是可以重復(fù)使用的Java組件,它經(jīng)常作為幫助器類運(yùn)行在 Web服務(wù)器中,或者作為模塊化組件運(yùn)行在應(yīng)用程序中。盡管 Enterprise JavaBean并不是直接由JavaBean發(fā)展來得,但它們在可移植性和模塊化方面是類似的。作為一種規(guī)范,EJB的原理基于它們是程序單元,從它們的運(yùn)行環(huán)境請求某些服務(wù),而不是實(shí)現(xiàn)服務(wù)本身。
1.2.4 利用CORBA和IIOP遠(yuǎn)程方法調(diào)用(RMI)
遠(yuǎn)程方法調(diào)用(Remote Method Invocation)是Sun公司為實(shí)現(xiàn)運(yùn)行在不同機(jī)器上 JVM 之間通訊而制定的規(guī)范。RMI-IIOP是Sun與IBM共同實(shí)現(xiàn)的規(guī)范,允許Java程序通過RMI與作為潛在傳輸機(jī)制的Internet Inter-ORB Protocal(IIOP)共同操作。該協(xié)議專門為TCP/IP上的操作設(shè)計(jì)。
通用對象請求代理程序體系結(jié)構(gòu)(Common Object Request Broker Architecture CORBA)是一個(gè)范圍更寬的規(guī)范,解決面向?qū)ο笳Z言間的交互式通信問題。CORBA規(guī)范定義了Interface Definition Language(IDL),指定獨(dú)立進(jìn)程空間中的對象如何通過IDL協(xié)議相互訪問。
1.2.5 Oracle JDeveloper集成開發(fā)環(huán)境
Oracle JDeveloper是Java、XML和Oracle的一個(gè)集成開發(fā)環(huán)境。本系統(tǒng)的開發(fā)工作均采用該環(huán)境完成。
本文作者在《基于 Oracle的社區(qū)數(shù)字圖書管理系統(tǒng)設(shè)計(jì)》(發(fā)表于《計(jì)算機(jī)光盤軟件與應(yīng)用》2014年第01期)給出了社區(qū)數(shù)字圖書管理系統(tǒng)總體規(guī)劃的詳細(xì)分析,包括系統(tǒng)功能模塊圖、系統(tǒng)結(jié)構(gòu)詳圖、數(shù)據(jù)庫設(shè)計(jì)等內(nèi)容,本文只給出系統(tǒng)結(jié)構(gòu)圖,如圖3所示:
圖3 社區(qū)數(shù)字圖書管理系統(tǒng)結(jié)構(gòu)圖
社區(qū)圖書管理系統(tǒng)功能劃分為用戶服務(wù)系統(tǒng)和圖書館管理系統(tǒng)兩大模塊。用戶服務(wù)系統(tǒng)保證在線用戶各項(xiàng)在線圖書服務(wù)功能的實(shí)現(xiàn),圖書館管理系統(tǒng)用于實(shí)現(xiàn)系統(tǒng)管理員對圖書館數(shù)據(jù)體系的管理與維護(hù)以及保證圖書館功能的實(shí)現(xiàn)。
本系統(tǒng)采用基于EJB技術(shù)的Oracle三層架構(gòu)實(shí)現(xiàn)Web應(yīng)用程序。Web應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器采用同一臺(tái)PC機(jī),運(yùn)行Oracle9iAS。由于篇幅所限,下面僅以業(yè)務(wù)邏輯層概要設(shè)計(jì)為例加以實(shí)現(xiàn)。由于業(yè)務(wù)邏輯層包含應(yīng)用程序全部業(yè)務(wù)邏輯,因此是構(gòu)建社區(qū)數(shù)字圖書館的最基礎(chǔ)內(nèi)容,也是構(gòu)建社區(qū)數(shù)字圖書館的核心。
3.1 業(yè)務(wù)邏輯層概要設(shè)計(jì)
本系統(tǒng)業(yè)務(wù)邏輯層將采用基于Oracle9iAS的EJB2.0組件來實(shí)現(xiàn)。由于圖書館具有眾多功能,這樣就需要為每個(gè)功能提供本地接口代碼和遠(yuǎn)程接口代碼。如果編寫好業(yè)務(wù)邏輯層概要設(shè)計(jì),將核心代碼定義包含其中,就可以使得業(yè)務(wù)邏輯層更加規(guī)范、可擴(kuò)展性更強(qiáng)。
3.2.1 本地接口
本地接口定義的方法允許EJB客戶創(chuàng)建和查找EJB組件,對于各模塊的EJB本地接口的定義基本上包含下述核心代碼。接口中create()方法的返回類型是EJB的遠(yuǎn)程接口。
import java.util.Collection;
import java.rmi.RemoteException;
importjavax.ejb.*;
public interface BooksHome extends EJBHome
{
public Books create( String Books_ID, String Books_Name,
String Content_Abstrace,String Authors_ID,
String Books_Property,String Books_Sort,String Language)
throwsRemoteException,CreateException;
public Books findByPrimaryKey( String Books_ID) throwsFinderException,RemoteException;
public Collection findByBooks_Sort(String Books_Sort)
throws FinderException,RemoteException;
}
3.2.2 遠(yuǎn)程接口
遠(yuǎn)程接口定義了EJB客戶將調(diào)用的企業(yè)bean的所有業(yè)務(wù)方法。所有業(yè)務(wù)方法均是 public的,并且必須引發(fā)RemoteException。對于各模塊的 EJB遠(yuǎn)程接口的定義基本上包含下述核心代碼:
import javax.ejb.EJBObject;
import java.rmi.RemoteException;
public interface Books extends EJBObject
{
public int getbooksCode() throws RemoteException; public String getname() throws RemoteException; public String getrate() throws RemoteException;
public String get Content_Abstrace() throws RemoteException;
public String getAuthors_ID() throws RemoteException;
public String getBooks_Property() throws RemoteException;
public String getBooks_Sort() throws RemoteException;
public String getLanguage() throws RemoteException;
}
3.2.3 業(yè)務(wù)邏輯的實(shí)現(xiàn)
查詢子系統(tǒng)實(shí)現(xiàn)了圖書名稱查詢、圖書作者查詢、出版社與關(guān)鍵字查詢四種方式?,F(xiàn)以圖書名稱查詢?yōu)槔f明業(yè)務(wù)邏輯的實(shí)現(xiàn)。
importjava.sql.*;
importjavax.sql.*;
importjava.util.*;
importjavax.ejb.*;
importjavax.naming.*;
importjava.rmi.*;
public class BooksEjb implements EntityBean
{
public StringBooks_ID;
public StringBooks_Name;
public String Content_Abstrace;
public String Authors_ID;
public String Books_Property;
public String Books_Sort;
public String Language;
privateEntityContextctx;
Connection con;
publicBooksEjb(){}
publicintgetbooksCode(){return Books_ID; }
public String getname(){return Books_Name;}
public String get Content_Abstrace()
{
return Content_Abstrace;
}
public String getAuthors_ID(){return Authors_ID; }
public String getBooks_Property(){return Books_Property;}
public String getBooks_Sort(){return Books_Sort; }
public String getLanguage(){return Language;}
public String ejbCreate( String Books_ID, String Books_Name,
String Content_Abstrace, String Authors_ID,
String Books_Property,StringBooks_Sort,String Language)
throws CreateException
{
this. Books_ID= Books_ID;
this. Books_Name = Books_Name;
this. Content_Abstrace= Content_Abstrace;
this.Authors_ID=Authors_ID;
this.Books_Property=Books_Property;
this.Books_Sort=Books_Sort;
this.Language=Language;
return null;
}
public void setEntityContext(EntityContextctx)
{
this.ctx=ctx;
}
public void ejbActivate()
{
Object obj=ctx.getPrimaryKey();
String id=obj.toString();Boohs_ID=Integer.parseInt(id);
}
public void ejbPassivate(){ Books_ID=’00000000’;
}
public void ejbStore(){}
public void ejbLoad(){}
public void ejbRemove(){}
public void unsetEntityContext(){}
public void ejbPostCreate( String Books_ID, String Books_Name,
String Content_Abstrace,StringAuthors_ID,
String Books_Property, String Books_Sort,String Language){}
}
本文在初探基于Internet的EAD幾種不同架構(gòu)系統(tǒng)優(yōu)劣的基礎(chǔ)上,實(shí)現(xiàn)了基于EJB技術(shù)的社區(qū)數(shù)字圖書管理系統(tǒng)。本系統(tǒng)基于三層架構(gòu)實(shí)現(xiàn)一個(gè)具有數(shù)字圖書管理、閱讀、下載,紙質(zhì)圖書預(yù)約、郵購等功能的綜合在線圖書管理體系的基本功能,且具有安全可靠、易于維護(hù)和管理的特點(diǎn)。
[1] 王玉珍.文化大發(fā)展背景下的社區(qū)圖書館建設(shè)研究.四川圖書館學(xué)報(bào)[J].2013(01)60-63.
[2] 郭玲.基于 Oracle的社區(qū)數(shù)字圖書管理系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2014(1):55-58.
[3] 劉江平,倪小剛,李艷.基于MVC模式的ERP資源管理系統(tǒng)[J].內(nèi)蒙古農(nóng)業(yè)大學(xué)學(xué)報(bào).2013(2):171-172.
[4] 賀亞茹.基于Oracle的音像租賃管理系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)[J].電腦編程技巧與維護(hù),2011(14):59-60.
[5] 海潘編著.軟件工程導(dǎo)論[M].第三版. 北京:清華大學(xué)出版社.1998.
[6] David Flanagan著.何鍵輝,張洛玲譯.Java實(shí)例技術(shù)手冊[M].北京:中國電力出版社
[7] Elliotte Rusty Harold著. Java Web Programming[M].北京:中國電力出版社
Online Community Digital Library Based On EJB Technology Implementation
Guo Ling
(Adult Education College of ZhuHai City Polytech, Zhuhai 519090, China)
The nature of community digital library is a simple digital library. It is small-scaled; close relation between function and community’s actual needs. So it is fit for low cost and easy developing mode. On basis of the possibility analysis of development technology, the paper selected a three-tier structure that based on EJB’s presentation layer, business logic layer and data layer that carried out a Web application system. Presentation layer uses HTML, JavaScript, JSP technology interface with the user; in the business logic layer, the EJB technology which is fully compatible with Oracle's PL/SQL language is adopted to realize the main function of the system; in the data tier Oracle RDBMS is used to accomplish database system. Oracle JDeveloper’s integrated development environment is utilized to finish the system exploitation.
EJB Technology; community digital library; Oracle
TP311
A
2014.10.15)
1007-757X(2014)12-0058-03
郭 玲(1970-),女,珠海城市職業(yè)技術(shù)學(xué)院成教學(xué)院,講師,雙學(xué)士,研究方向:計(jì)算機(jī)軟件,現(xiàn)代教育技術(shù),珠海,519090