专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »编程综合 » webspherecommerce:在 WebSphere Enterprise Service Bus 中开发 WebSphere Commerce Get Web 服务中介 第 1 部分 »正文

webspherecommerce:在 WebSphere Enterprise Service Bus 中开发 WebSphere Commerce Get Web 服务中介 第 1 部分

来源: 发布时间:星期三, 2010年3月17日 浏览:0次 评论:0


  开始的前

  遵循面向服务架构 (SOA)WebSphere Commerce 使用 Web 服务作为媒介和后端系统(比如 ERP、CRM、Yantra 或 DOM)集成WebSphere Commerce 拥有个 Web 服务框架该框架提供了包含入站和出站 Web 服务区别业务组件本教程使用 WebSphere Enterprise Service Bus(此后简称为 WebSphere ESB)作为中间件调节从 WebSphere Commerce 到后端系统出站消息

  在本教程中您将了解到开发中介模块所需些基本任务以便调节从 WebSphere Commerce 到后端系统消息WebSphere Commerce 通常包含 4种 Web 服务模式:Get、Process、Sync 和 Change第 1 部分将帮您构建针对 Web 服务模式 Process、Sync 和 Change 中介模块但是要开发针对 Web 服务 Get 模式中介模块需要执行某些额外任务这将在 第 2 部分 中介绍如果已经使用 WebSphere ESB 进行了中介那么可以跳过第 1 部分并转到 第 2 部分

  目标

  了解如何:

  在 WebSphere ESB 中使用来自 WebSphere Commerce 和后端系统资源创建可重用

  使用消息日志记录数据对象以便审计消息流

  使用 XSL 转换和业务对象映射来转换业务对象

  先决条件

  需要熟悉 SOA 和 Web 服务基本概念还要熟悉将 WebSphere Integration Developer 用作集成开发环境开发运行在 WebSphere ESB 上应用

  系统需求

  要实战本教程中例子您需要带有 Feature Pack 5 WebSphere Commerce V6.0 和带有 Test Enterprise Service Bus V6.1 服务器配置文件WebSphere Integration Developer V6.1.2

  时长

  3 小时

  介绍

  WebSphere Commerce 在其提供入站和出站 Web 服务消息格式上保持了它为消息使用了 OAGIS 标准WebSphere ESB 的类中间件用于调节从 WebSphere Commerce 到后端系统消息反的亦然在本教程中您将使用个代理后端系统该系统提供了用于集成入站 Web 服务接口在第 1 部分中您将了解到如何在 WebSphere ESB 中创建基本中介模块从 WebSphere Commerce 和后端系统中导入所需资产

  要在 WebSphere Commerce Web 服务模式 Process、Sync 和 Change 的间起到中介作用需要执行将在第 1 部分中介绍服务针对这 3种模式 Web 服务请求中参数都在业务对象自身中以属性形式设置因此消息转换通常涉及将 WebSphere Commerce 接口中业务对象属性值赋予后端接口中对等属性

  本教程主要目标是解释中介 Get 服务我们将使用个出站 GetInventoryAvailability 服务作为贯穿本教程举例您将了解开发基本 GetInventoryAvailability 中介所需任务该任务对于所有 4种模式都很常见在 第 2 部分 中您将学习开发 GetInventoryAvailability 中介所需特定于 Get 模式其他任务

  您将使用名为 “MyBackend” 代理后端系统该系统包含个 Inventory 服务该服务拥有自己消息格式本教程中SOAP/HTTP 将用于 Web 服务传输

  设置环境

  在接下来几节中您将了解如何设置开发环境在 WebSphere Integration Developer 中开发中介模块

  安装代理后端

  代理后端 MyBackend 在下载部分作为 EAR 文件 MyBackend.ear 提供

  登录到您测试 WebSphere ESB 服务器 WebSphere ESB 管理控制台并安装 MyBackend.earMyBackend 应用很简单不需要任何额外配置保留所有选项默认设置并完成安装

  确保将设置保存到 Master Configuration这样不用每次都安装 MyBackend.ear

  新安装应用不会自动启动您需要手动启动该应用

  验证 MyBackend 安装

  MyBackend 中 Inventory 服务默认 URL 是 http://localhost:9081/MyBackend/InventoryService在安装期间要覆盖默认配置所以 MyBackend Web 模块绑定到默认虚拟主机:default_host

  登录到 WebSphere ESB 管理控制台检查 default_host 主机别名下端口号默认情况下它将端口 9081 用于入站 Web 服务请求

  替换默认 Inventory 服务 URL 中端口号并使用来自浏览器 URL

  如果得到 "Hi there, this is a Web service!" 的类回应则介绍说明 Inventory Web 服务正在运行

  在 MyBackend 中测试 Inventory 服务

  使用 WebSphere Integration Developer 中提供测试工具比如 Web Services Explorer使用 URL http://localhost:9081/MyBackend/InventoryService 将 SOAP 请求发送到 Inventory 服务样例 zip 文件 Sample_Messages_Part_1.zip 包含个样例 SOAP 请求 CheckMaterialAvailability.xml 和个样例 SOAP 响应 ShowMaterialAvailability.xml

  确认您得到了样例请求样例响应

  创建库

  必须要使用来自 WebSphere Commerce 和后端特定资源创建库个库可以供多个中介模块共享个库中组织和维护特定于终端系统资源更加容易您可以通过 File -> New -> Library 创建个新库在本教程中您要处理两个终端系统 —— WebSphere Commerce 和 MyBackend以下各节将展示如何创建包含来自 WebSphere Commerce 和 MyBackend 特定资源

  创建 MyBackend 库 —— MyBackend-Lib

  要建立本教程中场景需要 MyBackend 资源是用于 MyBackend 中 Inventory 服务 WSDL 文件

  在工作区中创建新库并将其命名为 MyBackend-LibMyBackend WSDL 在 MyBackend-WSDL.zip 中提供

  将 MyBackend-WSDL.zip 内容解压到临时文件夹并使用 WSDL/Interface Import 向导从临时文件夹将 WSDL 导入到 MyBackend-Lib

  创建 WebSphere Commerce 库 —— WC-Lib

  您只需要 WebSphere Commerce 中针对 Inventory 服务 WSDL

  在工作区创建新库并将其命名为 WC-Lib其中 WC 代表 WebSphere Commerce

  您需要从 WebSphere Commerce 服务器中 Web 模块 WebServicesRouter 导入 WSDL WebServicesRouter Web 模块可以在 WebSphere Commerce 服务器 WC_eardir 目录中找到其中 WC_eardir 代表 C:\Websphere\AppServer\profiles\demo\edApps\WC_demo_cell\WC_demo.ear

  使用 WSDL/Interface Import 向导从 WC_eardir\WebServicesRouter.war\component-services\wsdl 文件夹将 WSDL InventoryServices.wsdl 导入到 WC-Lib

  开发中介模块

  通过 File -> New -> Mediation Module 创建新中介模块并如图 1 所示输入详细信息

图 1. 创建中介模块




  单击 Next 并如图 2 所示选择库

图 2. 选择所需库




  单击 Finish此时创建了个新中介模块名为 “Basic”并且在 Assembly Editor 中自动打开了 Assembly Diagram这包含个中介流组件名为 “BasicMediationImpl”

  中介模块组装

  现在您中介模块只包含个中介流组件:BasicMediationImpl如果没有导出组件这个中介流组件就没有什么用处它不能被任何外部请求执行而且还需要个导入组件这样中介流可以 MyBackend 中 Inventory 服务以下各节将介绍如何定义中介模块中导出和导入组件

  定义导出组件

  从面板中选择 Export 并将其放到组装图中

  编辑名称例如 WC_InventoryServiceExport使其更有意义

  右键单击导出组件并选择 Add Interface如图 3 所示选择 WebSphere Commerce Inventory 接口

图 3. 选择接口




  右键单击导出组件并选择 Generate Binding... -> Web Service Binding

  在 Transport Selection 弹出窗口中如图 4 所示选择 soap/http 并单击 OK

图 4. 选择 Web 服务传输




  保存 Assembly 图表确保选中了 Build Automatically

  导出组件生成默认 URL 是 http://localhost:9080/BasicWeb/sca/WC_InventoryServiceExport这里BasicWeb 是 Basic 中介模块 Web 模块 Context Root而 sca/WC_InventoryServiceExport 是相对 URL默认 URL 很难记住因此要简化 URL可以进行如下操作:

  右键单击导出组件并选择 Show in Properties

  在 Properties 选项卡单击 Binding 选项卡

  单击 Configure 按钮Module Deployment Editor 打开

  单击 Exports 选项卡

  扩展 Context Root 并将上下文根编辑为更易记内容例如Basic

  在 Export Specic Settings 部分在 Web Service Exports 列表中选择 WC_InventoryServiceExport

  展开 URL Mappings 部分并单击 Add

  添加新 URL 模式例如 /InventoryService如图 5 所示

图 5. 导出配置选项




  取消选中 Include default mapping 复选框

  保存更改

  上述更改后到 WC_InventoryServiceExport URL 变成 http://localhost:9080/Basic/InventoryService

  现在将连接(wire)从 WC_InventoryServiceExport 添加到 BasicMediationImpl如果弹出类似图 6 连接确认单击 OK在 Assembly Diagram 中保存更改

图 6. 添加连接确认




  定义导入组件

  从面板中选择 Import 并将其放入组装图

  编辑名称例如 MyBackend_InventoryServiceImport使其更有意义

  右键单击导入组件并选择 Add Interface如图 7 所示选择 MyBackend Inventory 接口

图 7. 选择接口




  右键单击导入组件并选择 Generate Binding... -> Web Service Binding

  选择 Use an existing web service port 并单击 Browse

  如图 8 所示选择 MyBackend/InventoryService Web 服务端口并单击 OK

图 8. 选择 Web 服务端口




  将连接从 BasicMediationImpl 添加到 MyBackend_InventoryServiceImport 并在出现图 9 所示连接确认时单击 OK

图 9. 添加连接确认




  在 Assembly Diagram 中保存更改

  完成步骤 6 后导入组件就绑定到了 MyBackend Inventory 服务 WSDL Web 服务端口中提到默认 URL —— http://localhost:9081/MyBackend/InventoryService如果需要可以在 验证 MyBackend 安装 中所述任务解析了 MyBackend Inventory 服务 URL 后修改 MyBackend_InventoryServiceImport 属性中 URL

  中介流

  导出组件和导入组件将处理和中介流的间 Web 服务中介流包含接口的间中介逻辑实现中介流包含针对多个操作连接中介逻辑要创建中介流实现请执行以下操作:

  在 Assembly Diagram 中双击 BasicMediationImpl如果得到如图 10 所示确认信息则单击 OK

图 10. 中介流确认




  在 Generate Implementation 弹出窗口中单击 New Folder 并输入文件夹名比如 MediationImpl并单击 OK这会将中介流实现文件放入子文件夹 MediationImpl 中这样中介模块文件结构更好

  单击 OK中介流编辑器打开

  回到 Assembly Diagram 并保存更改关闭 Assembly Diagram

  连接操作

  中介流实现中个操作连接都包含针对特定场景中介逻辑您在左手侧看到接口是中介模块中导出组件支持接口您在右手侧看到接口是对中介模块中导入组件支持接口引用每个导出接口都可以指向多个导入接口引用但是为了保持简单性在本教程中在 GetInventoryAvailability 和 CheckMaterialAvailability 的间将只使用个操作连接要连接操作请执行以下操作:

  单击 GetInventoryAvailability 操作并向 CheckMaterialAvailability 添加连接如图 11 所示

图 11. 连接操作




  保存更改

  实现中介流

  在本节您将学习如何实现您在 GetInventoryAvailability 和 CheckMaterialAvailability 的间建立操作连接中介流单击连接这样操作连接请求和响应流将显示在中介流编辑器下半部分如图 12 所示

图 12. 实现请求和响应流


  要将 GetInventoryAvailability 转换成 CheckMaterialAvailability您要使用 XSL 转换中介原语(primitive)进行以下操作:

  单击面板上 Transformation 选项卡

  选择 XSL Transformation 并将其放入请求流

  将名称改成有意义名字例如 GetInventoryAvailabilityXSLT

  单击 Input 并将其输出终端连接到 GetInventoryAvailabilityXSLT 输入终端将 GetInventoryAvailabilityXSLT 输出终端连接到调出(callout)输入终端如图 13 所示

图 13. 连接组件




  保存更改

  XSL 转换组件已经被添加到了流中但是您需要实现 XSL 转换组件中两个业务对象的间映射按以下步骤创建映射:

  双击 GetInventoryAvailabilityXSLT这将打开向导创建个新 XML 映射

  输入以下详细信息如图 14 所示

图 14. 创建新 XML 映射




  指定消息类型您已经连接了 XSL 转换组件输入和输出终端它将自动解析消息类型如图 15 所示

图 15. 指定消息类型




  单击 Finish这将在 Mapping Editor 中打开 GetInventoryAvailabilityXSLT 映射

  回到中介流编辑器保存更改

  要映射 GetInventoryAvailabilityXSLT 映射中业务对象进行以下操作:

  打开 GetInventoryAvailabilityXSLT 映射

  CheckMaterialAvailability 请求只需要两个属性:MaterialNumber 和 FullfillmentCenter在本教程 第 2 部分 中您将学习如何解析来自 GetInventoryAvailability XPath 并将参数映射到 CheckMaterialAvailability在第 1 部分中硬编码属性 MaterialNumber 和 FullfillmentCenter这样请求就可以通过右键单击属性并选择 Create Transform这将显示转换分配(transform assign)属性为 MaterialNumber 硬编码个值比如 MSCFF39B为 FullfillmentCenter 硬编码个值比如 FF01如图 16 所示

图 16. 在分配转换中设置值




  只硬编码了针对种内容请求所以要在转换属性 Cardinality 选项卡中为分配转换指定索引将 MaterialAvailability 和 MaterialNumber 索引设置为 “1”如图 17 所示

图 17. 设置输出索引




  保存更改

  可以使用 Test Map 工具测试 XML 映射无需部署中介模块它可以帮助您缩小在中介模块中可能出现问题范围您可以提供包含内容体样例输入 XML 并运行该工具它将在右侧显示得到 XML 输出

  实现响应流所需任务类似于请求流在响应流中您需要将调出响应输出终端连接到 XSL 转换组件输入终端XSL 转换组件输出终端被连接到输入响应输入终端如图 18 所示

图 18. 响应流




  下载部分在 BasicMediation_PI.zip 中包含了个样例中介模块实现样例代码中 ShowInventoryAvailabilityXSLT 映射利用了其他 XSL 转换比如 “For Each” 和 “Move”For Each 和 Move 是些基本 XSL 转换有关支持转换类型更多信息请参阅 WebSphere Integration Developer 中联机帮助

  使用 Project Interchange 导入向导将 BasicMediation_PI.zip 导入到工作区中介模块 Basic 包含到库 MyBackend-Lib 和 WC-Lib 引用它们不 包含在 project erchange zip 中您需要像前面几节中提到那样先创建库然后导入工作区中项目交换文件

  使用消息日志审计业务对象

  业务对象通过中介流中区别组件由于它要经历转换出于调试和审计目您可以使用中介流中消息日志基本组件例如您可以使用消息日志记录 XSL 转换输入和输出业务对象在执行每个流时业务对象将被记录到数据库您可以通过查询数据库查看消息日志中业务对象

  消息日志有两个转换模式 —— “Same” 和 “New”如果使用 Same 转换模式那么使用消息流事务记录消息这意味着如果流中出现日志将被提交到数据库如果使用 New 事务模式那么将为消息日志 创建新事务并且使用新事务提交日志出于调试目您可以使用 New 事务模式来识别流中出现原因

  样例代码 已经在流中包含了消息日志如图 19 所示

图 19. 中介流中消息日志


  下载部分包含个 EAR 应用:DBAccessApp.earDBAccessApp 提供了个简单 Web 接口以查询数据库使用此应用您可以查询数据库来查看消息日志记录流中业务对象要部署 DBAccessApp需要执行类似于 安装代理后端 和 验证 MyBackend 安装 中提到任务启动数据库查询页面默认 URL 是 http://localhost:9081/db/access

  测试中介模块

  测试中介模块所需任务类似于 验证 MyBackend 安装 和 测试 MyBackend 中 Inventory 服务 中提到任务

  您需要将 SOAP 请求 GetInventoryAvailability 发送到中介模块导出组件 URL http://localhost:9081/Basic/InventoryService下载部分提供 Sample_Messages_Part_1.zip 包含个样例 SOAP 请求 GetInventoryAvailability.xml 和个样例 SOAP 响应 ShowInventoryAvailability.xml

  确认您得到了样例请求样例响应

  收到响应后您可以使用 URL http://localhost:9081/db/access 启动 DBAccessApp 并查看在中介流区别阶段记录业务对象

  保护中介模块安全

  WebSphere Integration Developer 信息中心 实现身份验证 文介绍了如何实现基本身份验证

  要保护位于传输层消息安全可以按照 配置 SSL 获得安全从 WebSphere Commerce 到 WebSphere Enterprise Service Bus 出站 Web 服务介绍说明使用 HTTPS

  结束语

  在本教程中您学习了如何使用来自 WebSphere Commerce 和代理后端系统接口在 WebSphere Integration Developer 中创建基本中介模块您了解了如何:

  创建库并在中介模块中使用它们

  实现中介组装

  连接操作以及如何实现中介流

  在中介流区别阶段审计业务对象

下载

描述 名字 大小 下载思路方法
代理后端文件 MyBackend.ear 27KB HTTP
MyBackend WSDL 文件 MyBackend-WSDL.zip 3KB HTTP
SOAP 消息 Sample_Messages_Part_1.zip 3KB HTTP
基本中介模块 BasicMediation_PI.zip 18KB HTTP
数据库访问应用 DBAccessApp.ear 5KB HTTP



0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: