`
jnn
  • 浏览: 287642 次
  • 性别: 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例子Cxf例子我自己写的

    【标题】:“Cxf例子Cxf例子我自己写的” 在IT领域,Apache CXF是一个非常流行的开源框架,用于构建和开发Web服务。CXF允许开发者利用Java编程语言来创建和使用Web服务,支持SOAP、RESTful等多种通信模式。本示例是...

    cxf 3.1.1 jar包

    CXF(CXF: The Apache CXF project is an open source services framework)是一个开源的Java服务框架,它允许开发者创建和消费各种Web服务。CXF的名字来源于"Code first"和"XML first",代表着它支持从Java代码或者...

    cxf的jar包

    CXF(CXF: Composite eXtensible Services Framework)是一个开源的Java框架,它用于构建和开发服务导向架构(SOA)中的Web服务。CXF允许开发者以他们选择的语言(如Java)编写服务端和客户端代码,同时支持多种Web...

    我的cxf与ws-security

    【标题】"我的cxf与ws-security"涉及的是在Java Web服务开发中使用Apache CXF框架集成WS-Security(Web Service Security)的安全机制。Apache CXF是一个开源的、功能丰富的Web服务框架,它允许开发者创建和消费各种...

    cxf框架包 apache-cxf-3.4.3.tar.gz

    Apache CXF是一个开源的Java框架,它主要用于构建和开发Web服务。这个框架允许开发者通过SOAP、RESTful HTTP、XML以及各种协议来实现服务接口。在本案例中,我们讨论的是"apache-cxf-3.4.3.tar.gz",这是Apache CXF ...

    Cxf转换器示例

    【Cxf转换器示例】是一个关于Web服务技术的实践项目,主要聚焦于Apache CXF框架中的转换器(Converter)功能。Apache CXF是一个开源的Java框架,它用于构建和开发服务导向架构(SOA)和RESTful应用程序。CXF不仅支持...

    CXF-3.1.11jar包

    Apache CXF是一个开源的服务框架,它允许开发人员创建和消费各种Web服务。CXF这个名字来源于两个项目的合并:Celtix和XFire,这两个项目都专注于Web服务的实现。CXF3.1.11是该框架的一个特定版本,发布于某个时间点...

    apache-cxf-2.5.2

    8. **测试工具**:CXF提供了诸如CXF TestSuite之类的工具,帮助开发者进行服务端和客户端的测试。 9. **MTOM/XOP**:CXF支持Message Transmission Optimization Mechanism (MTOM) 和XML-binary Optimized Packaging...

    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 --- ...

    CXF之一 (与Spring整合)

    标题 "CXF之一 (与Spring整合)" 指向的是一个关于Apache CXF与Spring框架集成的主题。Apache CXF是一个开源的Web服务框架,它允许开发者创建和消费各种Web服务,而Spring是一个广泛使用的Java企业级应用开发框架。...

    apache-cxf-3.5.0.zip

    "apache" 指的是Apache基金会,它是开源软件的重要推动者,CXF作为其项目之一,享有高度的社区支持和稳定性。 "前端" 虽然通常指的是Web应用的用户界面部分,但在CXF的上下文中,可能意味着CXF作为服务端组件,为...

    Apache CXF开发Web Service 理解CXF Frontends之Code-First

    Apache CXF是一个开源的Java框架,它用于构建和开发Web服务。这个框架提供了一种灵活的方式来进行服务的创建、发布和调用。"Code-First"是CXF的一个重要概念,意味着开发者首先编写Java代码,然后CXF会自动生成相应...

    CXF客户端支持最少jar

    在Java世界中,Apache CXF是一个广泛使用的开源框架,它提供了服务级的API来构建和消费Web服务。CXF客户端是开发人员用来与CXF服务交互的重要组件,它允许我们轻松地调用远程Web服务。然而,为了减小程序的体积和...

    apache-cxf-2.7.7.zip

    Apache CXF是一个开源的Java框架,它主要用于构建和开发Web服务。这个"apache-cxf-2.7.7.zip"压缩包包含了CXF框架的2.7.7版本,这是一个在2013年发布的稳定版本。CXF是Apache软件基金会的项目,它集成了多种Web服务...

    Spring CXF Restful 实例

    在IT行业中,Spring CXF是一个广泛使用的开源框架,它整合了Spring框架的功能和Apache CXF的服务堆栈,为开发人员提供了构建和实现Web服务的强大工具。在这个“Spring CXF Restful实例”中,我们将深入探讨如何利用...

    cxf源代码,样例,cxfdemo

    【标题】"cxf源代码,样例,cxfdemo" 涉及的主要知识点是Apache CXF框架的使用,特别是其在服务端开发中的应用。Apache CXF是一个开源的Java框架,它允许开发者创建和消费各种Web服务,包括SOAP和RESTful服务。CXF...

    CXF源码:CXF_Spring源码

    【CXF源码分析】 Apache CXF 是一个开源的Java框架,主要用于构建和服务导向架构(SOA)的应用程序。它提供了多种方式来实现Web服务,包括基于Java API for Web Services (JAX-WS) 和 Java API for RESTful Web ...

    cxf所需jar包

    CXF(CXF: Composite eXtensible Services Framework)是一个开源的Java框架,它主要用于构建和部署Web服务。CXF提供了全面的Web服务支持,包括SOAP、RESTful、WS-*规范以及各种协议和绑定。在Java开发环境中,使用...

    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下载

    CXF 一个完整的webService(整合客户端和服务端)

    【CXF:构建Web服务的全面指南】 CXF(CXF: XFire Community eXtended)是一个开源的Java框架,用于构建和部署Web服务。它提供了强大的支持,包括SOAP、RESTful API、WS-*规范等多种协议和服务模型。CXF不仅简化了...

Global site tag (gtag.js) - Google Analytics