《電子技術應用》
您所在的位置:首頁 > 其他 > 业界动态 > 基于内容管理中间件的Java应用系统

基于内容管理中间件的Java应用系统

2009-01-06
作者:王肖锋,曹作良

??? 隨著Internet技術的成熟和普及,企業(yè)的商業(yè)信息來源遠超出了傳統(tǒng)數(shù)據(jù)庫的形式,如財務報表、辦公文檔、掃描的圖片、電子郵件、音頻和視頻等。如何對這些“非結構化”信息即“內容”進行有效的數(shù)字化管理,將成為繼“數(shù)據(jù)管理”之后用戶的一個新需求[1]。同時企業(yè)應用系統(tǒng)模式逐步向網(wǎng)絡化、分布式、移動性及各種業(yè)務系統(tǒng)集成的方向轉變。為了滿足用戶新的需求和適應企業(yè)應用系統(tǒng)的這種轉變,采用中間件技術、Java技術及J2EE多層次應用體系結構,建立在有效內容管理基礎上的企業(yè)應用基礎平臺,已成為目前企業(yè)信息系統(tǒng)建設的主流。中間件位于操作系統(tǒng)、網(wǎng)絡和數(shù)據(jù)庫之上,應用軟件的下層,是為了給上層應用軟件提供開發(fā)和運行環(huán)境,幫助用戶快速、靈活、有效地開發(fā)和集成復雜的應用軟件。根據(jù)中間件在系統(tǒng)所起的作用及采用的技術不同,中間件可以分為5類。其中數(shù)據(jù)庫中間件是在所有中間件中的應用最廣泛、技術最成熟的一種[2]。把Web服務和高效的數(shù)據(jù)庫管理系統(tǒng)的數(shù)據(jù)服務結合在一起,可以組成大型的多媒體數(shù)據(jù)庫管理系統(tǒng)。它能夠使數(shù)據(jù)庫管理系統(tǒng)達到最優(yōu)化,并且為Web應用提供開發(fā)環(huán)境和網(wǎng)絡服務功能。

1.內容管理中間件?

??? 內容管理中間件是用來實現(xiàn)客戶端與數(shù)據(jù)庫之間的通信。它同時存在于客戶端和服務端,負責客戶/服務器間透明的請求和應答交換。其內容生命周期包括:內容生成負責內容生成/更新,協(xié)作以及檢查/批準;內容管理負責內容權限設置,版本控制和存取控制;內容發(fā)布/傳送負責針對特定輸出設備或目標用途進行定制??傊?,基于網(wǎng)絡的內容管理中間件不單具有一般數(shù)據(jù)庫中間件功能,完成對數(shù)據(jù)庫操作的封裝,而且還能提供Web服務,完成對非操作型互聯(lián)網(wǎng)頁面內容的生成、組織、傳送和維護。

1.1.內容管理中間件的功能?

?? ?內容管理中間件是一種把網(wǎng)絡的內容管理和數(shù)據(jù)庫管理系統(tǒng)的數(shù)據(jù)服務相結合的中間件。該中間件包括dao、util、dm、bs 4個包,分別為數(shù)據(jù)訪問對象包、方便客戶端訪問工具包、數(shù)據(jù)管理包和業(yè)務邏輯包。dao包負責業(yè)務邏輯與數(shù)據(jù)庫的鏈接,對數(shù)據(jù)庫表存取數(shù)據(jù),并進行數(shù)據(jù)格式的轉換。dao包中的方法可以由bs包中的業(yè)務邏輯調用,它是直接與數(shù)據(jù)庫進行轉換的唯一接口。DBSessionManager類負責與數(shù)據(jù)庫的連接及數(shù)據(jù)訪問,并負責數(shù)據(jù)格式的轉換,如GB2312碼與ISO8859的轉換;DBHandler類負責數(shù)據(jù)庫的配置,如數(shù)據(jù)庫所在服務器的名稱,訪問數(shù)據(jù)庫的用戶名和密碼,數(shù)據(jù)庫的端口號等。

??? 內容管理中間件具有以下基本功能:

1)??分布式事務處理:CMM應用程序框架提供Web應用所應有的最底層結構,它分為三個獨立的層次:表示層、商務層、數(shù)據(jù)層。利用它只需向框架中加入一個應用程序對象和一系列表示層、商務層、數(shù)據(jù)層對象即可搭建一個應用程序系統(tǒng)。

2)??直接訪問數(shù)據(jù)庫:就像訪問本地數(shù)據(jù)庫一樣,它支持SQL語言的關系數(shù)據(jù)庫。

3)??集成和開發(fā)工具:為用戶提供了大型關系數(shù)據(jù)庫與網(wǎng)絡應用軟件以及企業(yè)內部或外部的其他商務應用軟件的集成能力。

4)??存取權限控制(AccessControl):為用戶提供了“加鎖”和“解鎖”的功能。每個用戶每次只能存取數(shù)據(jù)庫中的一個“記錄(record)”。

5)??工作流程(Workflow)管理:工作流程管理方便了內容創(chuàng)建,編輯,審核以及應用人員間的交流。每一個合格的“記錄(record)”必須要依次通過所有審批環(huán)節(jié)。

6)??動態(tài)內容管理(DynamicContent):動態(tài)內容管理是指頁面內容可以持續(xù)更新,以實現(xiàn)動態(tài)跟蹤最新新聞或信息,從而吸引更多新的瀏覽者和已有的瀏覽者的關注。

1.2內容管理中間件的實現(xiàn)?

??? 下面以dao數(shù)據(jù)訪問對象包為例來說明中間件的實現(xiàn)。中間件的目標就是要實現(xiàn)一個與數(shù)據(jù)庫的通用接口,同時該層次的設計要滿足獨立于數(shù)據(jù)庫具體設計實現(xiàn)。我們使用兩個管理層次上的BMP 實體Bean完成對數(shù)據(jù)庫的管理,一個管理數(shù)據(jù)庫中的各個用戶表,另外一個管理相應表格中的各個紀錄。下面是對管理數(shù)據(jù)庫中的用戶表的實現(xiàn)。

??? Table遠程接口繼承了javax.ejb.EJBObject,客戶端通過Bean管理數(shù)據(jù)庫中的用戶表時操作這個接口。定義了以下4個方法:

? ??? public abstract FieldDescriptor getFieldDescriptor(String s)?

? ??? public abstract Set getFieldNames()?

??? public abstract Set getPKFieldNames()? ?

??? public abstract String getTableName()?

TableHome接口繼承了javax.ejb.EJBHome,該接口由EJB容器的工具來實現(xiàn)。定義了基本的查詢方法如下:

? ??? public abstract Collection findByPattern(String s)

??? public abstract Table findByPrimaryKey(String s)

??? public abstract Table findByTableName(String s)

TableBean作為BMP的實體Bean,數(shù)據(jù)持久性都是自己手工管理的。EJB裝載時首先得到數(shù)據(jù)庫連接的對象(java.sql.Connection對象),使用該對象得到指定數(shù)據(jù)庫的DatabaseMetaData類對象,然后使用DatabaseMetaData類對象得到EJB主鍵(表格名稱)指定的表格的主鍵(PrimaryKey字段)。在TableBean中定義了3個查詢方法:

public String ejbFindByTableName(String s)

public String ejbFindByPrimaryKey(String s)

public Collection ejbFindByPattern(String s)

??? 表名稱作為TableBean的主鍵,因此前兩個方法是一樣的,它可以根據(jù)數(shù)據(jù)庫內惟一的主鍵值找到惟一的實體Bean的實例。第三種方法則得到多個表格的名稱,考慮到主鍵字段不一定唯一,使用Java容器類型變量存放主鍵字段和字段描述。

2.基于J2EE的遠程教學系統(tǒng)?

2.1 系統(tǒng)架構?

??? 遠程教學系統(tǒng)的一個突出特點是將人員信息、教學資源甚至系統(tǒng)軟件資源全部納入數(shù)據(jù)庫管理之中。依靠內容服務器的支持,對所有信息資源進行便捷有效的管理,尤其是作業(yè)和考試的數(shù)據(jù)庫的實現(xiàn)。這樣可以克服單純依靠電子郵件來實現(xiàn)的種種弊端。使用CMM可以方便地構建多層體系結構,多層應用模式的使用,給系統(tǒng)帶來更好的維護性、可擴展性。在多層應用結構中,CMM可以緊密地融合到系統(tǒng)中,開發(fā)人員可以更加容易使用開發(fā)平臺和開發(fā)工具,給系統(tǒng)帶來更多性能的提高。

??? CMM在整個遠程教學系統(tǒng)的位置如圖1。它由以下3個核心組件構成:ServiceManager,Modeler,和Wrap。ServiceManager其功能類似于一個數(shù)據(jù)庫管理者(DBA),提供了一個友好的網(wǎng)絡界面以實現(xiàn)終端用戶與數(shù)據(jù)庫的交流。Modeler內置了所有數(shù)據(jù)庫操作邏輯,主要包括存取控制,工作流程控制等。Wrap它是可以與數(shù)據(jù)庫直接對話的EJB組件,描述了數(shù)據(jù)庫的基本單元——表和記錄,它還可以集成企業(yè)已有關系型數(shù)據(jù)庫。該系統(tǒng)采用符合J2EE技術規(guī)范的多層結構的B/S應用模式。系統(tǒng)邏輯上分為4個層次:客戶層、Web服務層、應用邏輯層和數(shù)據(jù)層??蛻魧迂撠熑藱C用戶的輸入信息、請求服務器服務和顯示服務器端返回的結果。Web服務層負責接受客戶端的請求、調用EJB進行業(yè)務邏輯處理及通過JDBC直接訪問后臺存儲系統(tǒng)。應用邏輯層主要進行業(yè)務邏輯處理和系統(tǒng)級服務以及與Servlet/Jsp通信及后臺的數(shù)據(jù)庫通信。數(shù)據(jù)層負責數(shù)據(jù)的存儲和組織、數(shù)據(jù)庫的分布式管理和數(shù)據(jù)庫的備份與同步[3],[4]。

2.2 系統(tǒng)特點?

1)??客戶端零維護。整個系統(tǒng)完全基于Java語言來實現(xiàn),所有應用程序運行在服務器端,客戶端通過瀏覽器來執(zhí)行應用程序。

2)??平臺無關性。由于Java語言和J2EE標準的平臺無關性,因此使用該中間件的遠程教學系統(tǒng)可以方便實現(xiàn)平臺的遷移,減少系統(tǒng)的運行成本。

3)??開放的標準和開放的結構使其易與其他應用軟件,中間件以及不同體系結構進行集成。通過J2EE平臺的豐富的系統(tǒng)功能,如:JDBC、JTA、JMS、JNDI、CORBA等,可與幾乎所有關系數(shù)據(jù)庫和現(xiàn)有業(yè)務應用系統(tǒng)進行無縫連接。

4)??跨操作系統(tǒng)、跨異構數(shù)據(jù)庫、跨應用服務器。

2.3 在分布式系統(tǒng)中Web(其他Java)應用 ?

??? 在web應用程序中可以直接使用DBSessionManager類的對象來獲取表格,得到數(shù)據(jù)以及對他們進行修改刪除等數(shù)據(jù)操作。而這時數(shù)據(jù)庫的連接、安全、事務、持久等特性都是透明的,用戶不必管理數(shù)據(jù)庫的連接池,不必手工查詢和處理。由于CMM和WEB應用配置在同一臺計算機上,所以使用RMI-IIOP訪問遠程對象對用戶來說也是透明的。

??? 獲取遠程對象的方法如下所示:

Properties env = new Properties();

??????? env.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");

??????? env.setProperty("java.naming.provider.url", "localhost:1099");

??????? env.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");

??????? try {

??????????? Context initial = new InitialContext(env); 得到對配置系統(tǒng)的服務上下文環(huán)境

??????????? Object objref = initial.lookup("wrap");?

??????????? DBSessionHome home = (DBSessionHome) PortableRemoteObject.narrow (objref, DBSessionHome.class);? 使用wrap的jndi名獲取遠程對象的home接口的引用

??????????? dbs = home.create();? 獲取對Ejb的遠程對象接口(EjbObject接口)的引用

??????? } catch (Exception ex) {

??????????? System.err.println("Caught an unexpected exception!");

??????????? ex.printStackTrace();

??????? }

其中l(wèi)ocalhost需要換成目標主機的地址/機器名/域名。

??? DBSession是配置與服務器中負責和服務器中實體Bean通訊的會話Bean,它使用實體 Bean的local接口管理實體bean所代表的數(shù)據(jù),接受客戶端請求,并使用對應實體Bean的業(yè)務方法給客戶端適當?shù)姆答?。因此,DBSession可以看成對實體Bean的封裝。

3.結論?

??? 目前,基于網(wǎng)絡的內容管理技術和數(shù)據(jù)庫中間件技術已經(jīng)成為企業(yè)應用系統(tǒng)的核心技術。該中間件產(chǎn)品已用于天津市科技攻關項目“高等職業(yè)遠程教育信息服務系統(tǒng)軟件平臺”開發(fā)了遠程教育平臺軟件,并將在中歐國際合作項目高等職業(yè)遠程教育項目中進行完善。該中間件在遠程教學系統(tǒng)的運行中能滿足應用要求,使得遠程教學平臺具有較高的安全性、可擴展性和開放性,有利于系統(tǒng)的維護和升級,還能整合遠程教學系統(tǒng)現(xiàn)有業(yè)務,降低系統(tǒng)更新成本。

參考文獻?

[1] 史寶慧,麥中凡. 從數(shù)據(jù)管理到內容管理--企業(yè)門戶核心技術研究. 計算機工程與應用, 2001,37(17)-143-146.?

[2] 李維宏,徐如志. 中間件技術及其發(fā)展動態(tài). 微計算機應用,2002,23(3)-138-141.?

[3] Subrahmany Allamaraju. J2EE服務器端高級編程[M]. 北京:機械工業(yè)出版社,2001.?

[4] Rahim Adatia. EJB編程指南[M]. 北京:電子工業(yè)出版社,2000.?

本站內容除特別聲明的原創(chuàng)文章之外,轉載內容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯(lián)系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。