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+MTOM这些.

待续…

3 条评论。

  1. 大侠,这个例子你能不能写完啊……我等了好久了

    一直不知道怎么通过CXFBC与CXFSE通信,不知道怎么写

    通过上一节知道可以通过BC调用外部的webservices,那SE是怎么通过BC调用webservice?

  2. 你好,请问有没有这方面更多的资料,我想学习

  3. @Daniel可以参考FuseESB的相关文档比较全面.