`
jnn
  • 浏览: 283546 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

我眼中的CXF 之 ServiceModel

    博客分类:
  • ESB
阅读更多
在前面的文章中给大家简单介绍了CXF是如何和将一个POJO变成一个Web Services的,当中提到一个很重要的一个名词就是Sevices Model,现在我们就简单讨论一下CXF中有关Services Model的内容。

首先大家可以从 CXF的构架 上面获取到Service Model的简要描述。在这里我简单给翻译如下:

Serivce Model负责描述了在CXF所提供的一个服务信息。它由两部分内容组成。一是和WSDL相类似的服务信心,例如 operations, bindings,还有endpoints。 另一部分就是服务自身的信息,这些信息是和CXF runtime相关的,包括ServiceInfo, data-binding 信息,service interceptors,以及服务的一些属性等。
CXF的一个服务信息(service)可以通过Refelection从Java Classes获得,也可以通过WSDL1.1 或者 WSDL2.0获得。一般情况下CXF通过特定的Frontend模块中的ServiceFactory来创建服务信息。ServiceFactory 在创建服务信息的同时也负责进行interceptors,databindings等的配置。

Service Modle中包含了很多Info Class,各模块之间关系如下

ServiceInfo
+-Interface: InterfaceInfo
| +-operations: Collection<operationinfo>
| | +- Input: MessageInfo
| | +- Output: MessageInfo
| | +- Faults: Collection<messageinfo>
+-Bindings: Collection<bindinginfo>
| +-Operations: Collection<bindingoperationinfo>
+-Endpoints: Collection<endpointinfo>


CXF使用了Woden用以从WSDL构建Service Model,大家可以发现Service Model 与 Woden API中对WSDL元素的描述是很类似的。有关Service Model的详细信息大家可以从CXF API中的Java doc以及源代码一窥究竟。

下面我给大家简单介绍几个Service Model在CXF API设计中的应用,希望能对大家使用CXF API有所帮助。

ServerFactoryBean </endpointinfo></bindingoperationinfo></bindinginfo></messageinfo></operationinfo>


在CXF中有几个很相似名词 JaxWsServiceFactoryBean, JaxWsServerFactoryBean,当初我刚接触的时候也困惑了一阵,好在当时正好Dan Diephouse在北京,我就当面问了他一下这个问题,也算是得到一个权威解释了。其实如果大家仔细看过我的上一篇文章和这篇文章,应该对所谓的Server以及Service 的 FactoryBean有一个大概的认识了。

Server 是对服务器端来说,Service是针对服务信息来说的。也就是一个Server必然要包含一个Servie信息。
如果我们使用CXF内部API来创建服务的话,我们只需要通过设置JaxWsServerFactoryBean 就可以发布服务了。如果大家浏览一下具体的代码可以发现 在JaxWsServerFactorBean的构造函数中会创建一个缺省JaxWsServiceFactoryBean. 当然你在构建自己的Server的同时也可以设置自己的ServiceFactoryBean,我的理解是提供这样API目的在于CXF对Spring的支持。你可以在Spring中定义装配符合自己要求的服务,自然需要有读取和设置的这或者那样Bean的方法了。


AbstractServiceFactoryBean


作为ServiceFactoryBean的抽象类这里定义了我们前面提到的服务信息中包含了服务自身的内容,也就是CXF runtime需要的配置信息。主要包含了dataBinding, Interceptors等的信息。

ReflectionServiceFactoryBean


它是simple frontend的ServiceFactoryBean,至于为什么叫做ReflectionServiceFactoryBean要从Simple Frontend支持POJO的服务实现说起。简单来说我们可以通过Reflection API获取到POJO Class的方法,参数以及返回值信息。ReflectionServiceFactoryBean就是在这些信息的基础上,构建Service Model的。当然RefectionServiceFactoryBean 也支持从WSDL创建Service Model。大家在调用ServiceFactoryBean构建Service Modle的时候需要注意一条很重要的INFO日志 "Create service from WSDL: ..." 或者是 "Create sevice from class ..."。 这条日志来表明Service Model是通过WSDL创建还是通过Class信息创建的。

JaxWsServiceFactoryBean


SUN针对Java的Web Service实现先后提出两套API,一个是JaxRPC,另一个JaxWs。 JaxWsServiceFactoryBean继承了ReflectionServiceFactoryBean, 并提供JaxWsAPI的支持。在该类中这里主要是支持JSR181,重载了很多父类的方法,有关createServiceFromWSDL的部分则可重用父类ReflectionServiceFactoryBean.





分享到:
评论

相关推荐

    cxf-3.1.5 和 cxf-3.3.13 JAVA7和JAVA8对应CXF资源

    JAVA7和JAVA8对应CXF资源 WebService CXF 用了一天时间找,官网打不开,国内要积分,下下来又永不了。最后终于搞到手,上传上来分享给大家。 jdk版本 CXF版本 java 9及以上 3.3.x java 8 3.x java 7 2.2x --- ...

    apache-cxf-2.7.7

    CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载

    实战Web Service 之CXF

    实战Web Service 之 CXF 实战Web Service 之 CXF

    webservice框架之CXF-详细技术参考

    Apache CXF = Celtix + XFire,Apache CXF 的前身叫 Apache CeltiXfire,现在已经正式更名为 Apache CXF 了,以下简称为 CXF。CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且...

    CXF源码:CXF_Spring源码

    CXF源码:CXF_Spring源码 CXF源码:CXF_Spring源码

    WebService之CXF开发指南

    WebService之CXF开发指南WebService之CXF开发指南WebService之CXF开发指南

    cxf.xml,cxf-servlet.xml,cxf-extension-soap.xml

    &lt;import resource="classpath:META-INF/cxf/cxf.xml"/&gt; &lt;import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/&gt; &lt;import resource="classpath:META-INF/cxf/cxf-servlet.xml"/&gt;

    Spring CXF Restful 实例

    Spring CXF Restful 实例

    cxf的jar包.rar

    利用Apache CXF开发webservice接口需要用到的jar集合 cxf-core-3.0.15.jar cxf-rt-bindings-soap-3.0.15.jar cxf-rt-bindings-xml-3.0.15.jar cxf-rt-databinding-jaxb-3.0.15.jar cxf-rt-frontend-jaxws-3.0.15.jar...

    apache-cxf-3.0.4

    Apache CXF = Celtix + XFire,开始叫 Apache CeltiXfire,后来更名为 Apache CXF 了,以下简称为 CXF。CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding 、...

    CXF(Webservice)开发手册

    CXF Webservice 开发手册

    CXF 2.3.4 入门简单例子

    说明: 1.本身是一个eclipse 的java project 2.需要JDK5,cxf 2.3.4 log4...关于cxf的深入研究,我发现国人翻译的东西很少,我想尽自己的微薄之力能给大家带些有用的东西,如果有什么关于cxf不明白之处,可以给我留言。

    cxf源代码,样例,cxfdemo

    cxf服务端开发

    cxf3.1.18.rar

    spring 4.2.0 集成的cxf3.1.18的jar包,cxf-core-3.1.18.jar、cxf-rt-bindings-soap-3.1.18.jar、cxf-rt-databinding-jaxb-3.1.18.jar、cxf-rt-frontend-jaxws-3.1.18.jar、cxf-rt-frontend-simple-3.1.18.jar、cxf-...

    用cxf开发webservice

    Apache CXF是一个开源的Service框架,它实现了JCP与Web Service中一些重要标准。CXF简化了构造,集成,面向服务架构(SOA)业务组件与技术的灵活复用。在CXF中,Service使用WSDL标准定义并能够使用各种不同的消息格式...

    Cxf转换器示例

    Web Service Cxf转换器的示例,包含源码和jar包。

    apache-cxf-3.3.5

    Apache CXF is an open source services framework. CXF helps you build and develop services using frontend programming APIs, like JAX-WS and JAX-RS. These services can speak a variety of protocols such ...

    CXF客户端支持最少jar

    CXF 客户端最少jar包支持,CXF 客户端最少jar包支持,CXF 客户端最少jar包支持,

    ssm+cxf(基于Maven开发的ssm框架集成cxf发布web service服务)

    源码里面包含了了一个简单的插入功能,主要是为了测试mybatis是否连接上数据库的时候写的测试类,作为一个刚学java,被抓壮丁的写服务器端的妹子,我只想说,画了我3周才解决了所有的错误啊,真的要自己因为不懂乱写...

    Cxf例子Cxf例子我自己写的

    CXF例子和JAR包 100%能用我自己在公司起不来郁闷死了肯定是环境的问题,家里什么都没弄,jar包导进去就OK了,什么都没弄,起来就OK

Global site tag (gtag.js) - Google Analytics