使用 WebSphere ESB 实现协议转换和数据转换
- 格式:doc
- 大小:630.50 KB
- 文档页数:25
ESB解决方案在商业激烈竞争的今天,很多企业,特别是大型企业都应用了IT技术来提高企业竞争力,提高公司的运作效率与资源利用率等,而技术的更迭,业务变化等等造成了企业内部多种异构应用软件、平台、系统共存的局面。
这些系统、平台可能使用不同的通信协议,或者是不同格式的数据,互相之间交换数据、通信显然十分困难。
如果企业还需要与外部其他系统交互,则还面临着需要调查其他系统的结构,通信协议等等问题。
这些都是企业系统集成所面临的问题与困境。
近年来,也出现了一些解决集成问题的技术,例如EAI(Enterprise Application Integration),B2B (Business-2-Business),SOA(Service Oriented Architecture)以及Web Service,这些解决方案能够解决一些问题,但是往往有以下诟病:或者有专利保护,需要支付昂贵费用,实现起来耗时费力,或者是一次性定制的,花费成本高,后期难以维护,系统扩展不灵活。
ESB全称为Enterprise Service Bus,即企业服务总线。
它是传统中间件技术与XML、Web服务等技术结合的产物。
ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。
ESB的出现改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合。
从功能上看,ESB提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具备了复杂数据的传输能力,并可以提供一系列的标准接口。
ESB的五个基本功能:1)服务的MetaData管理:在总线范畴内对服务的注册命名及寻址管理功能。
2)传输服务:必须确保通过企业总线互连的业务流程间的消息的正确交付,传输还包括基于内容的路由功能。
3)中介:提供位置透明性的服务路由和定位服务;多种消息传递形式;支持广泛使用的传输协议。
IBM WPS和WES Bus介绍前面两个单元也是介绍,就从第三单元开始把此单元目标:1)明确WPS和WES Bus在SOA开发周期中的角色2)描述WPS、WES Bus的目的、优势和商业价值3)解释WPS、WES Bus各个功能组件的目的和商业价值•SCA(Service Component Architecture), Business object, relationships, selectors, Infrastructure•Mediation flows, interface and business object maps, relationships, selectors, adapters•Business processes(BPEL), business state machines, human tasks, business rules IBM WPS 是SOA的核心,它是一个商业集成服务器,提供商业流程基于SOA的自动化;实现了一个WS-BPEL兼容的过程引擎,可以安全、一致的执行复杂商业流程,并保证事务完整性;提供创建综合集成应用程序;提供高性能、高质量的服务,并有故障容忍和错误检测的能力。
WPS提供商业价值,提供可理解的SOA(基于标准的);完成商业流程管理(BPM)的生命周期;答应存在的IT财产的重新利用。
WPS的基础:WebSphere Application Server ND and WebSphere ESBWebSphere Application Server和Network Deployment为WPS提供高可用性、工作负载管理和安全性WES Bus集成为SOI提供了一个交流的支柱;WPS为这个平台添加了流程管理的功能。
第一层SOA Core,SCA提供一个带有很好的定义的全局调用模型,并封装到模块中(SDO 的扩展),提供了数据对象的一个抽象层,CEI答应对组件和IBM WPS平台上的services进行监控。
本文介绍了如何利用Websphere MQ提供的机制,实现大文件断点续传,从而可以在低速网络的情况下,不会因为网络的故障而使整个大文件重新传输。
本文介绍的这个实现可以大大的提高业务处理效率,并且可以对本文提供的思路进行扩展以完成更加复杂的功能。
1引言在低速的网络环境中,上传或者下载一个大文件需要花费很长的时间并且网络出现故障的机率很高。
如果网络出现故障的话,这个传输将会从头开始;如果经常出现网络故障的话,大文件的传输可能永远不会成功。
为了解决这个问题,实现断点续传功能的软件产品由此产生,比较著名的有网络蚂蚁,迅雷,BT,电驴。
Websphere MQ是一种消息中间件,Websphere MQ Server与Websphere MQ Server之间的数据传输实现了断点续传的功能,从而保障了传输的可靠性。
但是Websphere MQ 客户端应用与Websphere MQ Server之间没有提供断点续传的功能。
并且在很多的应用场合,Websphere MQ 客户端应用是通过低速网络与Websphere MQ Server通讯以完成数据的传输;所以我们需要实现一个机制来实现Websphere MQ客户端应用与Websphere MQ Server之间的断点续传,并且提供简单的应用编程接口来给第三方使用。
采用Websphere MQ来实现断点续传的功能的话,还可以利用Websphere MQ提供的加密机制来保障传输的安全性,以及在HTTP协议上传输以穿透防火墙等功能,从而使我们的断点续传功能更加具有竞争性。
2 术语定义Websphere MQ数据交换网络:表示多个Websphere MQ队列管理器进行配置形成一个完整的数据交换环境。
Websphere MQ 客户端应用:表示与Websphere MQ进行交互的应用程序。
MQ Client App: Websphere MQ 客户端应用的英文简称。
IBM Content Manager V8:IBM提供的一个容管理平台。
ESB(Enterprise Service Bus,即企业服务总线)是传统中间件技术与XML、Web服务等技术结合的产物。
ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。
企业服务总线ESB就是一种可以提供可靠的、有保证的消息技术的最新方法。
ESB中间件产品利用的是Web服务标准和与公认的可靠消息MOM协议接口(例如IBM的WebSphere MQ、Tibco的Rendezvous 和Sonic Software的SoniCMQ)。
ESB产品的共有特性包括:连接异构的MOM、利用Web服务描述语言接口封装MOM协议,以及在MOM传输层上传送简单对象应用协议(SOAP)传输流的能力。
大多数ESB产品支持在分布式应用之间通过中间层如集成代理实现直接对等沟通。
企业服务总线(Enterprise Service Bus,ESB)的概念是从面向服务体系架构(Service -Oriented Architecture,SOA)发展而来的。
SOA描述了一种IT基础设施的应用集成模型,其中的软构件集是以一种定义清晰的层次化结构相互耦合,其中,一个ESB是一个预先组装的SOA实现,它包含了实现SOA分层目标所必需的基础功能部件。
一、ESB的出现改变了传统的软件架构ESB 是传统中间件技术与XML、Web服务等技术相互结合的产物,ESB的出现改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合。
从功能上看,ESB提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具备了复杂数据的传输能力,并可以提供一系列的标准接口。
二、企业服务总线(ESB)的用处ESB 不是万能的,他不是一个应用程序框架,也不是一个企业应用的解决方案.它只是一个基于消息的调用企业服务的通信模块!你可以把它嵌入到你的应用程序框架中,例如嵌入到spring容器里面,或者嵌入到工作流系统中.它的作用是对企业里面的SOA服务的调用提供一个框架和简便的方法.三、企业服务总线(ESB)的应用特征大规模分布式的企业应用需要相对简单而实用的中间件技术来简化和统一越来越复杂、繁琐的企业级信息系统平台。
esb 用例-回复什么是ESB(企业服务总线)以及其关键特性?企业服务总线(Enterprise Service Bus,ESB)是一种模式化的集成中间件平台,用于构建和管理企业应用程序之间的通信和消息传递。
ESB利用标准化协议和接口,将不同的应用程序、服务和系统整合在一起,从而实现信息交换和业务流程的集成。
ESB为企业提供了一种灵活、可扩展和可靠的机制,用于处理不同系统之间的通信和交互。
ESB的关键特性包括以下几个方面:1. 松耦合:ESB通过其中间件的特性实现了应用程序之间的松耦合。
不同的应用程序可以通过ESB进行通信而不需要直接依赖于彼此的实现细节。
这种松耦合性使得系统更加灵活,并且可以提供更好地适应变化的能力。
2. 协议转换:ESB支持不同的通信协议,例如HTTP、SOAP、JMS等,可以将不同应用程序使用的协议进行转换,从而实现系统之间的无缝通信。
3. 数据转换:ESB能够将不同应用程序之间的数据进行格式转换。
不同的系统通常使用不同的数据格式,ESB可以将数据进行转换,以确保各个系统之间的数据能够正确地传递和解释。
4. 路由和调度:ESB提供了灵活的路由机制,可以基于不同的条件将消息路由到不同的目标。
这使得系统可以根据消息的内容和属性进行灵活的处理,并支持异步消息的处理。
5. 安全性和身份验证:ESB提供了安全机制,用于确保通信的机密性和完整性。
ESB可以在消息传递过程中对消息进行加密、解密和数字签名,以确保消息只被授权的应用程序接收和处理。
6. 可编程性和扩展性:ESB提供了一些编程接口和扩展点,可以根据具体的需求进行定制和扩展。
这使得企业可以根据自身的业务需求和技术栈选择合适的ESB解决方案,并进行定制化开发。
ESB的优势和应用场景是什么?ESB的出现和应用主要是为了应对企业应用系统的复杂性和异构性。
在一个典型的企业系统中,通常存在着各种不同的应用程序和服务,这些系统之间使用不同的技术栈、数据格式和通信协议。
【精】ESB解决方案ESB解决方案问题描述在商业激烈竞争的今天,很多企业,特别是大型企业都应用了IT 技术来提高企业竞争力,提高公司的运作效率与资源利用率等,而技术的更迭,业务变化等等造成了企业内部多种异构应用软件、平台、系统共存的局面。
这些系统、平台可能使用不同的通信协议,或者是不同格式的数据,互相之间交换数据、通信显然十分困难。
如果企业还需要与外部其他系统交互,则还面临着需要调查其他系统的结构,通信协议等等问题。
这些都是企业系统集成所面临的问题与困境。
近年来,也出现了一些解决集成问题的技术,例如EAI (Enterprise Application Integration),B2B (Business-2-Business),SOA(Service Oriented Architecture)以及Web Service,这些解决方案能够解决一些问题,但是往往有以下诟病:或者有专利保护,需要支付昂贵费用,实现起来耗时费力,或者是一次性定制的,花费成本高,后期难以维护,系统扩展不灵活。
什么是ESBESB全称为Enterprise Service Bus,即企业服务总线。
它是传统中间件技术与XML、Web服务等技术结合的产物。
ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。
ESB的出现改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合。
从功能上看,ESB提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具备了复杂数据的传输能力,并可以提供一系列的标准接口。
ESB的五个基本功能:1)服务的MetaData管理:在总线范畴内对服务的注册命名及寻址管理功能。
2)传输服务:必须确保通过企业总线互连的业务流程间的消息的正确交付,传输还包括基于内容的路由功能。
190 •电子技术与软件工程 Electronic Technology & Software Engineering数据库技术• Data Base Technique【关键词】消息中间件 数据推送 消息队列 触发机制 时效性1 引言IBM WebSphere MQ 是一款基于消息传送或消息队列的商业通讯中间件,WebSphere MQ 技术可以广泛的实施在IBM 平台和非IBM 平台上。
WebSphere MQ 主要功能是在孤立的应用程序之间传送消息,消息可以在不同的应用软件、计算机系统和不同的网络协议之间进行传递。
WebSphere MQ 提供了面向业务的信息技术框架,用户可以简单方便的基于该框架开发出高效、可靠的分布式应用程序系统。
基于WebSphere MQ 的应用程序更容易开发和维护,可以对商业问题进行有效的模拟。
2 IBM WebSphere MQ体系架构2.1 客户机和服务器WebSphere MQ 支持在应用程序的客户机和服务器两端对其进行配置,客户端通过MQI 通道与服务器进行通讯。
客户机组件允许操作系统上运行的应用程序通过MQI 调用另一个操作系统上的队列管理器。
WebSphere MQ 服务器是为客户提供排队服务的队列管理器,在服务器与客户机之间有专用的通信链路。
当客户机连接到服务器时,客户机的应用程序发出与本地应用程序相同的MQI 调用。
当客户机发出MQ 连接请求MQCONN 调用时,会连接到指定的队列管理器,队列管理器处理从连接请求返回的其他MQI 调用。
2.2 触发机制队列管理器可以设置特定的触发条件,如果队列的触发条件被触发并且该队列被设置成触发队列,则队列管理器会将触发消息发送到启动队列中。
本地或远程的应用程序A 向应基于IBM WebSphere MQ 的商业银行数据推送技术的应用文/杜丛强 曾庆妍用队列中PUT 一条消息,当队列为空时将会形成触发事件,同时产生一条对应的触发消息,触发消息包含进程定义的具体信息。
引言我们已经介绍了WebSphere Enterprise Service Bus (ESB) 支持的两种最常用的连接协议——JMS和Web 服务(SOAP/HTTP),现在将向这一组合中添加实际企业环境中通常需要的另一种协议:WebSphere MQ。
有很多应用程序已支持通过WebSphere MQ 与外部应用程序进行消息交换,它们通常使用ESB 在MQ 上将应用程序功能转换为或公开为服务。
因此,我们在此处将演示如何利用WebSphere ESB 中对WebSphere MQ 的支持来将支持MQ 通信的现有应用程序绑定到面向服务的环境中。
回页首更新的场景在第 2 部分中,我们介绍了Posts-R-Us 传递的每个包如何产生一条先发送至ESB,再由ESB 转发给使用消息驱动(MDB) Bean 的Java™ EE 应用程序的消息。
此级别的间接寻址方式会在生成事件(即包传递事件)的系统与使用该事件的系统(接收该消息的MDB)之间建立一个分离层。
在SOA 上下文中,这意味着ESB 向客户机提供了一个虚拟服务接口,该接口隐藏了服务提供程序的实际位置和接口。
在Posts-R-Us 中,有一个现有的基于大型机的应用程序也需要接收关于该传递的包的消息。
它通过WebSphere MQ 队列以XML 格式接收这些消息。
因此,设计团队决定更改ESB 中介:添加一个连接,将传入的通知消息转发给适当的MQ 队列,同时继续将该消息发送给原始的Java EE(前身为J2EE)应用程序。
图 1 显示了更新的体系结构。
图 1. 更新的包传递通知体系结构如图所示,消息用单独的进程转发,目标队列由远程WebSphere MQ 队列管理器管理;而原始队列则不改变进程,它仍由WebSphere ESB 管理并从中传输至消息驱动Bean。
此处需要注意以下几点,所有这些注意事项都说明了ESB 对系统体系结构的巨大价值:•客户机应用程序不受此更改影响。
用教程目录•Websphere概述与安装•Websphere核心组件详解•Websphere应用开发实践•Websphere集群与负载均衡技术•Websphere安全性管理策略•Websphere性能调优与监控技巧Websphere概述与安装Websphere简介基于开放标准WebSphere支持Java EE、OSGi、Web服务和其他重要标准,使开发人员能够利用广泛的选择来构建和部署应用程序。
跨平台支持WebSphere可以在多种操作系统上运行,包括Windows、Linux和UNIX等,从而提供了灵活的部署选项。
高可用性WebSphere提供了集群和故障转移功能,以确保关键应用程序的高可用性和可靠性。
安全性WebSphere提供了强大的安全性功能,包括身份验证、授权、加密和安全性管理,以保护应用程序和数据免受攻击。
Websphere功能特点安装Websphere前提条件01确保您的计算机满足WebSphere的系统要求,包括适当的硬件和操作系统。
02确保您具有适当的权限来安装和配置WebSphere。
03确保您的计算机上已经安装了Java DevelopmentKit(JDK)。
安装步骤与配置下载WebSphere安装程序您可以从IBM官方网站下载WebSphere安装程序。
运行安装程序双击安装程序以启动安装向导,并按照提示进行安装。
配置WebSphere在安装过程中,您需要配置WebSphere的一些参数,如端口号、管理员用户名和密码等。
启动WebSphere完成安装和配置后,您可以启动WebSphere并访问管理控制台来管理您的应用程序。
Websphere核心组件详解应用服务器WebSphere Application Serv…提供全面的Java EE应用服务器功能,支持大规模的企业级应用部署和管理。
Liberty Profile轻量级、高度可配置的Java EE应用服务器,适用于云和移动应用。
esb使用方法【原创实用版3篇】目录(篇1)1.ESB 简介2.ESB 使用方法3.ESB 的优势4.ESB 的未来发展正文(篇1)1.ESB 简介ESB,全称 Enterprise Service Bus,即企业服务总线,是一种用于构建企业级应用系统的核心技术。
ESB 作为一种中间件技术,主要用于实现不同系统之间的数据传输、协议转换、服务编排等功能,以满足企业级应用系统对高效、灵活、可扩展性的需求。
2.ESB 使用方法(1)数据传输:ESB 可以实现不同系统间的数据传输,支持多种数据格式,如 XML、JSON 等。
通过 ESB,可以实现实时数据同步,满足系统间数据交互的需求。
(2)协议转换:ESB 支持多种协议,如 HTTP、HTTPS、JMS 等。
当系统间采用不同协议进行通信时,ESB 可以实现协议的转换,从而保证系统间的顺畅通信。
(3)服务编排:ESB 具有服务编排功能,可以根据业务需求动态地组合、调整服务,提高系统的灵活性和可扩展性。
(4)服务监控与治理:ESB 可以对服务进行监控,实时了解服务运行状态,并提供服务治理功能,以保证服务的稳定、高效运行。
3.ESB 的优势(1)降低系统集成成本:ESB 可以简化系统间的集成,减少重复开发和维护工作,降低系统集成成本。
(2)提高系统灵活性:ESB 支持动态的服务编排,可以根据业务需求快速调整系统结构,提高系统的灵活性。
(3)提高系统可扩展性:ESB 可以实现不同系统间的解耦,降低系统间的依赖,从而提高系统的可扩展性。
(4)提高系统安全性:ESB 可以实现数据的安全传输,提供可靠的安全机制,保障企业级应用系统的安全运行。
4.ESB 的未来发展随着云计算、大数据、物联网等技术的发展,企业级应用系统对 ESB 的需求越来越大。
目录(篇2)1.ESB 简介2.ESB 使用方法3.ESB 的优势4.ESB 的未来发展正文(篇2)1.ESB 简介ESB,即企业服务总线,是一种用于构建企业级应用程序集成(EAI)系统的架构。
使用WebSphereESB实现协议转换和数据转换使用 WebSphere ESB 实现协议转换和数据转换简介:本文主要介绍如何通过WebSphere ESB 实现协议转换和数据转换功能:通过 Websphere ESB 实现 SOAP/HTTP 和 JMS 之间的协议转换;实现 JMS Object Message 与 Business Object 之间、以及 Business Object 与 Java Object 的数据转换;实现客户端与 ESB 之间 request/response 的交互方式,客户端向 ESB 发送带有数据对象的请求,ESB 请求 Web 服务后,将结果以数据对象的形式返回给客户端。
引言已有许多文章介绍了如何将 xml message 传入 ESB 进行协议转换和数据转换,而在实际的应用环境中,面向对象的设计会显得更实用些。
本文主要介绍如何基于 JMS 和 WebSphere ESB 构建企业服务总线,实现 SOAP/HTTP 和 JMS 之间的协议转换;实现 JMS Object Message,Business Object 及Java Object 之间的数据转换;以及如何实现通过 ESB 来实现 request/response 的交互方式。
示例场景图 1:示例场景图 1 示例展示了一个典型的端到端的 SOA 场景:(1)Service Provider 以 SOAP/HTTP 方式发布 Web Service,该 Web Service 输入和返回都是 Java Object;(2)客户端以JMS 方式去调用这个Web Service,需要经过WehSphere ESB 进行协议转换,WehSphere ESB 将客户端的JMS 协议转换为服务端需要的SOAP/HTTP 协议;(3)客户端将 JMS Object Message 发送给 WehSphere ESB,WehSphere ESB 通过 SOAP/HTTP 方式请求 Web Service。
引言企业服务总线(ESB) 支持许多传输协议和消息协议之间的交互。
就这个意义而言,IBM® WebSphere® ESB 也是如此。
在本系列文章的以前文章中,我们介绍并举出了在WebSphere MQ、JMS 和SOAP over HTTP 之间进行消息交换的一些示例。
这里,我们将做进一步的阐述,并介绍WebSphere ESB 如何支持企业服务总线模式的关键原则,即“虚拟”服务。
提供虚拟服务意味着对服务请求程序隐藏服务提供程序的实际位置、协议甚至它们的精确接口。
本文通过一些示例说明,如何使用与服务提供程序预期不同的协议向请求程序提供服务。
事实上,我们将通过两个协议同时提供相同的服务,从而将其公开给各种使用者。
您将了解到,在使用WebSphere ESB 时,这实际上并不需要额外的工作,原因是它具有基础服务组件体系结构(SCA)。
本文将遵循以前文件的布局模式,先从业务场景开始,然后介绍解决方案的体系结构,最后阐述如何让它们全部在WebSphere ESB 中运行(包括测试)。
回页首增强的场景我们将重新使用虚构的Posts-R-Us 公司的两个以前场景。
在第一个场景中,我们描述了如何在每次接收包时将消息发送到后端应用程序,以便相应地更新订单状态。
在第 2 部分中,我们介绍了如何通过JMS 队列将消息发送到ESB,然后转发(仍使用JMS)到后端应用程序,后者通过消息驱动Bean 接收消息。
我们然后在第4 部分中增强了此设置,添加了一个新的出站WebSphere MQ 通道。
现在,我们将通过Web 服务使用SOAP/HTTP 添加客户端访问权限,从而进一步增强此场景,如图 1 所示。
图 1. 添加新通道以便发送“package received”事件(场景1)通过此增强,可以从两种不同类型的客户端发送指示客户收到包的事件:一种客户端使用异步协议,另一种客户端使用同步协议。
后端应用程序完全不受此影响,因为 ESB 可以为客户端提供虚拟服务接口。
企业服务总线测试案例企业服务总线(ESB)测试用例2012年04月WebSphere Message Broker 服务总线测试案例目录1企业服务总线功能测试 (1)1.1协议转换 (1)1.1.1Socket协议转换(ESB-FUNC-01-01) (1)1.1.2Web Service协议转换(ESB-FUNC-01-02) (4)1.1.3JMS(MQ)协议转换(ESB-FUNC-01-03) (6)1.1.4数据库访问(ESB-FUNC-01-04) (8)1.1.5FTP协议转换(ESB-FUNC-01-05) (10)1.2数据格式转换 (13)1.2.1XML格式转换(ESB-FUNC-02-01) (13)1.2.2CSV到XML转换(ESB-FUNC-02-02) (15)1.2.3JSON到XML转换(ESB-FUNC-02-03) (16)1.3基于内容的动态路由 (19)1.3.1动态路由(ESB-FUNC-03-01) (19)1.4服务的配置和编排 (23)1.4.1服务的组合和流程编排(ESB-FUNC-04-01) (23)1.4.2服务的超时配置(ESB-FUNC-04-02) (26)1.4.3服务的注册和查找(ESB-FUNC-04-03) (28)1.5服务的监控和审计 (31)1.5.1服务的监控(ESB-FUNC-05-01) (31)1.5.2服务的告警(ESB-FUNC-05-02) (33)1.5.3日志的审计(ESB-FUNC-05-03) (35)1.6认证和授权 (37)1.6.1认证和授权(ESB-FUNC-06-01) (37)1.6.2IP访问控制(ESB-FUNC-06-02) (39)1.6.3HTTPS支持(ESB-FUNC-06-03) (41)1.6.4SOAP over HTTPS支持(ESB-FUNC-06-04) (43)1.7流量控制 (49)1.8优先级处理 (51)2企业服务总线非功能测试 (55)服务总线测试案例2.1性能测试 (55)2.1.1HTTP到HTTP(ESB-PERF-01-01) (55)2.1.2HTTP到Socket(ESB-PERF-01-02) (57)2.1.3SOAP到SOAP(ESB-PERF-01-03) (59)2.1.4JMS到JMS(ESB-PERF-01-04) (61)WebSphere Message Broker 服务总线测试案例1 企业服务总线功能测试企业服务总线功能测试主要考察服务总线产品使用的简单性,开发的易用性、可扩展性和灵活性,部署配置的方便性,异常处理的可视化能力等。
使用 WebSphere ESB 实现协议转换和数据转换简介:本文主要介绍如何通过 WebSphere ESB 实现协议转换和数据转换功能:通过 Websphere ESB 实现 SOAP/HTTP 和 JMS 之间的协议转换;实现 JMS Object Message 与 Business Object 之间、以及 Business Object 与 Java Object 的数据转换;实现客户端与 ESB 之间 request/response 的交互方式,客户端向 ESB 发送带有数据对象的请求,ESB 请求 Web 服务后,将结果以数据对象的形式返回给客户端。
引言已有许多文章介绍了如何将 xml message 传入 ESB 进行协议转换和数据转换,而在实际的应用环境中,面向对象的设计会显得更实用些。
本文主要介绍如何基于 JMS 和 WebSphere ESB 构建企业服务总线,实现 SOAP/HTTP 和 JMS 之间的协议转换;实现 JMS Object Message,Business Object 及 Java Object 之间的数据转换;以及如何实现通过 ESB 来实现 request/response 的交互方式。
示例场景图 1:示例场景图 1 示例展示了一个典型的端到端的 SOA 场景:(1)Service Provider 以 SOAP/HTTP 方式发布 Web Service,该 Web Service 输入和返回都是 Java Object;(2)客户端以 JMS 方式去调用这个 Web Service,需要经过 WehSphere ESB 进行协议转换,WehSphere ESB 将客户端的 JMS 协议转换为服务端需要的SOAP/HTTP 协议;(3)客户端将 JMS Object Message 发送给 WehSphere ESB,WehSphere ESB 通过 SOAP/HTTP 方式请求 Web Service。
使用 WebSphere ESB 实现协议转换和数据转换简介:本文主要介绍如何通过 WebSphere ESB 实现协议转换和数据转换功能:通过 Websphere ESB 实现 SOAP/HTTP 和 JMS 之间的协议转换;实现 JMS Object Message 与 Business Object 之间、以及 Business Object 与 Java Object 的数据转换;实现客户端与 ESB 之间 request/response 的交互方式,客户端向 ESB 发送带有数据对象的请求,ESB 请求 Web 服务后,将结果以数据对象的形式返回给客户端。
引言已有许多文章介绍了如何将 xml message 传入 ESB 进行协议转换和数据转换,而在实际的应用环境中,面向对象的设计会显得更实用些。
本文主要介绍如何基于 JMS 和 WebSphere ESB 构建企业服务总线,实现 SOAP/HTTP 和 JMS 之间的协议转换;实现 JMS Object Message,Business Object 及 Java Object 之间的数据转换;以及如何实现通过 ESB 来实现 request/response 的交互方式。
示例场景图 1:示例场景图 1 示例展示了一个典型的端到端的 SOA 场景:(1)Service Provider 以 SOAP/HTTP 方式发布 Web Service,该 Web Service 输入和返回都是 Java Object;(2)客户端以 JMS 方式去调用这个 Web Service,需要经过 WehSphere ESB 进行协议转换,WehSphere ESB 将客户端的 JMS 协议转换为服务端需要的SOAP/HTTP 协议;(3)客户端将 JMS Object Message 发送给 WehSphere ESB,WehSphere ESB 通过 SOAP/HTTP 方式请求 Web Service。
在服务请求的过程中,WehSphere ESB 将客户端传入的 JMS Object Message 转换为 Business Object,又将 Business Object 转换为服务端需要的 Java Object;在服务返回的过程中,WehSphere ESB 将服务端返回的 Java Object 转换为 Business Object,又将 Business Object 转换为客户端能识别的 JMS Object Message;(4)客户端向 WebSphere ESB 发送请求和接收返回数据分别在两个队列上进行,客户端只需关注如何将请求的数据转化为 JMS Object Message 并放入WehSphere ESB 的接收队列,以及如何从 WehSphere ESB 的发送队列里取出 JMS Object Message 并解析所需的结果即可。
本示例是基于 WID6.0.2 和 ESB6.0.2 实现的,下面来详细介绍如何实现这一示例场景。
创建 Service provider建立工程 BookOrderService,来担任 Service Provider。
该 service 提供了一个接口方法 order(),其输入和输出分别是 java object:OrderRequest 和 OrderResponse,将此方法发布成 Web Service,如下:1.建立一个 Dynamic Web Project:BookOrderService2.添加对象类、接口和实现类对象类:Address.java包含属性:private String street;private String city;OrderRequest.java包含属性:private String name;private int count;private Address address;OrderResponse.java包含属性:private double totalPrice;接口类:BookOrderIf.javapublic interface BookOrderIf {public OrderResponseorder(OrderRequest req);}实现类:BookOrderImpl.java实现了一个简单的业务逻辑。
public OrderResponseorder(OrderRequest req) {double totalPrice = 10.0 *req.getCount();OrderResponse resp = newOrderResponse();resp.setTotalPrice(totalPrice);System.out.println("ServiceProvider: The book is " +req.getName()+", the city is"+req.getAddress().getCity()+",total price is "+totalPrice);return resp;建立 Mediation Module 的同时,会自动创建名称为 Mediation1 的 Mediation Flow 的组件。
Mediation Module 需要访问刚刚创建的 Service Provider,就需要导入BookOrderImpl.wsdl 文件。
从 BookOrderService Porject 里找到BookOrderImpl.wsdl,复制到 SOAPHTTP2JMSBinding Project。
WebSphere ESB 就是通过 BookOrderImpl.wsdl 来建立对 Service Provider 调用的。
添加 Import 组件Import 组件负责完成对 Service Provider 的 Web Service 进行调用。
打开 SOAPHTTP2JMSBinding 的 Assemble Diagram,添加 Import,更名为:SOAPHTTPImport。
选择 SOAPHTTPImport,添加接口“Add Interface”,选择BookOrderImpl,这正是 BookOrderImpl.wsdl 提供的接口。
Import 组件有几种方式可以访问 Mediation Module 之外的 service provider:Messaging Binding 方式,包括 JMS Binding、MQ Binding 和 JMS MQBinding;Web Service Binding 方式。
因为我们刚才建立的 service provider 的接口是 SOAP/HTTP Web Service,所以 Import 组件需要选用 Web Service Binding 方式。
为 SOAPHTTPImport 添加绑定:“Generate Binding”,选择 Web Service Binding,如图 2。
图 2:Web Service Binding在接下来的对话框中选择“Use an existing web service port”,并“Browse”选择 service ports:BookOrderImpl(因为之前已经导入了BookOrderImpl.wsdl 文件,该文件提供了访问 service provider 的 web service port)。
新建 Business ObjectMediation Module 要进行数据对象的转换,就需要建立内部的数据对象Business Object,来担任数据转换的中间者。
为 SOAPHTTP2JMSBinding 建立新的 Business Object:OrderBO:添加属性:bookname,count,city 和 streetRespBO:添加属性:totalPrice新建接口建立新的 WebSphere ESB 接口,为 service provider 提供新的展现方式,以便向外界提供各种接口方式(各种 Binding 方式,见“添加 Export 组件”)。
为 SOAPHTTP2JMSBinding 新建 Interface:BookOrderIF添加“Request Response Operation”,修改 operation name 为:order,修改参数,如图 3:InputName:orderBOType:OrderBOOutPutName:respBOType:RespBO图 3:New Interface添加 Export 组件为了使外界(JMS Client)访问到 Mediation Module,需要添加 Export 组件。
添加 Export,更名为 JMSExport。
为 JMSExport 添加接口,“Add Interface”,选择“BookOrderIF”(注意是新建的接口,不是 BookOrderImpl.wsdl 提供的接口)。
Mediation Module 可以向外界提供几种方式的接口:∙Messaging Binding:包括 JMS Binding、MQ Binding 和 MQ JMS Binding;∙SCA Binding:SCA 方式提供给其他 Mediation Module 来访问;∙Web Service Binding:提供外界 Web Service 的访问方式。
这里,我们提供 JMS 的访问方式。
为 JMSExport 添加绑定: Generate Binding,选择“JMS Binding”,如图 4。
图 4:JMS Binding弹出对话框,JMS Export Binding 需要复杂的资源设置,如图 5:图 5:JMS Export Binding Configuration因为 JMS 协议要求访问者(JMS Client 和 JMSExport 都是 ESB 资源的访问者)通过 JNDI 来访问队列、队列工厂等 ESB 资源的,因此需要在 ESB 上设置各资源的 JNDI(参见 WAS 配置 ESB)。
在此处需要为 JMSExport 指定各资源的 JNDI。
选择“use pre-configured messaging provider resources”,设置激活规范、接收目标和发送目标:∙JNDI name for activation specification: jms/JMSBindingAS4Export 这个 JNDI 是 JMSExport 访问队列的激活规范(参见 WAS 配置 ESB);∙JNDI name for receive destination: jms/JMSBingQExportRecv这个 JNDI 指向 ESB 的接收队列(参见 WAS 配置 ESB);∙JNDI name for send destination: jms/JMSBingQExportSend这个 JNDI 指向 ESB 的发送队列(参见 WAS 配置 ESB);选择 serialization type: “Serialized Business Object using JMSObjectMessage”。