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

webService-----CXF之一

阅读更多

概览:

      CXF是一个开源的WS开发框架,支持以Frontend的方式编程,支持JAX-WS和JAX-RS标准。支持多协议,如:SOAP,XML、HTTP,RESTfulHTTP,CORBA,支持多传输协议如:HTTP,JMS,JBI。主要是以下几个方面:

  1. 支持 WS标准:CXF 支持多种WS标准,包含 SOAP、Basic Profile、WS-Addressing、WS-Policy、WS-ReliableMessaging 和 WS-Security。
  2. Frontends:CXF 支持多种“Frontend”编程模型,CXF 实现了 JAX-WS API (遵循 JAX-WS 2.X TCK 版本),它也包含一个“simple frontend”允许客户端和 EndPoint 的创建,而不需要 声明注解。CXF 既支持 WSDL 优先开发,也支持从 Java 的代码优先开发模式。
  3. 容易使用: CXF 设计得更加直观与容易使用。有大量简单的 API 用来快速地构建代码优先的 WS,支持 JAX-WS API ,支持 Spring 2.X 更加简化的 XML 配置方式,等等。
  4. 支持二进制和遗留协议:CXF 的设计是一种可插拨的架构,既可以支持 XML ,也可以支持非 XML 的类型绑定,比如:JSON 和 CORBA。

 

项目目标

总要:

  • 高性能
  • 可扩展
  • 简单且容易使用

支持多种标准

  • 支持 JAX-WS、 JAX-WSA、JSR-181 和 SAAJ;
  • 支持 SOAP 1.1、1.2、WS-I BasicProfile、WS-Security、WS-Addressing、WS-RM 和 WS-Policy;
  • 支持 WSDL 1.1 、2.0;
  • 支持 MTOM;

多种传输方式、Bindings、Data Bindings 和 Format

  • Bindings: SOAP, REST/HTTP
  • Data bindings: 支持JAXB 2.x, Aegis, XMLBeans, SDO
  • Formats: XML, JSON, FastInfoset
  • Transports:传输支持 HTTP, Servlet, JMS
  • 扩展 API 允许为CXF增加绑定,以增加对其它消息格式的支持,比如CORBA/IIOP

灵活部署

  • 轻量级容器:可在 Tomcat 或基于 Spring 的容器中部署 Services;
  • 集成 JBI:可以在如 ServiceMix, OpenESB or Petals 等等的 JBI 容器中将它部署为一个服务引擎;
  • 集成 J2EE:可以在 J2EE 应用服务器中部署 Services,比如:Geronimo、JOnAS、JBoss、WAS 和 WL server,等等主流application server.
  • 独立的 Java C/S。

支持多种编程语言

  • 全面支持 JAX-WS 2.X   C/S编程模型;
  • 支持 JAX-WS 2.X 同步,异步,单向API;
  • 支持 JAX-WS 2.X 动态调用接口(DII) API;
  • 支持 wrapped and non-wrapped 风格;
  • 支持 XML messaging API;
  • 支持 JavaScript 和 ECMAScript 4 XML (E4X) ,客户端与服务端均支持;
  • 支持 CORBA;
  • 支持 SCA; (EclipseLink.Tanscany,不知道支持这些不。待查)
  • 支持 JBI ;

代码生成

  • Java to WSDL;
  • WSDL to Java;
  • XSD to WSDL;
  • WSDL to XML;
  • WSDL to SOAP;
  • WSDL to Service;

 

 

 

 

为什么选择CXF?

对WS开发而言,开发人员有很多选择。那么值得一问的问题是为什么我们选择CXF呢?没有什么特别的顺序,我们介绍一下为什么选择CXF。

 

一,JAX-WS支持。

      CXF实现了JAX-WS的API,它使开发人员构建WS变得很容易。JAX-WS包括许多不同的方面:

  • 从WSDL生成JAVA代码及从JAVA代码中生成WSDL。
  • 提供API让开发者创建服务端的简单消息。
  • 提供原生的API让开发者发送XML消息到服务端。
  •  更多......

二,Spring集成。

       Spring是CXF典型的成员。CXF支持Spring 2.0的XML标记符号,使得声明Spring支持的内置的客户端加入应用程序很简单。

 

三,支持数据绑定。

      Aegis Databinding (2.0.x) 是我们自己的数据绑定库,它使得从代码开发的WS真的很容易。不像JAXB,根本不用声明。同时支持很多数据类型,比如:Lists,Maps,Dates,等等都直接支持(right out of the box)。如果你正在构建一个一个典型的WS,你要做的真的很少,它就会完成跑起来。

 

四,RESTful服务支持。

    CXF借助声明 HTTP Binding支持RESTful的WS。使用URI模板和声明就能绑定服务操作到任意的URL/verb中。比如,你可以用@Get@HttpResource("/customers/{id}")来声明一个getCustom方法。然后CXF就会在这个URL上监听GET请求,用{id}来定位一个服务参数。

 五,WS-*支持。

       CXF支持一系列的WS规范,包括WS-Addressing,WS-Policy,WS-ReliableMessaging及WS-Security。

 

六,Apache Licenced。

       因为它在Apache支持下,使得它支持所有应用 。(不明白是麻意思,太吹了吧。)

 

 

如何开发一个服务?

CXF提供了很多种构建WS的选择,这个向导给你一个快速的关于这些选择的预览,让你很快熟悉CXF。

     主要内容是:

  • 不同类型的服务;
  • JAX-WS   JAVA中声明服务;
  • JAX-WS   WSDL中声明服务;
  • JAX-WS  提供者;
  • 简单Frontend编程;
  • javascript

不同类型的服务

        CXF主要支持三种不同类型的服务:

  • SOAP本页主要讲创建SOAP方式的WS。
  • REST-ful 在这个地方描述: here.
  • CORBA

JAX-WS在JAVA中声明服务

JAX-WS包括一系列的声明,让开发人员可以用声明的方式构建服务。这些声明在一个单独的类中,包括一系列的操作。

这儿有个例子:

@WebService
public class Hello {
  public String sayHi(String name) {
    return "Hello " + name;
  }
}

JAX-WS包括很多其它声明:

  • @WebMethod- 允许开发给方法重命名,扩展服务等等。
  • @WebParam- 允许开发人员重命名参数名,命名空间名,操作方向(输入,输出)等等。
  • @WebResult - 允许开发人员 更改服务调用的返回值。

数据从XML转换成JAVA对象,反之亦然(学个词vice versa),主要通过JAXB data-binding.

WS通过一或二种方式发布:

  • JAX-WS  endpoint API
  • CXF  XML配置文件方式,比如<jaxws:endpoint ... />

JAX-WS在WSDL中声明服务:

如果有现成的WSDL文件或者准备先写WSDL文件,然后生成代码,CXF提供很多工具:

注意:CXF约束WSDL支持WSI-BP,而非完全的WSDL1.1标准。

 

JAX-WS提供者:

 

JAX-WS提供者支持开发都创建基于消息级别的WS,而不是基于操作级别的WS。invoke操作既支持有效消息也支持包装过的消息。比如 SOAP body和Soap envelope.

这儿有个例子:

 

@WebServiceProvider
public class HelloProvider {
  public Source invoke(Source request) {
    return ....;
  }
}

 

服务发布还是通过前面说的二种方式。更多信息参看: Developing a JAX-WS Service

 

Simple Frontend方式:

有时候开发人员不想使用声明,也不想使用JAX-WS的API,CXF提供了一种Simple Frontend的方式,几乎允许开发人员使用任何类变成一个服务而没有太多其它工作要做。

CXF使用JAXB作为缺省的数据绑定方式,但开发人员也可以使用aegis数据绑定方式。

服务发布的时候还是前面说的二种方式。不再重复说了。

javascript

CXF provides a Javascript module which allows you to build services in Javascript with the Java Rhino library. One advantage of this is that you can use E4X to interact more easily with the XML. For more information see the JavaScript page.

 

如何开发一个客户端?

     

 

分享到:
评论

相关推荐

    webservice-cxf-spring-jar.zip

    【标题】"webservice-cxf-spring-jar.zip" 是一个包含了使用Apache CXF与Spring框架集成开发Web服务的Java库集合。这个压缩包提供了一整套必要的JAR文件,以便于开发者在他们的项目中快速搭建和运行基于CXF的Web服务...

    webservice-cxf-2.3.5

    Apache CXF 是一个开源的 Web 服务框架,用于构建和部署 SOAP 和 RESTful Web 服务。版本 2.3.5 是该框架的一个历史版本,它在当时提供了丰富的特性和功能,帮助开发者创建高效、灵活的网络应用。下面将详细阐述 ...

    webservice-CXF-spring+maven

    【标题】"webservice-CXF-spring+maven" 指的是使用Apache CXF框架,结合Spring和Maven构建Web服务。Apache CXF是一个开源的Java框架,它允许开发人员创建和消费各种Web服务,包括SOAP和RESTful类型。Spring框架则...

    webService-cxf-demo

    【标题】"webService-cxf-demo" 是一个基于Apache CXF框架实现的Web服务示例项目,主要用于展示如何创建和使用Web服务。CXF是一个开源的Java框架,它提供了多种方式来开发符合WS-*标准的Web服务,包括SOAP、RESTful ...

    Webservice-CXF实用手册学习大全

    - Apache CXF是一个开源服务框架,由ObjectWeb Celtix和Codehaus XFire合并而成,提供了一种简单的方式来构建和开发WebService。 - CXF的核心组件是Bus,它类似于Spring的ApplicationContext,用于管理WebService...

    WebService-CXF.ppt

    WebService-CXF.ppt

    WebService CXF --- 传输文件MTOM

    WebService CXF,全称Apache CXF,是一款开源的Java框架,用于构建和开发Web服务。它支持多种协议和规范,包括SOAP、RESTful、XML以及Web服务标准如WS-*。在"WebService CXF --- 传输文件MTOM"这个主题中,我们将...

    apache-cxf-2.7.18.rar

    cxf自动生成webservice客户端,apache-cxf-2.7.18最稳定的版本 apache cxf 框架wsdl2java命令的使用。 -encoding是指定编码类型; -p 指定包名 -d 指定生成目录 -all生成服务端和客户端代码 -...

    apache-cxf-3.1.6所有jar包

    这个"apache-cxf-3.1.6所有jar包"的压缩文件包含了CXF 3.1.6版本的所有核心库和依赖组件。在Java Web服务开发中,CXF扮演着重要的角色,它提供了SOAP、RESTful、WS-*等协议的支持,让开发者能够方便地创建和消费Web...

    apache-cxf-3.1.1跟3.1.6所有jar包

    在"apache-cxf-3.1.1跟3.1.6所有jar包"中,每个版本通常会包含一组核心库和扩展库,这些库分别负责不同的功能模块。例如,`cxf-3.1.6`和`cxf-3.1.1`目录下的jar文件可能包括了以下组件: - **cxf-api.jar**:包含...

    1.webservice-cxf-helloworld.part2

    webservice-helloworld 视频 两台机器访问,一个是虚拟机。

    1.webservice-cxf-helloworld.part1

    webservice-helloworld 视频 两台机器访问,一个是虚拟机。 高清

    apache-cxf-3.2.4完整版

    Apache CXF-3.2.4是一个强大的Web服务框架,它为开发者提供了丰富的工具和功能来处理复杂的Web服务开发。无论你是新手还是经验丰富的开发者,都能从中受益,因为它提供了易于理解和使用的API以及全面的文档支持。

    webservice apache-cxf-3.0.7 jar包

    - `cxf-rt-frontend-jaxws.jar`:JAX-WS前端模块,用于创建和消费SOAP服务。 - `cxf-rt-frontend-jaxrs.jar`:JAX-RS前端模块,用于RESTful服务的开发。 - `cxf-rt-transports-http.jar`和`cxf-rt-transports-...

    05-ApacheCamel-CXF-WebService

    另一方面,"05-ApacheCamel-CXF-WebService"可能包含了服务端的实现,它展示了如何使用Camel和CXF来创建Web服务。在服务端,首先需要定义服务接口和服务实现,然后通过CXF生成相应的服务部署元数据,如WSDL(Web ...

    apache-cxf-2.2.6.zip webservice cxf开发利器完整开发包

    这个"apache-cxf-2.2.6.zip"压缩包包含了CXF框架的2.2.6版本,是开发人员进行Web服务开发的重要工具。CXF允许开发者通过简单的API来创建、发布和消费Web服务,它支持多种协议和标准,如SOAP、RESTful、WS-*规范等。 ...

    CXF-WebService-开发指南、技术文档.docx

    【CXF WebService 开发指南】 CXF(Commons ...2. **下载CXF**:可以从Apache官方网站的下载页面获取CXF的jar包和源码,例如:[http://www.apache.org/dyn/closer.cgi?path=/cxf/2.3.3/apache-cxf-2.3.3.zip]...

    apache-cxf-3.0.16-jar.zip

    //第三方系统的webservice Client client = dcf.createClient("http://localhost:9010/CxfWebservice?wsdl"); //第三方系统的webservice参数个数 Object[] obj = new Object[2]; obj[0]="CxfWebservice"; obj...

    apache-cxf2.7.18官方版最稳定版本

    1. **安装与配置**:下载并解压`apache-cxf-2.7.18`压缩包,将其添加到项目构建路径中,然后配置相应的Maven或Gradle依赖。 2. **创建服务接口**:定义符合JAX-WS或JAX-RS标准的服务接口和实现。 3. **部署服务**...

    apache-cxf-2.1.4及教程

    在"apache-cxf-2.1.4"版本中,我们可以深入学习CXF的核心特性及其在实际开发中的应用。 首先,让我们探讨一下CXF入门实例。这个部分通常会涵盖如何使用CXF创建一个基本的Web服务。这包括定义服务接口,实现该接口,...

Global site tag (gtag.js) - Google Analytics