基于WPS的电信业务集成场景,第四部分: 集成WPS与数据库应用
 

2009-04-16 作者:孙晶 来源:IBM

 
本文内容包括:
本文将介绍如何在WSCTI中使用JCA JDBC Adapter动态提取数据库系统的信息,实现与服务开通系统的数据同步。

1 引言

WSCTI项目使用WebSphere Integration Developer V6(WID V6)和WebSphere Process Server V6(WPS V6) 实现电信行业的典型业务场景,集成了多个异构的业务系统,提供了基本的数据模型和一系列完整的端到端的业务流程,目的是展现WID和WPS进行应用集成(Application Integration)和流程集成(Process Integration)的功能和特性。在WSCTI中应用WPS来集成所有的业务系统,提供业务流程的控制。

在企业级生产环境中,往往存在着各种异构的应用系统和数据库。如果我们要利用这些系统的数据或功能,而它们又没有提供对外的接口,或者利用原有接口开发的难度很大。IBM提供了各种适配器(Adapter),我们可以通过配置这些Adapter直接连接后台系统。在WSCTI系统中,WPS通过两种不同类型的适配器与计费系统和服务开通系统通信,既有传统的WBI WebSphere MQ Adapter,也有符合Java Connector Architecture规范的JDBC Adapter。

本文将介绍如何在WSCTI中使用JCA JDBC Adapter动态提取数据库系统的信息,实现与服务开通系统的数据同步。

2 JCA JDBC Adapter介绍

2.1 IBM WebSpere Adapters

IBM提供了各种适配器(Adapter)来整合各种异构的应用系统和数据库。主要有两种Adapter:Application Adapters和Technology Adapters,前者包括SAP、Sibel和IBM MQ等针对应用系统的适配器,后者则是对标准技术接口的,包括连接数据库的JDBC、与邮件系统交互的Mail、处理文本文件的JText和通过XML/HTTP接口交互的XML适配器。

IBM WebShpere Adapter也叫做资源适配器(Resource Adapter)或者JCA适配器(JCA adapter),它遵从J2EE中JCA1.5标准,运行在WPS之上,实现了基于WPS的企业应用与企业信息系统(Enterprise information System,EIS)的整合。

图1 WebSphere Adapter的结构
图1 WebSphere Adapter的结构

一个WebSphere Adapter包括以下两部分:

  • 可以运行在WPS之上的实现了JCA 标准的连接器。
  • 企业元数据开发组件:产生业务对象(Business Object, BO)和其他服务组件结构(Service Component Architecture, SCA),这些组件可以编译成一个ear文件。

WebSphere Adapter与WebSphere Business Integration Adapter的区别:

除了Websphere Adapter,IBM也提出了各种WebSphere Business Integration Adapter进行数据整合,Websphere Business Integration Adapter并不是基于JCA技术的。

图2 WebSphere Adapter的结构
图2 WebSphere Adapter的结构

如图所示,WBI Adapters是分布式的,寄于应用服务器之外,服务器通过Java消息服务(Java messaging server, JMS)来连接Adapter。

Websphere Adapters与WBI Adapters的区别如下:

  • 连接管理:WebSphere Adapters依赖JCA标准管理生命周期;WebSphere Business Integration 根据Adapter Framework来管理连接性。
  • 事件触发:对于WebSphere Adapters是Inbound事件。
  • 请求处理:对于WebSphere Adapters是Outbound支持。
  • 对象定义:WebSphere Adapters使用企业元数据发现组件(Enterprise metadata discovery component)来连接EIS并产生BO和其他组件,企业元数据发现组件(Enterprise metadata discovery component)是WebSphere Adapters的一部分。WBI Adapters使用一个单独的对象发现代理来生产BO定义模式。

2.2 JDBC Adapter体系结构和运行机制

JCA JDBC Adapter是一个提供J2EE应用和数据库供应商的EIS解决方案之间的连接的资源适配器,是构建在WPS之上的Websphere Adapter。不用应用之间的数据交换发生在数据库层次,Adapter使用SQL语句或存储过程以业务对象(Business Object, BO)的形式来传递数据,实现数据库与其他应用系统的集成。JDBC Adaper可以集成任意构建在使用JDBC驱动(JDBC2.0以上版本)的数据库上的企业应用。

JDBC Adapter基于J2EE JCA技术实现了JDBC API,提供了Inbound和Outbound两种操作来连接数据库。

下图是JCA JDBC Adapter的工作机制:

图3 JCA JDBC Adapter的工作机制
图3 JCA JDBC Adapter的工作机制

在Outbound操作下, BO从应用系统传递到数据库中,根据BO中指定的动作(Create, Retrieve, Update, Delete, Retrieveall),BO作为一个请求发送到Adapter中, Adapter将BO传递到具体数据库应用的表中。如果有需要,还可以进一步传递到其他构建在这个数据库之上的应用系统中,并进行相应处理。

在Inbound操作中,数据库中的数据通过某个企业应用得到了更新,这个更新通过触发器或者其他方式被捕获,将这个事件和相应的事件信息插入到一个"EventStroe"表中。Adapter将自动处理Event Table中的数据,将每个事件构建成一个Business Graph通过在企业系统中构建的inbound接口传递到相应的应用系统中。

3 在WSCTI中使用JDBC Adapter集成WPS与DB2

3.1 解决方案背景概述

图4展示了WSCTI项目的系统架构。WPS向Web客户端提供服务接口,Web客户端通过SCA API向WPS调用服务发起业务流程,并在Web界面上展示数据。WPS通过两种不同类型的适配器(Adapter)与计费系统和服务开通系统通信,既有传统的WBI WebSphere MQ Adapter,也有符合Java Connector Architecture规范的JDBC Adapter。与CRM和资源管理系统通信,WPS是通过Web Services调用的方式,Web Services屏蔽了业务系统技术实现方式的差异。

图4 WSCTI系统架构
图4 WSCTI系统架构

在这里使用JCA JDBC Adapter实现服务开通系统(Service Provisioning System)与WPS交互的部分。在使用WPS实现的核心订单处理流程中,需要服务开通系统提供订单的创建、测试、删除以及服务的激活、停止、删除等功能。服务开通系统(Service Provisioning System)是基于数据库技术实现的基本的服务和订单操作,通过一个简单的业务流程语言(BPEL)的过渡,实现上述订单和服务管理功能。JCA JDBC Adapter连接的数据库对象可以是数据库表也可以是存储过程,在这个项目中我们用数据库表连接WPS中的业务对象。

JCA JDBC Adapter产生的两种不同操作在WSCTI中分别实现以下功能:

  • Outbound Interface: 通过操作数据库,实现订单的创建、测试、删除和服务的激活、停止、删除功能。
  • Inbound Interface: 通过人工使用JSP页面修改数据库中服务和订单的状态而反馈到订单管理流程中,异步的完成订单的创建结果与测试结果,以触发订单管理流程的继续进行。

3.2 JDBC Adapter的安装与准备

创建JCA JDBC Adapter项目需要在WID环境中构建,需要数据库的JDBC驱动文件,在运行Inbound操作之前,还要在数据库中建立事件存储机制(Event Store),要在数据库中创建事件表和触发器。

在WSCTI中创建JDBC Adapter项目,所需的准备工作如下:

1. 正确安装JDBC Adapter项目环境。

软件环境如下表所示:

2. 创建两个数据库表SERVICE和WORKORDER

图5 WSCTI中服务开通系统与WPS交换信息的数据库表
图5 WSCTI中服务开通系统与WPS交换信息的数据库表

3. 创建事件表(Event Table)和触发器(Trigger)

// Event table

CREATE TABLE WBIA_JDBC_EventStore 
(
	event_id						INTEGER NOT NULL	
	GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1, NO CACHE ) 
	PRIMARY KEY,
	object_key					VARCHAR(80)		NOT NULL,
	object_name			VARCHAR(40)		NOT NULL,
	object_function			VARCHAR(40)		NOT NULL,
	event_priority    		INTEGER			NOT NULL,
	event_time				TIMESTAMP		
	default CURRENT TIMESTAMP NOT NULL,
	event_status				INTEGER			NOT NULL,
	event_comment		VARCHAR(100)
);

// Trigger for customer table

DROP TRIGGER EVENT_UPDATE;

CREATE TRIGGER event_udpate 
AFTER UPDATE ON CUSTOMER REFERENCING NEW AS N  
FOR EACH ROW MODE DB2SQL 
INSERT INTO wbia_jdbc_eventstore (object_key, object_name, object_function,
event_priority, event_status) 
VALUES (N.pkey, 'InDb2adminCustomerBG', 'Update', 1, 0) 

3.3 创建JDBC Adapter项目

在安装好adapter环境和准备工作之后,就可以在wid中开发JDBC Adapter项目。

1. 在WID中导入JCA JDBC Adapter。

在"商业整合(Business Integration)"视图下,将JDBC Adapter的CWYBC_JDBC.RAR文件导入到Service项目中,这个文件既包括了实现了JCA标准的JDBC适配器,也包括了企业服务发现器的文件。可以在下面的路径下找到这个文件:%JDBC Adapter Root%\adapter\deploy\CWYBC_JDBC.rar。

如下图所示,导入文件时可以改变连接器项目(connector project)的名称,并且不需要将模块加入到ear文件中。

图6 导入JDBC Adapter
图6 导入JDBC Adapter

在PeonyService项目中,打开PeonyService依赖关系编辑器(PeonyService Dependencies Editor),将刚刚导入的JDBC Adapter项目加入到PeonyService的 J2EE项目部署和构建关联中。

图7 加入依赖关系
图7 加入依赖关系

2. 将JDBC驱动加入到JDBC Adapter项目中。

将DB2的驱动(db2java.zip)复制到JDBC Adapter项目:C:\workspace\Peony\PeonyServiceJDBC\connectorModule。

3. 将JDBC驱动加入到JDBC Adapter项目的Java构建路径中。

4. 使用企业服务发现向导创建业务对象和接口与设置连接属性。

企业服务发现器(Enterprise Service Discovery)用于连接数据库并产生BO及其它组件。首先连接到现有数据库中,根据数据库中的对象创建业务对象和相应的接口,然后再设置在JDBC Adapter运行时需要的连接属性,后面的连接属性也可以在WPS的管理控制台中设置。在创建对象接口与设置连接属性时,需要通过企业服务发现器分别为Outbound和Inbound接口设置不同服务。

设置连接属性的步骤如下:

1) 新建一个企业服务发现器。

选择刚刚导入的JDBC Adapter项目,设置以下属性:

图8 使用企业服务发现器设置连接数据库属性
图8 使用企业服务发现器设置连接数据库属性

在这里,必须指定数据库用户名,密码,数据库URL和JDBC驱动类,数据库可以使本地数据库,也可以是远程数据库,在设置远程数据库属性时,数据库URL和JDBC驱动类的设置需要做相应的改变。通过这些属性的设置,JDBC Adapter可以连接到相应的数据库,根据数据库中的表或存储过程,创建业务对象和inbound,outbound接口。

2) 查找和指定数据库对象

运行查询,选择所需要建立的查询对象所属的数据库和表。

图9 使用企业服务发现器查找数据库和对象
图9 使用企业服务发现器查找数据库和对象

3) 指定连接方式

这里用于指定所建的接口是Outbound还是Inbound的,选择业务对象中的动词(Create, Update, Delete,…)。

图10 使用企业服务发现器指定连接方式
图10 使用企业服务发现器指定连接方式

4) 设置连接属性

这里的连接属性是运行时Adapter与数据库连接的依据,可以通过设置JNDI名和设置激活认证别名两种方式,使用激活别名认证方式时,大部分属性必须在创建JDBC Adapter项目时指定,使用JNDI名认证时,这些属性需要在配制运行环境时在WPS管理控制台设置。

下面属性是WSCTI中的Outbound和Inbound设置。

Outbound:

Outbound中选择使用现有连接属性,需要在J2C认证数据入口处添上认证别名PeonyService,WPS在使用Adapter时通过这个认证别名查找数据库属性来连接数据库,这个认证别名在这里可以任意指定,需要在管理控制台上添加的认证别名一致。在这里的连接属性中配置数据库用户名,数据库URL,数据库驱动类和数据库供应商属性。数据库密码可以等运行时到WPS管理控制台上配置。数据库供应商在这里应该配置成"DB2"。

图11 Outbound的连接属性
图11 Outbound的连接属性

Inbound:

Inbound中选择使用定义在服务器上的连接属性,需要设置一个JNDI查找名称,在这里设置成PeonyServiceJNDI,以后在管理控制台上可以设置这个JNDI的属性来使用JDBC Adapter连接数据库。

图12 Inbound的连接属性
图12 Inbound的连接属性

3.4 部署和配置JDBC Adapter运行环境

在创建好JDBC Adapter项目后,将这个项目导出到一个ear文件中,这时就可以将这个项目部署到WebSphere Process Server。在WebSphere Process Server管理控制台中,激活属性用于Inbound连接的配置,连接工厂用于Outbound连接的配置。

1. 添加安全认证别名:

在部署之前需要在WPS中设置一个与之前在outbound连接属性中设置的认证别名相匹配的数据库认证别名。

在管理控制台的全局安全性JAAS配置中的J2C认证数据中,添加以下认证:

图13 添加安全认证别名
图13 添加安全认证别名

2. 部署Adapter项目到WebSphere Process Server:

在安装和部署项目时,大部分步骤都可以使用默认属性,需要注意以下几个步骤:

提供消息驱动的Bean的侦听器绑定:

图14 安装Adapter项目1
图14 安装Adapter项目1

注意这里的激活规范中的JNDI名,应当与我们在企业服务发现器中配置的JNDI名一致。将这个值记住,并在以后步骤中使用。

映射JCA资源引用到资源:

将J2C激活属性表中的绑定的JNDI名改称与上面步骤中一致的名称。

图15 安装Adapter项目2
图15 安装Adapter项目2

映射资源到引用资源:

在中间的javax.resoruce.cci.ConnectionFactory部分中使用缺省的认证方法PeonyService。

图16 安装Adapter项目3
图16 安装Adapter项目3

3. 在WPS管理控制台上配置连接属性:

在PeonyService项目中通过连接器模块进入到JDBC Adapter项目,配置资源适配器属性。

在J2C激活规范中配置属性,用于inbound连接。进入项目commonj.connector.runtime.InboundListener ,在J2C激活规范定制属性中配置如下属性:

图17 配置Adapter的连接属性-Inbound
图17 配置Adapter的连接属性-Inbound

在J2C连接工厂中配置属性,用于Outbound连接。

进入项目PeonyService.JDBCOutboundInterface_CF ,在定制属性中配置以下几项:

图18 配置Adapter的连接属性-Outbound
图18 配置Adapter的连接属性-Outbound

在以上信息配置完成后,启动JDBC Adapter项目,JDBC Adapter就可以正常运行了。

4 结束语

IBM提供了多种Adapter用于各种异构的应用系统和数据库之间的整合,JCA JDBC Adapter是其中一种技术适配器(Technical adapter),用于WPS与数据库之间的整合。在WSCTI中成功地运用JDBC Adapter将WPS与DB2进行了集成。本文以WSCTI项目为例,介绍了JCA JDBC Adapter如何工作与配置,使读者了解到如何通过JCA JDBC Adapter进行数据的整合,其他JCA Adapter的原理与配置也与JCA JDBC Adapter类似。

参考资料


火龙果软件/UML软件工程组织致力于提高您的软件工程实践能力,我们不断地吸取业界的宝贵经验,向您提供经过数百家企业验证的有效的工程技术实践经验,同时关注最新的理论进展,帮助您“领跑您所在行业的软件世界”。
资源网站: UML软件工程组织