Posts Tagged: ESB

Apache Servicemix 教程 - EIP基础

有段时间没写这系列文章了,今天“心血来潮”写上一篇. EIP即Enterprise Information Portal. 是ESB领域一个比较重要的概念,事实上不单单是ESB, EIP可以用在很多地方,相对于BPEL更加底层. 关于EIP有一款非常著名的开源产品,也是apache顶级项目之一 Apache Camel http://camel.apache.org/  这里Servicemix对Camel也有专门的JBI封装,并且Servicemix也很推荐使用Apache Camel作为其EIP. EIP的范畴太大(我水平也有限),我们这里只讲在Servicemix里的EIP.  推荐一部EIP经典之作,《Enterprise Integration Patterns 》构架师必备宝典之一. 涵盖了EIP所有的设计模型.Apache Camel就是几乎对这本书所讲到的模型都做了实现.堪称经典中的经典. 本章作为基础,不想扯到Apache Camel上去,只对servicemix自带的eip进行讲解.熟悉以后可以轻松过渡到Apache Camel中去. 开始之前,请确认了解XML相关知识,如Xquery、Xpath、命名空间等. 不了解朋友请先在W3C网站上学习相关知识. http://www.w3school.com.cn/x.asp 打开servicemix-eip文档,可看到其支持的11种路由方式. 就一般应用而已也是足够的了. Content-Based Router 消息内容路由 Message Filter 消息过滤 Pipeline in-only –> in-out 消息桥接. Static Recipient List 多目的消息路由,即one consumer 到 multi provider Static Routing Slip 静态路由规则. 即设定路由线路.使其按照线路一步步走下去 Wire Tap 消息监听路由 XPath Splitter 消息分割路由.即把单一消息切割成多个消息 Aggregator 消息聚合路由.即上面的反过来 Content Enricher 内容再造路由.消息通过此路由可以进行一些额外的交互,比如数据库 R

......

Servicemix  ESB  教程  

Apache Servicemix 教程 - GET/POST传递

   这几天在南京出差,参与一个华为巴西的POC演示项目. 涉及到CRM,OSS,BSS,BA等多个生产系统. 原先项目采用WebLogic作为中间件(浙江电信自己的中间件,部署在Weblogic)上.由于该中间件的局限性,其他系统SOAP传递有点问题, 因此对方简易使用别的ESB产品,已便于支撑项目能够完成.    CRM系统是把浙江电信CRM完全移植,采用sieble7. 可能是时代的局限性, sieble7还不支持soap消息的传递,而是使用一种特定结构的xml,通过post方式传递到外部系统. 最新的sieble8应该不会有这个问题.    然而,阅读Servicemix文档,可以发现Servicemix并没有直接的HTTP Post/Get的Binding Component. 然后自己观察就可以发现,Servicemix提供了HTTP Binding Compoent组件, 而POST/GET方式正式最基本的HTTP提交方式. 因此完全可以用HTTP Bingding Compoent支持这点. HTTP Binding Compoent    http://servicemix.apache.org/servicemix-http.html   阅读HTTP Binding Compoent的文档.并没有找到那里有设置GET/POST参数的地方, 而POST/GET传递方式,最基本的一点是必须要有一个参数作为载体,然后通过这个载体传递到服务端.   继续翻文档,翻Mail List,终于找到servicemix有个相似的例子: Http Upload    使用HTTPMarshaler完全可以解决我们的需求. Http 配置 xmlns:http="http://servicemix.apache.org/http/1.0" xmlns:novaesb="http://www.fengsage.com/novaesb" xmlns="http://www.springframework.org/sch

......

Servicemix  ESB  教程 

Apache Servicemix 教程 - CXFSE

前面我们讲了Servicemix最常用的组件之一CXFBC的使用,几乎常见的接口开发都会用到,这里我们介绍CXFSE,从名字上可以看到这是一个SE组件.属于JBI内部的数据处理单元. SE 即 Service Enging 服务引擎,JBI一个重要概念,基本概念参考此处  从官网上我们可以看到下面几个特征 JSR-181 annotations JAXB2/Aegis/XMLBeans databinding WSDL auto generation Java proxy support MTOM / attachments support 我们关心最后2个,其实这几个都属于WebService或CXF框架本身的范畴,这里因为Servicemix用到了CXF所以这些特征也带了,想获得详细特性的请访问CXF官网. 其实简单来说,CXFSE最主要的功能是用代码发布一个WSDL,但是,这个WSDL是在JBI容器内的,不对外的,因为CXFSE是一个SE组件而非BC组件,根据JBI规范,不能用于协议转换. CXFBC+CXFSE 可以做到在Servicemix容器内发布自己的Webservice. 虽然这种做法比较少见,因为Servicemix主要把现有的系统集成,而不是自己发布服务. 一、Java Proxy 官网上这句话解释的非常清楚,‘You can create java proxies for JBI endpoints, provided that they expose a WSDL.’ 要理解这句话,首先要明白一件事,即JBI内部用来描述一个服务,也是采用了WSDL规范,这不能说是JBI就是WSDL规范,只能说是JBI用了WSDL规范来描述自身的服务.因此这里我们可以很显性的把一个JBI的组件向外暴露出WSDL,通过CXF-BC直接暴露给外部.当然一般业务角度上来说,这是危险的. 二、MTOM Support CXF支持MTOM,Servicemix没理由不支持,只需按如下申明即可 <cxfse:endpoint mtomEnabled="true" ... /> 结合上面说的一对P话,我们来实际做一个例子,即Servicemix发布一个服务,该服务允许上传附件,即用到了CXFBC+CXFSE

......

Servicemix  ESB  教程  

Apache Servicemix 教程 - CXFBC

主要介绍下Servicemix最常用的组件之一servicemix cxfbc的使用,官方上有比较详细的文档,英文好的朋友可以直接点击查看   CXF 同时也是apache的一款webserivce框架.Java开发者可以使用cxf快速的发布webserivce或者作为客户端调用别的webserivce.   在Java世界里,webserivce本质上就是把java bean对象序列化成xml文本,并包装成SOAP格式的消息传递到服务端,由服务端反序列化xml消息到java bean调用相关服务. Note:这里的序列化和反序列化,涉及到2个标准,即jax-rpc和jax-ws规范 这2个规范无论是对SOAP的格式还是java-xml间互转都有着本质上的不同.JDK1.5以后,sun已经把jax-rpc移除了jdk中去. JDK1.5开始都采用jax-ws规范. 这里cxf同样只支持jax-ws规范.   我们先来写一个简单的webservice程序,充当集成的一个系统,我们称这个系统为mock系统. 如何开发一个webserivce不是这里的重点,可以点击此处下载已开发完好的webservice程序,只需把war包扔到Servlet容器内部署即可. 这里我们假设我需要集成一个订单受理系统.   浏览器内输入 http://localhost:8000/mock/services/order?wsdl   打开如下图,则启动正常 好了,我们开始对这个mock系统进行集成,因为是例子,我做的尽量简单,只使用cxfbc一个JBI组件来开发,现实环境中一般还用上xslt作为数据树结构转换,这里我们先不用. 一、编写自定义WSDL,   CXFBC是一个BC组件,简单来说其实是一个WebService的代理组件,使用这个组件我可以不写任何一行代码,来和一个现有的WebService进行连接,虽然不用写代码,但我们却需要编写一个WSDL文件,这样ESB暴露给别的系统的就是这份WSDL文件,调用后CXFBC组件会把这份WSDL产生的SOAP消息,发往外部系统,这里是我们的mock系统. 大致关系如下:    Client   -- soap &nda

......

ESB  Servicemix  教程  webservice 

Apache Servicemix 教程 - 安装部署

简单介绍下Servicemix安装、使用、部署,并简单介绍下Servicemix简单配置. 安装 下载Servicemix  http://servicemix.apache.org/download.html 由linux和windows两个不同版本 解压到指定文件夹(zip/tar.gz) Note:目前最新版本是3.3.2 和 4.0.0 运行 cd <SERVICEMIX_HOME> windows:   .\bin\servicemix.bat linux:          ./bin/servicemix Note:由于linux启动servicemix,会随终端退出而关闭,需要使用nohup命令,使其脱离终端独立运行 部署 Servicemix提供2种主要监控方式 热部署目录. 即把开发好的SA直接放到<SERVICEMIX_HOME>\hotdeploy目录中去即可 脚本部署. Servicemix运行使用ant或maven脚本方式,直接把开发好的SA植入到JBI容器内 Note:Servicemix提供了部署MBena,用户可以使用此MBean开发第三方程序进行部署 监控 Servicemix并没有提供第三方监控工具,而是推荐使用sun的jconsole工具,该工具位于JDK bin目录中和java 、javac等命令在一个目录下,操作如下 命令行输入jconsole 在远处连接处输入"service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi"  默认用户名和密码都是smx 点击"连接"按钮即可对Serivicemix内部资源进行监控 Note:Servicemix的第三方生产商FUSE提供了HQ监控工具,但是由于不开源,所以大家无福消受了.   关于开发 官方推荐使用maven作为Servicemix的开发工具,个人也强烈推荐,简单方便.详细的maven教程可以参考maven官方网站.http://maven.apache.org/ 这里简单讲一下如何建立一个Service

......

ESB  Servicemix  教程  webservice 

Apache Servicemix 教程 - 介绍及理论

经过一年来ESB学习和工作的部分经验.即给自己总结的时间,把脑海中关于ESB的部分进行整理,也留下点心得,也想和对ESB感兴趣,有研究的朋友进行交流.不足之处望予以批评指正. 基础概念 1. ESB ESB(Enterprise Service Bus)是为了解决企业生态群落内大量系统间因为交互繁琐导致维护成本增加而产生的.下图是典型的传统多系统间数据交互图.随着生态群落的扩大,越来越多的系统加入,导致维护这些系统的通讯成本越来越多 ESB的诞生就是为了解决上图中的这些问题,下图可以可以看到ESB所解决的实际问题. 2. Apache Servicemix Apache是著名的开源社区,正对不同应用都有很多对应的开源产品,对开源有兴趣的朋友可以进入官网学习. 对于ESB. Apache主要有2款产品: Synapse 和 Servicemix Synapse,这款产品是apache早期的一款ESB产品,诞生于JBI规范制定之前,属于众多ESB产品中一个普通的产品,并没有什么太吸引人的地方. 但随着WSO2这款新ESB的兴起,发生了点改变.WSO2是WSO2公司正对Synapse进行二次开发后的产物,因为使用了apache licese因此也开源.并且提供了强大的可视化界面,通过几步简单的配置就能完成系统间接口的集成. ServiceMix,我们重点讲这款产品.这款产品是目前Apache主推的一款ESB产品,遵循了JBI规范,可以很方便的进行二次扩展,其自带的组件基本能完成一般系统集成的需要,是构建SOA的良好产品.目前Servicemix主要有2个版本在维护,即3.*和4.*两个版本,这里我们讲3.*版本. 3. Apache CXF 目前比较成熟功能比较齐全的webserivce工具.可以用来发布自己的webserice程序,并能作为webserivce的客户端. Servicemix使用cxf作为其webserivce的一个发布工具. 4. Apache Camel Apache Camel是一个开源的企业应用集成框架。它采用URI来描述各种组件,这样你可以很方便地与各种传输或者消息模块进行交互,比如HTTP、 ActiveMQ、JMS、JBI、SCA、MINA或CXF Bus API。该路由完全参照了《Enterprise Integration

......

ESB  Servicemix  教程  webservice 

斯里兰卡工作日记(第八天)

前面几天懒得写了~ 不管在哪里生活都一样,时间长了也就只剩下平淡了,我想习惯品尝平淡生活也许会更好吧!

昨天是回家的日子,这次回程整整花来 24 小时以上,回到家又累又难受,洗个澡就睡了! 此文成于回来后第一天.

回顾这几天的旅行,有刚开始的兴奋,到后来的平淡. 工作由刚开始的紧张,到后来的随性而发. 从这过程中我学到了很多东西. 积累了一定的海外工作经验. 我想这是此行最大的收获了吧.

当然也遇到了很多问题.这些问题也是由于我工作疏忽不仔细,看轻问题所造成的. 经理安慰了我,责任不全在我.但如果我能把工作做好,让客户找不到岔那不是更好嘛!看了平时的工作我还不够仔细,也看轻了此任务的难度.后面工作开始,我要争取克服这些毛病,全面推进这个项目的进行.

抛开公司间合作的问题.此项目作为我人生第一个国际项目,推进它知道成功,我责无旁贷.虽然能力有限,但会继续努力的~

SriLanka  ESB 

斯里兰卡工作日记(第三天)

今天上午被告知,下午要跟SLT讲解我们ESB产品相关知识.但一想到偶悲剧的英语就心里没底,好在有印度同事可以帮我分担一部分解释工作.

中午我们在住所对面的中国餐馆(毛家菜)吃了顿饭.好像花了4000RS,差不多200多人民币,还是挺贵的.而且还收什么服务费,虽然在斯里兰卡收这费用很正常,但也不看在中国同胞的份上便宜点,以后尽量不去吃了,还是自己做来吃好了.

下午1:30 四人做两辆Tuktuk去了SLT. 今天主要都是技术在场,所以问题很多,没10多页的PPT,一直讲到了4点的样子. 偶尔我也能流利的说了一串英文,我想这是1年来在这个项目上最大的飞跃了.暗暗庆幸下 大笑

晚上再次有Mr Huang做了菜,不过当地菜材料实在糟糕,可惜了Mr Huang的手艺

SriLanka  ESB 

斯里兰卡工作日记(第二天)

今天是到斯里兰卡的第二天,也是正式工作的第一天.

今天凌晨另一个印度同事也从印度飞了过来.

早上斯里兰卡的CIO Wijeweera开车来接我们,可惜车小了点,4个大男人挤在一起.难受.....

住所离SLT只有2公里,路上也挺堵的.不过比杭州好多了冷酷

上午跟Geneva和Clarity的厂商介绍了我们的产品(CRM/ESB)

中午吃了顿当地的饭菜(辣死了)

下午分两组,我和Geneva负责人Ranjeeva就前段时间的技术问题进行了讨论,并解决了问题.一切按照计划进行

很"佩服"SLT的管理者,5点l另一组还讨论激烈着 SLT的负责人竟一个个走光了,原来是没加班的习惯.⊙﹏⊙b汗

晚上做Tuktuk(残疾车)回的住所. 到附近逛了一圈,奇迹的事又在那边遇到了个中国妇女,竟然也是做小姐的....同样很坦诚的承认,还鼓励我们去附近的赌场.无语.....

在超市购物遇到了个漂亮的姑娘,这次是正常的了,在当地和丈夫开中国海鲜餐馆,应该弄的不错,住所里我们住的别墅很近,同一条街(Colombo 3是富人区)

SriLanka  ESB 

斯里兰卡工作日记(第一天)

昨天凌晨下的飞机,由于时差+生物钟影响,当地时间4点就醒了(北京时间6:30),只睡了3小时,再睡也睡不着了.

今天没有具体事情,休养为主.

晚上在斯里兰卡做了一顿中国餐,在超市遇到几个中国小姐,让我无语的是她们很坦然的承认是在这里做妈妈桑兼小姐.皱眉 看来出了国小姐都不一样了


由Mr Huang亲自操刀的一桌菜

SriLanka  ESB