跨數據庫中間件在ERP中的應用
引言
世界由傳統型經濟向知識型經濟和網絡型經濟發展,信息化已成為大趨勢 ERP(Enterprise Resource Planning,企業資源計劃)在企業信息化中發揮了巨大作用。而隨著企業規模、結構變化,各種兼并或進入新業務領域,會遇到企業各部分分布異構情況,在這種環境中,通常存在多種硬件系統平臺、系統軟件、數據庫及多種風格各異的用戶界面,這就要求傳統的ERP軟件轉型以適應需要,但它們的應用和商業邏輯一般都是緊耦合的,改造難度很大。因此,為了實現內部邏輯與外部實現的松耦合結構,中間件技術的引入就十分必要,在跨數據庫的中間件應用技術上,提出數據訪問中間件的三層C/M/S fClient/Middleware/Server)體系結構。瀏覽器端程序要訪問數據庫,首先通過中間件。
然后由中間件對數據庫操作 該中間件位于服務器端,中間件對數據庫進行操作后,再將處理結果通過Web服務器返回到瀏覽器端用戶 通過中間件,客戶端應用程序開發工作量大大減輕 因為中間件可重復利用,只要掌握了中間件編程接口,就可以很容易利用中間件來訪問數據庫,或運行在網絡上的其它大型應用程序。
本文介紹利用J2EE技術實現中間件跨數據庫訪問的幾點應用。
1 中間件技術
1,1中間件的概念
中間件(middleware)是一種獨立的系統軟件或服務程序,分布式應用軟件借助這種軟件在不同的技術之間共享資源, 中間件位于客戶機服務器的操作系統之上,管理計算資源和網絡通信。中間件處于操作系統軟件和應用軟件之間。中間件在操作系統、網絡和數據庫之上,應用軟件的下層,主要作用就是為處于自己上層的應用軟件提供運行與開發的環境,幫助開發者靈活、高效地開發和集成復雜的應用軟件嘲
1,2中間件的分類
中間件大致可分為六大類:終端仿真/屏幕轉換中間件、數據訪問中間件、遠程過程調用中間件、消息中間件、交易中間件、對象中間件。由于中間件要屏蔽各類應用軟件和網絡協議與操作系統之間的異構問題,所以它必須能夠提供分布系統環境下的通信服務,在這里,將這種通信服務稱為平臺。基于功能和實現機制的不同,平臺分為以下幾類:① 遠程過程調用中間件(Remo~ Procedure Cal1); ② 面向消息的中間件(Message Oriented Middleware);③面向對象請求代理中間件(Object Request Brokers);④ 事務處理監控(Transaetion Processing Monitors)。
1,3中間件的特點
中間件屏蔽了底層操作系統復雜性,減少了程序設計復雜性,使程序開發人員面對簡單而統一的開發環境,將注意力集中在自己業務上,不必再為程序在不同系統軟件上移植而重復工作,減少了技術上的負擔。中間件帶給應用系統的不只是開發簡單、開發周期縮短,也減少了系統維護、運行和管理工作量及計算機總體費用投入。隨著研究深入和應用普及,已形成了中間件標準化規范或產品。如CORBA、DCOM、J2EE都成為著名的業界標準規范 其中美國Sun公司的J2EE規范,目標是提供與平臺無關、可移植、支持并發訪問和安全的,完全基于Java的開發服務器端中間件的標準。它具有完整的基于Java語言開發、面向企業發布的應用規范, 包括Javaservlet、JSP(JavaServerPage)、EJB等多種形式,以支持不同業務需求
2 采用J2EE進行C/M/S結構設計和跨數據庫訪問
2,1基于J2EE的C/M/S體系結構
J2EE(Java 2 Platform,Enterprise Edition)是Sun公司推出的一種全新的概念模型,與傳統互聯網應用程序模型相比具有不可比擬的優勢 J2EE是一種利用Java2平臺簡化諸多與多級企業解決方案的開發、部署和管理相關的復雜問題的體系結構 J2EE技術的基礎是核心Java平臺或Java2平臺標準版,不僅鞏固了標準版中許多優點,例如“一次編寫,到處運行”(Write once,l'un anywhere)的特性、方便存取數據庫的JDBC,CORBA技術以及能夠在[nternet應用中保護數據的安全模式等,同時還提供EJB (Enterprise Java Beans),Servlet。JSP(JavaServerPages)以及XML等技術的全面支持。J2EE體系結構如圖1所示

圖1 J2EE的體系結構
J2EE是一種全新概念的多層分布式應用平臺,通過提供企業計算環境所必須的各種服務,使部署在J2EE平臺上的C/M/S三層體系結構實現高可用性、安全性、可擴展性和可靠性。C/M/S體系結構的優劣會直接制約整個企業信息共享、運行管理以及經營決策:必須要滿足3個目標:
(1)系統必須具有高可擴展性,可維護性。由于企業經營中不確定因素很多,經常導致新的功能需求不斷變化。這就要求系統具有很高可擴展性,以滿足新功能添加。
(2) 實現企業管理的3A (Anyone,Anywhere,Anyway)。即可以通過本系統的使用達到任何人在任何地方以任何方式了解和參與企業運營管理。
(3)最大范圍內節約系統的開發成本。企業的最終目的是以最小的成本獲得最多的投資回報。因此,系統開發成本直接影響著企業的利潤。
2,2基于J2EE的跨數據庫訪問體系結構設計
應用軟件進行跨數據庫開發或移植困難,主要是由數據庫異構性引起的數據庫操作語言不一致所造成。應用軟件數據操作語言都是針對特定的數據庫,直接調用相關的JDBC程序來完成數據庫操作,無法使用統一的數據操作語言來操縱多種異構數據庫,造成應用軟件在異構數據庫間移植困難 本文主要研究屏蔽異構數據庫操作語言差異的中間件JUBD (Java UniverseData Base Manage system),實現應用軟件進行跨數據庫移植,在異構數據庫之間進行數據快速轉換。JUBD是在JDBC與應用程序之間的一層,它屏蔽異構數據庫不同的JDBC之間的差異,應用程序只需使用標準數據庫操作語言,JUDB就可以將其轉換為針對不同數據庫的SQL操作語言,樣開發人員只需了解標準的SQL語言,而不需要記住各數據庫操作語言的特性系統采用三層結構,劃分為:表示層(客戶機)、業務邏輯層(應用服務器)、數據存儲層(數據庫服務器)。
在方案中,用戶發出標準化的SQL語言進行跨數據庫操作 通過解析測試器完成對SQL字符串解析及查找錯誤的操作,進而得到一個語句對象。該語句對象由管理器進一步轉換,將語句對象中的屬性值提取重新組合成SQL語句,使原本符合標準SQL操作語言的字符串,轉變成可以為實際關系型數據庫系統處理的數據結構,再通過數據庫連接池獲得相應數據庫系統的JDBC接13,執行重組后的SQL語句并返回執行結果。
為了保證可靠安全地傳輸數據,在每個數據庫服務器上創建一個信息處理隊列管理器,承擔信息收發實際工作:另外,在其中任一臺應用服務器上再添加一個額外的路由隊列管理器作為信息路由點,避免路由點的單點故障:在另外一臺應用服務器上也創建一個路由隊列管理器備份,確保路由點不會出現單點故障,當其發生意外故障時,由另一臺應用服務器上的路由隊列管理器實現自動接管和切換:結構如圖2所示

圖2 中間件部署方式
3 跨數據庫訪問的實現
通常在程序中用到的SOL語言基本都是對數據庫的增刪改操作, 還有CREATE TABLE、DROP TABLE、ALTER TABLE操作。應用程序通過JUDB提供的一組對外接El執行SQL語句。
DBPEER是JUDB提供的一個專門對外的接口模塊,其功能主要是實現數據庫操作。它通過一個類的靜態模塊來初始化系統配置(JUOBKERNEL,INIT),并獲得各項配置信息 DBPEER提供四種SQL語句接13,應用軟件通過這四種接13操作數據源 同時,DBPEER也開放直接與JDBC通訊的接口,用戶可以通過這些接口將一些目前JUBD還未支持的SQL語句提交給JDBC,由數據庫系統直接處理。方法如下:
(1)executeDelete(String deleteSQL),exeeuteDelete(String deleteSQL,String dbname)函數功能:為刪除記錄,這兩個方法是為在指定或缺省的數據源執行“Delete"語句,人口參數為執行delete語句的標準SQL語句,例如“delete from table where col==value”,還有重載方法的參數為數據庫名。例如“Orae1e” 若是沒有指定數據庫名,系統會根據配置文件來自動獲得
(2)executelnsert (String insertSQL),executelnse(String insertSQL,String dbname)函數功能:在指定或缺省的數據源執行一條插入語句,并且如果所操作表為自增主鍵表,則返回新增記錄的主鍵值
(3)excuteSelect (String selectSQL),executeSelect(String selectSQL,String dbname)函數功能:在指定或缺省的數據源執行一條查詢語句,同時返回結果集
(4)exeeuteUpdate(String updateSQL),executeUpdate(String updateSQL,Stringdbname)i~i數功能:在指定或缺省數據源執行一條更新語句。
(5)executeQuery(String queryString),executeQuery(String queryString,Stringdbname)函數功能:在指定或缺省的數據源,執行一條非LSQL標準的查詢語句。
(6)executeStatement(String stmt),executeStatement(String stmt,Stringdbname)函數功能:在指定或缺省的數據源,執行一條非LSQL標準的插入、刪除、更新語句。
(7)executeCreate(String createSQL),Public static boolean executeCreate (String createSQL, String dbname)函數功能:在指定或缺省的數據源,執行一條創建表語句。
(8)executeDrop (String dropSQL),executeDrop(String dropSQL,String dbname)函數功能:在指定或缺省的數據源,執行一條表刪除語句應用軟件可以調用以上方法來操作異構數據庫DBPEER提供所有SQL語言轉換功能 當一個外部應用調用JUDB的DBPEER中的方法時,無需考慮數據庫特性,只需應用標準LSQL語言:且DBPEER對外提供非常豐富的函數,可執行各種SQL操作
4 結束語
中間件發展日趨成熟,為計算機網絡發展注入了新鮮血液 中間件簡化了應用程序開發難度,提高了軟件開發可重復性,節省資源配置,解決了大部分操作系統與應用軟件之間異構問題,使分布式結構體系得到推廣和發展 本文從運用中間件建立三層體系結構著手,介紹了中間件和三層體系結構特點,提出了在跨數據庫系統中的應用方式。同時,設計了一個基于J2EE的解決異構數據庫互操作問題的中間件方案,具有很強靈活性,并有很高的可擴展性和可重用性。