郭玲
基于EJB技術的在線社區數字圖書館實現
郭玲
社區數字圖書館本質是簡易型數字圖書館,具有規模小、功能與社區實際需求密切相關的固有特點,適宜采用成本低廉、簡單易行的開發模式。在進行開發技術可行性分析基礎上,選擇基于EJB技術的演示層、業務邏輯層和數據層的三層架構實現一個Web應用系統。演示層采用HTML,JavaScript,JSP技術實現與用戶的接口;在業務邏輯層采用與Oracle完全兼容的EJB技術和Oracle的PL/SQL語言實現系統主體功能;數據層采用Oracle的RDBMS實現數據庫體系。利用Oracle JDeveloper集成開發環境完成系統開發。
EJB技術;社區數字圖書館;Oracle
社區數字圖書館是由網絡技術、數字信息資源和網絡虛擬服務共同構建的社區數字文化信息中心,[1]以社區的全體居民為服務對象,強調個性化服務,服務對象具體到人,服務載體已從單一文獻信息服務走向活動和文獻信息服務并舉,一些社區圖書館開辦了電子閱覽室,還有的社區圖書館制作了日常生活信息咨詢網頁。由于社區圖書館固有的規模小且貼近生活的特點,在構建數字圖書館時,只能采用成本低廉、簡單易行模式。本系統是一個具備在線閱讀、在線檢索、以及在線訂閱等功能的圖書管理系統,實現一個具備紙質圖書和電子圖書(e_Books)全面管理功能的在線社區圖書管理系統。[2]
1.1 開發技術可行性分析
本系統以Oracle數據庫系統為底層數據庫支持,采用基于EJB技術的三層架構實現一個Web應用系統。用戶通過位于演示層的 Web頁面使用位于數據層的系統數據庫,從而實現數字圖書館的功能,而所有用戶功能實現而產生的數據交互的業務邏輯則通過業務邏輯層實現。[3]
演示層采用HTML,JavaScript,JSP技術實現與用戶的接口。HTML是Web頁面的基礎技術,Javascript、JSP均為基于Java的頁面技術,繼承了Java兼容性優良的特征。通過完善的頁面技術,實現了基于瀏覽器的客戶端界面。
在業務邏輯層采用與 Oracle完全兼容的 EJB技術與Oracle的 PL/SQL語言實現系統主體功能。EJB技術源于Java,具備了Java技術的全部技術優勢,是實現三層架構的主要技術手段之一,對圖書館的跨平臺特性提供了良好的解決方法。同時Oracle也提供了對于EJB技術的全面支持。
數據層采用Oracle的RDBMS實現數據庫體系。作為大型的RDBMS數據庫體系,Orcale不僅提供了完善的數據庫實現與管理技術,還提供了豐富的開發工具與數據庫組件,為綜合性數據庫體系提供了全面的技術支持。[4]
1.2 開發技術介紹
1.2.1 EAD的三層體系結構
企業應用程序設計(Enterprise Application Design EAD)是設計適應變化的應用程序的過程。EAD強調構建的應用程序可以與外部和內部進程順利集成,可以對其進行擴展,來反映商務內存在的不斷變化狀態,具有高的可用性。EAD設計思想可以將不同信息集成到一起。并且充分利用并服務于企業。EAD層次體系層次結構具有兩層體系結構、三層體系結構以及N層體系結構。
兩層體系結構的應用邏輯位于一個層,而數據訪問邏輯位于另一層。該模型強調在強大的后端數據庫服務器和駐留在告別左面的“胖”客戶之間實現計算能力的分割,如圖1所示:

圖1 兩層體系結構基本模型
采用兩層模型開發時具有可伸縮性差、兩層模型應用程序具有很高的隱藏費用、靈活性受專用開發工具的限制等局限性。
三層體系結構的邏輯劃分為演示層、業務邏輯層和數據層三個孑然不同的層。演示層為“瘦”客戶,不含任何業務邏輯,主要為用戶接口代碼、確定如何顯示數據的代碼,以及用戶導航和用戶輸入數據的規則。業務邏輯層包含應用程序全部業務邏輯,這些業務邏輯被劃分為若干程序模塊,對相關信息進行處理。數據層負責為業務邏輯層提供對數據庫的檢索與操縱的SQL執行,如圖2所示:

圖2 三層體系結構基本模型
三層體系結構具有一些獨到的優勢與實用性,其層與層之間僅有數據交換,使得開發技術與實現過程分離成為一種可能,特別是面向用戶的演示層開發不再需要專門的技術與平臺,滿足業務邏輯層的兼容規范即可。業務則采用單一服務器實現,數據層駐留在強大功能的數據服務器上,處理眾多數據檢索和操縱。并且代碼的可重用性也得到提高。三層體系結構雖然在部署時存在一些不足,例如,演示層依托Web技術與瀏覽器,其最終功能的實現局限于該項技術的發展;服務器相對集中,容易產生瓶頸現象。但社區圖書管理系統本質是簡易型數字圖書館系統[1],三層體系結構完全能夠滿足系統的需求。
1.2.2 JDBC (Java Data Base Connectivity)技術
Java是一個面向對象、平臺獨立的開發應用程序工具,具有獨立 GUI應用程序、運行在瀏覽器的小程序、服務器端應用程序等典型特征。Oracle從Oracle 8i開始引入Java,現在Java已經是Oracle Internet Platform一個必不可少的組件。Oracle對Java Virtual Machine提供了全面的技術支持與相應的開發平臺,實現了一個與 Java數據庫并排運行的JVM。
JDBC是一個編程接口標準,使Java程序能夠訪問和修改幾乎任何SQL數據庫中的數據。Oracle優化了JDBC對Oracle數據庫的數據訪問。瘦客戶(thin client)要求確定程序純粹用 Java編寫,而企業應用程序的中間層要求對后臺數據庫進行快速的本機代碼訪問。Oracle通過對JDBC驅動對此提供了較好的解決方案。
1.2.3 EJB (Enterprise JavaBean)技術
JavaBean是可以重復使用的Java組件,它經常作為幫助器類運行在 Web服務器中,或者作為模塊化組件運行在應用程序中。盡管 Enterprise JavaBean并不是直接由JavaBean發展來得,但它們在可移植性和模塊化方面是類似的。作為一種規范,EJB的原理基于它們是程序單元,從它們的運行環境請求某些服務,而不是實現服務本身。
1.2.4 利用CORBA和IIOP遠程方法調用(RMI)
遠程方法調用(Remote Method Invocation)是Sun公司為實現運行在不同機器上 JVM 之間通訊而制定的規范。RMI-IIOP是Sun與IBM共同實現的規范,允許Java程序通過RMI與作為潛在傳輸機制的Internet Inter-ORB Protocal(IIOP)共同操作。該協議專門為TCP/IP上的操作設計。
通用對象請求代理程序體系結構(Common Object Request Broker Architecture CORBA)是一個范圍更寬的規范,解決面向對象語言間的交互式通信問題。CORBA規范定義了Interface Definition Language(IDL),指定獨立進程空間中的對象如何通過IDL協議相互訪問。
1.2.5 Oracle JDeveloper集成開發環境
Oracle JDeveloper是Java、XML和Oracle的一個集成開發環境。本系統的開發工作均采用該環境完成。
本文作者在《基于 Oracle的社區數字圖書管理系統設計》(發表于《計算機光盤軟件與應用》2014年第01期)給出了社區數字圖書管理系統總體規劃的詳細分析,包括系統功能模塊圖、系統結構詳圖、數據庫設計等內容,本文只給出系統結構圖,如圖3所示:

圖3 社區數字圖書管理系統結構圖
社區圖書管理系統功能劃分為用戶服務系統和圖書館管理系統兩大模塊。用戶服務系統保證在線用戶各項在線圖書服務功能的實現,圖書館管理系統用于實現系統管理員對圖書館數據體系的管理與維護以及保證圖書館功能的實現。
本系統采用基于EJB技術的Oracle三層架構實現Web應用程序。Web應用服務器和數據庫服務器采用同一臺PC機,運行Oracle9iAS。由于篇幅所限,下面僅以業務邏輯層概要設計為例加以實現。由于業務邏輯層包含應用程序全部業務邏輯,因此是構建社區數字圖書館的最基礎內容,也是構建社區數字圖書館的核心。
3.1 業務邏輯層概要設計
本系統業務邏輯層將采用基于Oracle9iAS的EJB2.0組件來實現。由于圖書館具有眾多功能,這樣就需要為每個功能提供本地接口代碼和遠程接口代碼。如果編寫好業務邏輯層概要設計,將核心代碼定義包含其中,就可以使得業務邏輯層更加規范、可擴展性更強。
3.2.1 本地接口
本地接口定義的方法允許EJB客戶創建和查找EJB組件,對于各模塊的EJB本地接口的定義基本上包含下述核心代碼。接口中create()方法的返回類型是EJB的遠程接口。
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 遠程接口
遠程接口定義了EJB客戶將調用的企業bean的所有業務方法。所有業務方法均是 public的,并且必須引發RemoteException。對于各模塊的 EJB遠程接口的定義基本上包含下述核心代碼:
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 業務邏輯的實現
查詢子系統實現了圖書名稱查詢、圖書作者查詢、出版社與關鍵字查詢四種方式。現以圖書名稱查詢為例說明業務邏輯的實現。
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幾種不同架構系統優劣的基礎上,實現了基于EJB技術的社區數字圖書管理系統。本系統基于三層架構實現一個具有數字圖書管理、閱讀、下載,紙質圖書預約、郵購等功能的綜合在線圖書管理體系的基本功能,且具有安全可靠、易于維護和管理的特點。
[1] 王玉珍.文化大發展背景下的社區圖書館建設研究.四川圖書館學報[J].2013(01)60-63.
[2] 郭玲.基于 Oracle的社區數字圖書管理系統設計[J].計算機光盤軟件與應用,2014(1):55-58.
[3] 劉江平,倪小剛,李艷.基于MVC模式的ERP資源管理系統[J].內蒙古農業大學學報.2013(2):171-172.
[4] 賀亞茹.基于Oracle的音像租賃管理系統數據庫設計[J].電腦編程技巧與維護,2011(14):59-60.
[5] 海潘編著.軟件工程導論[M].第三版. 北京:清華大學出版社.1998.
[6] David Flanagan著.何鍵輝,張洛玲譯.Java實例技術手冊[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-),女,珠海城市職業技術學院成教學院,講師,雙學士,研究方向:計算機軟件,現代教育技術,珠海,519090