信息集成是全球经济一体化的关键,本书阐明了SOA的核心思想和未来软件的发展方向—应用服务的集成。结合具体的实例详细阐述了目前主流的SOA各种关键核心技术的思想内涵:融合Web Service 、JBI、SCA、SDO、BPEL等。\r\n 本书通过实例详细介绍了目前主流的开源的SOA产品技术:涵盖ServiceMix、CXF、Synapse、Mule、Tuscany SCA和Tuscany SDO,以及主流的企业级SOA产品技术:详述BEA Aqulogic Bus 服务总线、IBM WebSphere Integration Developer、IBM WebSphere Process Server和IBM WebSphere ESB服务总线的应用思想和应用开发方法。\r\n 本书指出了目前流行的各种应用软件包及其服务,如ERP、CRM、供应链、零售业、银行信贷等,其本质都是各种业务模块的集成,并分别阐明了对这些业务系统实施SOA集成的基本思想和具体解决方案。\r\n 本书适用于广大的Java程序开发人员,特别是那些希望尽快掌握SOA理论思想精髓和主流SOA核心技术、主流开源SOA产品、主流企业级SOA产品及进行SOA项目实际开发的人员,也适合高等院校相关专业的广大师生作为参考用书。
第1篇 SOA理论思想及核心技术\r\n 第1章 SOA思想概述 \r\n 1.1 IT的本质及其发展历史 \r\n 1.1.1 IT的本质:创建信息和调用信息 \r\n 1.1.2 IT的进一步:集成信息 \r\n 1.1.3 IT程序语言发展史 \r\n 1.2 SOA的基本思想:面向服务 \r\n 1.3 SOA的基本要素 \r\n 1.3.1 松散耦合 \r\n 1.3.2 粗粒度 \r\n 1.3.3 位置和传输协议透明 \r\n 1.4 SOA的目标:敏捷的、不受限制的集成 \r\n 1.5 SOA与佛家禅宗思想的相通之处:“随需而变”与“无所住” \r\n 1.6 小结 \r\n 第2章 Web Service编程详解 \r\n 2.1 Web Service的原理及概念 \r\n 2.1.1 命名空间(name space) \r\n 2.1.2 WSDL的本质:服务内容的标准化描述 \r\n 2.1.3 SOAP的本质:标准的传输协议 \r\n 2.1.4 UDDI的本质:服务的公共网址 \r\n 2.2 Axis的Web Service实现方法 \r\n 2.3 Xfire的Web Service实现方法 \r\n 2.4 构建Eclipse3.1.2+Lomboz+Tomcat5.5.12 开发环境 \r\n 2.4.1 下载和安装各种工具和插件 \r\n 2.4.2 设置Eclipse下面的Tomcat的运行环境 \r\n 2.4.3 调出Lomboz菜单 \r\n 2.4.4 创建Lomboz J2EE Project \r\n 2.4.5 创建Web Module \r\n 2.4.6 将Tomcat加入Webmodule \r\n 2.4.7 配置环境变量 \r\n 2.4.8 在Eclispe中加入Axis的开发环境 \r\n 2.4.9 发布Web Module到应用服务器 \r\n 2.4.10 在Eclipse 3.1.2上运行Tomcat \r\n 2.5 Axis2快速创建Web Service \r\n 2.6 小结 \r\n 第3章 JBI架构思想详解 \r\n 3.1 JBI的基本思想 \r\n 3.1.1 应用服务器的现状 \r\n 3.1.2 JBI的BC组件(绑定组件Binding Components) \r\n 3.1.3 JBI的SE组件(服务引擎Service Engines) \r\n 3.1.4 JBI的NMR(规格化消息路由器Normalized Message Router) \r\n 3.2 一个JBI的实例 \r\n 3.2.1 实例的流程图 \r\n 3.2.2 实例的服务器端ServiceMix的实现 \r\n 3.2.3 客户端调用程序 \r\n 3.3 JBI的工作原理 \r\n 3.3.1 组件的初始化 \r\n 3.3.2 服务调用模式(Service Invocation Pattern) \r\n 3.3.3 消息交换模式(Message Exchange Pattern) \r\n 3.4 MessageExchange消息交换 \r\n 3.5 NormalizedMessage规格化消息 \r\n 3.6 小结 \r\n 第4章 SCA架构思想详解 \r\n 4.1 SCA概述 \r\n 4.1.1 SCA的核心 \r\n 4.1.2 通过实例介绍SCA组件和现有组件的根本区别 \r\n 4.2 服务组件SCA Component \r\n 4.3 服务模块SCA Composite \r\n 4.3.1 SCA服务模块的基本原理 \r\n 4.3.2 SCA服务模块的实例 \r\n 4.3.3 连线(Wire)和提升(Promote) \r\n 4.3.4 绑定(Binding) \r\n 4.4 服务子系统(SCA Subsystem) \r\n 4.5 SCA和JBI的根本相同点与不同点 \r\n 4.6 小结 \r\n 第5章 SDO编程思想详解 \r\n 5.1 SDO的架构 \r\n 5.2 通过一个实例描述SDO和现有数据对象的区别 \r\n 5.3 数据图(Data Graph) \r\n 5.3.1 从XML文件得到Data Graph实例 \r\n 5.3.2 通过SDO的API创建Data Graph实例 \r\n 5.3.3 Data Graph的API介绍 \r\n 5.4 数据对象(Data Object) \r\n 5.5 修改概要(Change Summary) \r\n 5.5.1 修改概要(Change Summary) 功能详解 \r\n 5.5.2 Change Summary实例 \r\n 5.6 属性(Property) \r\n 5.6.1 属性(Property)功能介绍 \r\n 5.6.2 属性(Property)实例 \r\n 5.7 类型(Type) \r\n 5.7.1 类型(Type)功能介绍 \r\n 5.7.2 类型(Type)实例 \r\n 5.8 顺序(Sequence) \r\n 5.8.1 顺序(Sequence)功能详解 \r\n 5.8.2 顺序(Sequence)实例 \r\n 5.9 小结 \r\n 第6章 BPEL编程思想详解 145\r\n第2篇 开源服务总线、JBI、SCA和SDO\r\n 第7章 基于JBI的ServiceMix服务总线\r\n 第8章 CXF(Celtix/Xfire)服务总线 \r\n 第9章 Apache Synapse服务总线 \r\n 第10章 Mule服务总线 \r\n 第11章 Apache Tuscany的Java SCA \r\n 第12章 Apache Tuscany的Java SDO \r\n第3篇 企业级服务总线、SCA、SDO、BPEL\r\n 第13章 BEA Aqulogic服务总线 \r\n 第14章 基于IBM WebSphere Integration Developer(WID)的SCA开发详解 \r\n 第15章 基于IBM WID和WebSphere ESB Server的ESB开发详解 \r\n 第16章 基于IBM WID和WebSphere Process Server的BPEL开发详解 \r\n第4篇 实施篇\r\n 第17章 SOA项目集成解决方案 \r\n后记
梁爱虎,博士,IBM高级IT专家。曾在美国硅谷多家公司(Netpace、Angelengineers、Octasoft、Cynosure technology、Getsilicon等)任高级软件工程师,从事基于J2EE的网上知识竞赛、数据挖掘、网上电子银行系统、网上股票交易系统、半导体芯片生产相关的供应链管理系统(SCM)等项目的设计开发。
现任中国IBM公司高级IT专家,是多个大型项目的技术负责人。包括以technical leader的角色负责基于SOA架构的美国pepboys汽车修理和加油连锁店POS系统项目的设计和开发。以solution and architectureleader的角色负责Motorota渠道销售系统mychannel的J2EE项目设计和开发,以lead architect的角色负责Sony的J2EE网站项目的设计开发,以applicationarchitect的角色负责基于SOA架构的北京朝阳区(包括奥运会场馆)图像信息管理系统的设计开发等。
全球经济一体化正在成为整个世界经济的发展趋势。整个世界的经济活动主要是由信息流、资金流、产品生产和物流组成的。其中信息流是最核心的环节,它用来驱动资金流、产品生产和物流。
一个企业是其上游供应商的消费者,同时它也会成为其下游企业的供应商,这样使整个世界经济成为一个不可分割的经济链。每个企业通过这个经济链的进账和出账来获取利益。一个企业一旦被挤出这个经济链,它也就失去了存在的价值。这个经济链表面上看起来是由资金流、产品生产和物流来构成的,但是其本质是由一个无形的信息链构成的。一个企业如果不能很好地掌握这个信息链,就会被挤出这个经济链。随着这个经济链的运转越来越迅速,每个企业都有随时被甩出这个经济链的危险。作为一个企业,如果要屹立于这个“经济链”或者“经济洪流”之中,必须要做到两点:一是要随时了解外部的市场需求并调整自己的商业战略;二是要对外部市场需求作出快速的反应。以上两点归结为一点,就是“随需而变”。
IT(Information Techology,信息技术)服务的本质就是“信息”(或者是“经过加工、集成的信息”)的存取。作为一个经济活动的企业,需要管理好企业内部信息(如产品生产信息、库存信息、财务信息、订单信息、发货信息等)、企业外部信息(上游供应商信息、下游销售渠道信息、下游消费群体和个人信息等),以及企业内部和外部相关信息(如给上游供应商的订单信息、上游供应商的发货信息和给上游供应商的财务付款信息等)。
一个企业如果很好地集成了企业内部信息,也就是集成了自己内部的“信息孤岛”,它就可以很快对外部市场的需求作出快速的反应。企业对信息集成的愿望一直都是存在的,但是现有的技术极大地妨碍了这一愿望的实现。现有的技术障碍主要包括以下几个方面:
服务的非标准化;
接口和服务的紧密耦合和各种应用的紧密耦合;
各种应用接口的粒度过细,不能反映业务的真实需求;
服务的位置和传输协议的非透明化。一旦服务的位置和传输协议发生变化,所有客户端的调用程序都需要修改。
“SOA”的出现,恰逢其时。“SOA”采用松散耦合的服务、反映业务真实需求的粗粒度的服务,以及位置和传输协议透明的服务,消除了信息集成的障碍,它能使企业随市场的需求而“随需而变”。此外它还采用“点石成金”的方法,在不改变现有系统的基础上,使其能够和其他系统进行轻松集成。
业务和技术的紧密耦合妨碍了业务的快速更新,一直是广大企业的“心病”。SOA将业务与技术完全分离的架构思想使得企业能够对外部市场的变化作出迅捷的反应。
目前Java作为一种跨平台的语言已经成为软件编程的主流。随着SOA时代的到来,Java语言本身将会进一步整合,Java将会向更简单化及更标准化的方向发展。其中的标准化主要分为以下两个方面。
第一个方面是数据存取方法的标准化。如XML文件数据的存取方法和数据库JDBC数据的存取方法就不一致,一个Java开发人员在实际项目中需要知道各种数据调用方法的差别之处,这一方面导致IT技术人员总是需要不停地学习新出现的技术,使得IT技术人员相当辛苦。另外,因为这些接口标准的不一致,也导致了不同系统之间互操作性的难度。
所有接触过JDBC的开发人员,都会因为同一个JDBC接口方法可以存取不同的数据库数据的功能而受益,这主要由于不同的数据库都有其独特的JDBC的driver包,通过JDBC的driver包将不同数据库的差异性摆平,使得同一个JDBC的存取方法能够调用不同的数据库数据。例如上面提到的XML文件数据和JDBC数据库数据将会采用相同的存取方法,同时通过XML的帮助包(helper类)及JDBC的帮助包(helper类)将它们的差异性摆平。这就是IBM、BEA等全球IT企业联合推出的SDO(Service Data Object)数据模型编程标准和规范。
第二个方面是业务组件调用的标准化,目前的各种业务组件的调用方法都不一样,如EJB Session Bean的调用方法、Web Service的调用方法、JMS的调用方法等,它们的调用方法都不一样,这样增加了资源整合的难度。有鉴于此,目前IBM、BEA等全球IT企业联合推出Service Component Architecture (SCA)标准,用以统一各种业务组件的调用。同时Sun也推出了JBI标准,通过正规消息路由器(Normalized Message Router,NMR)来统一业务服务的调用。值得说明的是,目前IBM和BEA对JBI不是很支持。无论如何,业务组件调用的标准化也必然是大势所趋。
数据存取方法的标准化(SDO)、业务组件调用的标准化(SCA或者JBI)和传输协议的标准化(Web Service)将很快成为SOA的标准,同时将进一步降低Java的入门门槛,更重要的是这些标准化的方法将会使IT资源的整合更加容易。随着SOA标准化的进一步发展,必将导致IT资源整合的加速,SOA应用必将遍布于各个领域,大量标准化的服务必然大量涌现,将创造大量新的就业机会,同时也是广大IT人员需要转型的方向。
本书缘起的另外一个很重要原因是SOA只是一个架构,真正要实现SOA一定需要具体的平台性的产品来支持。目前已经有了大量的企业级和开源的SOA产品,本书将其原理和应用方法通过有代表性的实例展现出来,希望对读者开发SOA项目能起到帮助作用。
笔者希望,在不久的将来,以Java为主导的“SOA”集成技术将会把全球的“信息孤岛”整合起来,使这个地球成为一个真正意义上的“地球村”。在每一个时刻,每一个“信息岛”的每一个需求都会被传达到“地球村”的每一个地方,得到最快的反应。
本书的组织架构和主要内容
本书覆盖4个主流SOA。
主流的SOA的核心技术思想:Web Service、JBI、SCA、SDO、BPEL。
主流的SOA的开源产品技术:ServiceMix、CXF、Synapse、Mule、Tuscany SCA、Tuscany SDO。
主流的SOA的企业级产品技术:BEA Aqulogic Bus服务总线、IBM WebSphere Integration Developer、IBM WebSphere Process Server、IBM WebSphere ESB服务总线。
主流的SOA解决思想和方案:应用于ERP、CRM、供应链、零售业、银行信贷等行业。
全书共分为4篇。
第1篇 SOA理论思想及SOA核心技术:对SOA的核心思想和目前的主流SOA标准技术进行了全面的阐述。
第1章 SOA思想概述:说明IT的本质和历史,阐明了SOA应用的指导思想,说明了SOA的构成及实施SOA的益处和方向。
第2章 Web Service编程详解:用通俗的实例阐明Web Service的本质,说明如何快速创建Axis的Web Service,如何快速创建Xfire的Web Service,如何快速创建Axis2的Web Service,以及构建Eclipse3.1.2+Lomboz+Tomcat5.5.12开发环境。
第3章 JBI架构思想详解:说明其他J2EE容器的不足之处,以及JBI的核心思想。通过一个具体实例解析JBI的实现步骤及所要创建的组件,阐明了JBI容器的基本原理,说明JBI是如何通过MessageExchange实现消息交换的,以及JBI容器所交换的消息规格化消息。
第4章 SCA架构思想详解:阐明SCA的核心思想,通过实例说明如何创建SCA服务组件、创建SCA服务模块,以及SCA如何集成服务组件、在服务子系统(SCA Subsystem)中集成服务模块,SCA和JBI的相同点与不同点。
第5章 SDO编程思想详解:说明如何用统一的SDO API实现对不同数据源的读取和更新,通过实例描述SDO和现有数据对象的区别,以及数据图(Data Graph)、数据对象(Data Object)、修改概要(Change Summary)、属性(Property)、类型(Type)和顺序(Sequence)的基本功能及其调用方式。
第6章 BPEL编程思想详解:结合Java程序的实例说明BPEL的基本思想,通过房屋贷款的实例详细说明BPEL的创建过程,阐明BPEL的各种过程组件和各种活动的概念和用法。
第2篇 开源服务总线、JBI、SCA和SDO:通过实例详细介绍目前主流的开源的SOA产品及其SOA应用。
第7章 基于JBI的ServiceMix服务总线:阐述如何在ServiceMix中创建Web Service服务,如何创建代理,如何实现和外部服务集成,如何实现信息格式转换,如何根据消息内容实现动态路由,如何通过BPEL实现服务集成。
第8章 CXF(Celtix/Xfire)服务总线:阐述CXF架构体系和主要功能,通过Hello实例和房屋贷款实例说明CXF如何创建服务、发布服务及创建客户端实现对服务端的调用,以及如何用ServiceMix集成CXF所创建的服务。
第9章 Apache Synapse服务总线:阐述Apache Synapse的架构体系和主要功能,介绍如何通过Synapse实现代理外部服务、消息转换,以及消息内容的
无封面