使用开源工具YAJSW将ODI Agent发布为Windows系统服务

2015-05-30 17:30孙玮
软件工程 2015年2期

摘 要:针对在ODI中手动启动Agent的方法复杂、繁琐,对于需要全天运行的ODI数据集成项目来说非常不方便,需要大量的人工干预,本文提出了使用开源工具YAJSW(Yet Another Java Service Wrapper)将ODI Agent发布为Windows服务,直接在Windows的服务窗口中实现对所发布的Agent进行启停和系统重启后服务的自动启动。

关键词:YAJSW;ODI;Agent;Windows服务

中图分类号:TP311 文献标识码:A

1 引言(Introduction)

高校信息化不断发展的过程中,数据集成技术也有了进一步的发展,高校信息化水平的提高也促使各个应用系统之间的数据需求变得越来越频繁,企业数据集成技术也有了很大发展,各种集成方案不断涌现,在一定程度上促进了数据集成在高校的进一步发展[1]。

ODI[2](Oracle Data Integrator)是Oracle公司推出的一个功能强大的数据集成平台。从技术角度来看,ODI本身是一种开放的架构,支持几乎所有目前流行的关系数据库,同时由于其本身是Java开发的产品,可以跨Windows、Unix平台,同时还能与中间件融合,且可以融合到整个IT架构中。

目前我校已基于ODI技术,在学校层面上搭建了一个公共数据平台,对多种异构数据源,比如人事数据库、教务数据库、就业数据库等多种异构数据源进行了集成工作,建立了校级的共享数据中心[3]。

在我校ODI项目的具体实施过程中,对于已经开发好的集成项目,在ODI 10g中,是使用ODI提供的Agent Service方法将Agent发布为Windows的系统服务,而将ODI升级到11g后,不再免费提供这一功能,所以我们使用开源工具YAJSW来完成。

2 关键技术(Key technology)

2.1 ODI Agent

ODI(Oracle Data Integrator)是Oracle公司推出的一个基于“ELT(Extraction、Transformation、Loading、数据抽取、转换和加载)[4]”架构的数据加载工具和数据整合开发平台,在不同信息系统或者数据库之间做数据传输和转换。ODI的特点主要体现在以下两个方面:

(1)ODI是服务驱动的模式,也可以理解为商业驱动的模式,它更多关注怎样符合业务规则,而不是把开发精力集中在技术层面。

(2)ODI在数据整合过程中,它自己本身不执行数据整合的处理,所有的执行都是在现有的信息系统或者数据库中完成,直接把源数据在内存中加载在目标数据库以后再进行转换。

ODI集成了很多数据库的组件,可以充分利用数据库的功能进行异构数据库或者同构数据库之间的数据迁移,从而性能得到极大的提高。

Agent(代理)是ODI的一个运行时组件,ODI执行时,是通过调度Agent去执行打包好的项目(Scenarios)。这个调度Agent可以安装在任何支持J2SE的平台,Windows、Linux、HP-UX等。这个调度通常是我们从多源端的数据做提取时,安装在源端的服务器上。这些执行任务可以从任何一个界面模型发出,比如拓扑管理器(Topology Manager)或者设计器(Designer),也可以创建一个调度任务来定期执行或者第三方调度程序来触发。

开发者在ODI的拓扑(Topology)定义实际的JDBC(Java Database Connectivity)连接后,在Designer完成数据设计时,调度Agent只是从运行的资料库接受相应代码,然后要求相应的数据库服务器、操作系统、脚本引擎去执行代码。在执行完成以后,调度Agent会更新资料库的执行日志(Execution Logs),并且报告错误信息和执行统计信息。开发人员或用户可以通过操作器(Operator)或者元数据导航器(Metadata Navigator)Web接口来查看执行日志,判断执行的过程是否符合设计的要求或者进行诊断。如图1所示。

2.2 Windows 服务

使用Microsoft Windows服务[5](即以前的NT服务)能够创建在它们自己的Windows会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这些功能使服务非常适合在服务器上使用,每当需要使用不会影响在同一台计算机上工作的其他用户的功能时也适用,还可以在不同于登录用户的特定用户账户或默认计算机账户的安全上下文中运行服务。

2.3 YAJSW

YAJSW(Yet Another Java Service Wrapper)是一个开源的Java服务包装(Java Service Wrapper)工具,它允许开发人员把任何程序安装为Windows的服务或者作为一个Linux Posix的守护进程进行监控。YAJSW不仅可以通过JNLP(Java Network Launching Protocol,Java网络加载协议)文件读取配置信息,也可以从远程包装配置信息文件中读取配置信息,对于那些在多台服务器上运行相同的Java应用,又想避免繁琐的配置文件复制的开发人员来说,YAJSW是一个相当方便的解决方案。

3 部署配置(Deployment and configuration)

3.1 前提配置

在运行YAJSW前,首先需要确认ODI安装目录下的\agent\bin\odiparams.bat文件是否配置正确。odiparams.bat文件定义了ODI Agent启动的环境信息,包括工作资料库和主存储库的JDBC DRIVER类型、连接地址、用户名、ENCODE后的登录密码等,ODI Agent启动运行后就是根据这些参数运行的,所以在发布为服务时会用到此文件中定义的参数。一般在安装ODI时就会要求进行此文件的配置修改,所以这里的话,只需要修改其中ODI_SECU_ENCODED_PASS参数的值,其他的参数只需确认无误即可。ODI_SECU_ENCODED_PASS参数的值是通过在Windows命令窗口使用命令:encode来获取的。

完成odiparams.bat文件的修改后,再使用命令:agent–NAME=实现Agent的启动。操作及结果如图2所示。

3.2 部署配置YAJSW

以下操作以发布localagent为例进行说明。

首先,下载YAJSW并解压。本文以%YAJSW%表示YAJSW的安装目录,YAJSW的所有命令均位于%YAJSW%\bat下。

按如图3所示的方法确认测试Agent成功。然后在任务管理器中查看Agent的进程pid,如图4所示。

配置文件生成后,停止Agent的运行。然后打开wrapper.conf文件进行编辑,完成Windows服务相关命名的设置,主要是修改以下参数:

(1)wrapper.console.title:控制台标题。

(2)wrapper.ntservice.name:服务名称。

(3)wrapper.ntservice.displayname:服务显示名称。

(4)wrapper.ntservice.description:服务描述。

保存所有修改后,执行runConsole.bat命令,启动已配置好的wrapper.conf,如图6所示。

然后按图3所示的方法测试代理是否成功。代理测试成功后,另开一个Windows命令窗口,执行installService.bat命令,将服务发布到Windows系统服务里,如图7所示。

这时,可以再按图3所示的方法测试代理是否成功。

需要注意的是,每次生成的配置文件,默认都是命名为wrapper.conf,而一个数据集成项目,一般需要发布的代理都不止一个,所以最好在配置文件生成后,就对其进行重命名,以免配置下一个代理时文件被覆盖。重命名后,还需要修改注册表中对应的ImagePath的值。以发布localagent为例,可以将配置文件重命名为localagent.conf,然后打开注册表,展开分支\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\localagent,修改ImagePath的参数为“-Dwrapper.config=C:\yajsw-stable-11.03\conf\localagent.conf”,这样服务启动后才会寻找localagent.conf配置文件。

4 结论(Conclusion)

在WinServer2003、WinServer2008平台下,使用开源工具YAJSW将ODI Agent注册为Windows服务后,以后对数据集成项目的运行就可以直接在服务窗口中进行启动和终止,而且每次系统重启后,服务会自动启动运行,不要人工干预,而项目作废时也可以通过其中的uninstallService.bat卸载服务,非常方便。

参考文献(References)

[1] 李建花.面向校园网的高校数据集成方案的研究与应用[D].

济南大学,2011.

[2] 武兴悦,石丽梅,王钢.基于ODI的应急数据交换、共享平台

的研究与实现[J].计算机与数字工程,2009,37(9):89-91.

[3] 孙玮.基于ODI技术搭建高校数字化校园公共数据平台[J].软

件工程师,2014(07):56-57.

[4] 刘剑君.基于Oracle数据集成工具的数据回流系统设计与实

现[D].西安.西安电子科技大学,2009.

[5] 杨玫,刘瑜,赵秀丽.基于.NET的Windows服务开发技术研究

[J].信息技术,2014(09):205-208.

作者简介:

孙 玮(1983-),女,硕士,工程师.研究领域:网络信息系统.