使用 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 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”。