摘 要:針對在ODI中手動啟動Agent的方法復(fù)雜、繁瑣,對于需要全天運行的ODI數(shù)據(jù)集成項目來說非常不方便,需要大量的人工干預(yù),本文提出了使用開源工具YAJSW(Yet Another Java Service Wrapper)將ODI Agent發(fā)布為Windows服務(wù),直接在Windows的服務(wù)窗口中實現(xiàn)對所發(fā)布的Agent進行啟停和系統(tǒng)重啟后服務(wù)的自動啟動。
關(guān)鍵詞:YAJSW;ODI;Agent;Windows服務(wù)
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A
1 引言(Introduction)
高校信息化不斷發(fā)展的過程中,數(shù)據(jù)集成技術(shù)也有了進一步的發(fā)展,高校信息化水平的提高也促使各個應(yīng)用系統(tǒng)之間的數(shù)據(jù)需求變得越來越頻繁,企業(yè)數(shù)據(jù)集成技術(shù)也有了很大發(fā)展,各種集成方案不斷涌現(xiàn),在一定程度上促進了數(shù)據(jù)集成在高校的進一步發(fā)展[1]。
ODI[2](Oracle Data Integrator)是Oracle公司推出的一個功能強大的數(shù)據(jù)集成平臺。從技術(shù)角度來看,ODI本身是一種開放的架構(gòu),支持幾乎所有目前流行的關(guān)系數(shù)據(jù)庫,同時由于其本身是Java開發(fā)的產(chǎn)品,可以跨Windows、Unix平臺,同時還能與中間件融合,且可以融合到整個IT架構(gòu)中。
目前我校已基于ODI技術(shù),在學(xué)校層面上搭建了一個公共數(shù)據(jù)平臺,對多種異構(gòu)數(shù)據(jù)源,比如人事數(shù)據(jù)庫、教務(wù)數(shù)據(jù)庫、就業(yè)數(shù)據(jù)庫等多種異構(gòu)數(shù)據(jù)源進行了集成工作,建立了校級的共享數(shù)據(jù)中心[3]。
在我校ODI項目的具體實施過程中,對于已經(jīng)開發(fā)好的集成項目,在ODI 10g中,是使用ODI提供的Agent Service方法將Agent發(fā)布為Windows的系統(tǒng)服務(wù),而將ODI升級到11g后,不再免費提供這一功能,所以我們使用開源工具YAJSW來完成。
2 關(guān)鍵技術(shù)(Key technology)
2.1 ODI Agent
ODI(Oracle Data Integrator)是Oracle公司推出的一個基于“ELT(Extraction、Transformation、Loading、數(shù)據(jù)抽取、轉(zhuǎn)換和加載)[4]”架構(gòu)的數(shù)據(jù)加載工具和數(shù)據(jù)整合開發(fā)平臺,在不同信息系統(tǒng)或者數(shù)據(jù)庫之間做數(shù)據(jù)傳輸和轉(zhuǎn)換。ODI的特點主要體現(xiàn)在以下兩個方面:
(1)ODI是服務(wù)驅(qū)動的模式,也可以理解為商業(yè)驅(qū)動的模式,它更多關(guān)注怎樣符合業(yè)務(wù)規(guī)則,而不是把開發(fā)精力集中在技術(shù)層面。
(2)ODI在數(shù)據(jù)整合過程中,它自己本身不執(zhí)行數(shù)據(jù)整合的處理,所有的執(zhí)行都是在現(xiàn)有的信息系統(tǒng)或者數(shù)據(jù)庫中完成,直接把源數(shù)據(jù)在內(nèi)存中加載在目標(biāo)數(shù)據(jù)庫以后再進行轉(zhuǎn)換。
ODI集成了很多數(shù)據(jù)庫的組件,可以充分利用數(shù)據(jù)庫的功能進行異構(gòu)數(shù)據(jù)庫或者同構(gòu)數(shù)據(jù)庫之間的數(shù)據(jù)遷移,從而性能得到極大的提高。
Agent(代理)是ODI的一個運行時組件,ODI執(zhí)行時,是通過調(diào)度Agent去執(zhí)行打包好的項目(Scenarios)。這個調(diào)度Agent可以安裝在任何支持J2SE的平臺,Windows、Linux、HP-UX等。這個調(diào)度通常是我們從多源端的數(shù)據(jù)做提取時,安裝在源端的服務(wù)器上。這些執(zhí)行任務(wù)可以從任何一個界面模型發(fā)出,比如拓?fù)涔芾砥鳎═opology Manager)或者設(shè)計器(Designer),也可以創(chuàng)建一個調(diào)度任務(wù)來定期執(zhí)行或者第三方調(diào)度程序來觸發(fā)。
開發(fā)者在ODI的拓?fù)洌═opology)定義實際的JDBC(Java Database Connectivity)連接后,在Designer完成數(shù)據(jù)設(shè)計時,調(diào)度Agent只是從運行的資料庫接受相應(yīng)代碼,然后要求相應(yīng)的數(shù)據(jù)庫服務(wù)器、操作系統(tǒng)、腳本引擎去執(zhí)行代碼。在執(zhí)行完成以后,調(diào)度Agent會更新資料庫的執(zhí)行日志(Execution Logs),并且報告錯誤信息和執(zhí)行統(tǒng)計信息。開發(fā)人員或用戶可以通過操作器(Operator)或者元數(shù)據(jù)導(dǎo)航器(Metadata Navigator)Web接口來查看執(zhí)行日志,判斷執(zhí)行的過程是否符合設(shè)計的要求或者進行診斷。如圖1所示。
2.2 Windows 服務(wù)
使用Microsoft Windows服務(wù)[5](即以前的NT服務(wù))能夠創(chuàng)建在它們自己的Windows會話中可長時間運行的可執(zhí)行應(yīng)用程序。這些服務(wù)可以在計算機啟動時自動啟動,可以暫停和重新啟動而且不顯示任何用戶界面。這些功能使服務(wù)非常適合在服務(wù)器上使用,每當(dāng)需要使用不會影響在同一臺計算機上工作的其他用戶的功能時也適用,還可以在不同于登錄用戶的特定用戶賬戶或默認(rèn)計算機賬戶的安全上下文中運行服務(wù)。
2.3 YAJSW
YAJSW(Yet Another Java Service Wrapper)是一個開源的Java服務(wù)包裝(Java Service Wrapper)工具,它允許開發(fā)人員把任何程序安裝為Windows的服務(wù)或者作為一個Linux Posix的守護進程進行監(jiān)控。YAJSW不僅可以通過JNLP(Java Network Launching Protocol,Java網(wǎng)絡(luò)加載協(xié)議)文件讀取配置信息,也可以從遠(yuǎn)程包裝配置信息文件中讀取配置信息,對于那些在多臺服務(wù)器上運行相同的Java應(yīng)用,又想避免繁瑣的配置文件復(fù)制的開發(fā)人員來說,YAJSW是一個相當(dāng)方便的解決方案。
3 部署配置(Deployment and configuration)
3.1 前提配置
在運行YAJSW前,首先需要確認(rèn)ODI安裝目錄下的\agent\bin\odiparams.bat文件是否配置正確。odiparams.bat文件定義了ODI Agent啟動的環(huán)境信息,包括工作資料庫和主存儲庫的JDBC DRIVER類型、連接地址、用戶名、ENCODE后的登錄密碼等,ODI Agent啟動運行后就是根據(jù)這些參數(shù)運行的,所以在發(fā)布為服務(wù)時會用到此文件中定義的參數(shù)。一般在安裝ODI時就會要求進行此文件的配置修改,所以這里的話,只需要修改其中ODI_SECU_ENCODED_PASS參數(shù)的值,其他的參數(shù)只需確認(rèn)無誤即可。ODI_SECU_ENCODED_PASS參數(shù)的值是通過在Windows命令窗口使用命令:encode
完成odiparams.bat文件的修改后,再使用命令:agent–NAME=
3.2 部署配置YAJSW
以下操作以發(fā)布localagent為例進行說明。
首先,下載YAJSW并解壓。本文以%YAJSW%表示YAJSW的安裝目錄,YAJSW的所有命令均位于%YAJSW%\bat下。
按如圖3所示的方法確認(rèn)測試Agent成功。然后在任務(wù)管理器中查看Agent的進程pid,如圖4所示。
配置文件生成后,停止Agent的運行。然后打開wrapper.conf文件進行編輯,完成Windows服務(wù)相關(guān)命名的設(shè)置,主要是修改以下參數(shù):
(1)wrapper.console.title:控制臺標(biāo)題。
(2)wrapper.ntservice.name:服務(wù)名稱。
(3)wrapper.ntservice.displayname:服務(wù)顯示名稱。
(4)wrapper.ntservice.description:服務(wù)描述。
保存所有修改后,執(zhí)行runConsole.bat命令,啟動已配置好的wrapper.conf,如圖6所示。
然后按圖3所示的方法測試代理是否成功。代理測試成功后,另開一個Windows命令窗口,執(zhí)行installService.bat命令,將服務(wù)發(fā)布到Windows系統(tǒng)服務(wù)里,如圖7所示。
這時,可以再按圖3所示的方法測試代理是否成功。
需要注意的是,每次生成的配置文件,默認(rèn)都是命名為wrapper.conf,而一個數(shù)據(jù)集成項目,一般需要發(fā)布的代理都不止一個,所以最好在配置文件生成后,就對其進行重命名,以免配置下一個代理時文件被覆蓋。重命名后,還需要修改注冊表中對應(yīng)的ImagePath的值。以發(fā)布localagent為例,可以將配置文件重命名為localagent.conf,然后打開注冊表,展開分支\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\localagent,修改ImagePath的參數(shù)為“-Dwrapper.config=C:\yajsw-stable-11.03\conf\localagent.conf”,這樣服務(wù)啟動后才會尋找localagent.conf配置文件。
4 結(jié)論(Conclusion)
在WinServer2003、WinServer2008平臺下,使用開源工具YAJSW將ODI Agent注冊為Windows服務(wù)后,以后對數(shù)據(jù)集成項目的運行就可以直接在服務(wù)窗口中進行啟動和終止,而且每次系統(tǒng)重啟后,服務(wù)會自動啟動運行,不要人工干預(yù),而項目作廢時也可以通過其中的uninstallService.bat卸載服務(wù),非常方便。
參考文獻(xiàn)(References)
[1] 李建花.面向校園網(wǎng)的高校數(shù)據(jù)集成方案的研究與應(yīng)用[D].
濟南大學(xué),2011.
[2] 武興悅,石麗梅,王鋼.基于ODI的應(yīng)急數(shù)據(jù)交換、共享平臺
的研究與實現(xiàn)[J].計算機與數(shù)字工程,2009,37(9):89-91.
[3] 孫瑋.基于ODI技術(shù)搭建高校數(shù)字化校園公共數(shù)據(jù)平臺[J].軟
件工程師,2014(07):56-57.
[4] 劉劍君.基于Oracle數(shù)據(jù)集成工具的數(shù)據(jù)回流系統(tǒng)設(shè)計與實
現(xiàn)[D].西安.西安電子科技大學(xué),2009.
[5] 楊玫,劉瑜,趙秀麗.基于.NET的Windows服務(wù)開發(fā)技術(shù)研究
[J].信息技術(shù),2014(09):205-208.
作者簡介:
孫 瑋(1983-),女,碩士,工程師.研究領(lǐng)域:網(wǎng)絡(luò)信息系統(tǒng).