`

WebService CXF----JAX-RPC 与 JAX-WS

阅读更多

Web服务:

   1、SOAP

   2、WSDL

   3、JAX-RPC

  

   SOAP 仅描述消息的情况,WSDL 并不会告诉您如何使用 Java 编写 Web 服务。在这种情况下,JAX-RPC 1.0 应运而生。

经过数月使用之后,编写此规范的 Java Community Process (JCP) 人员认识到需要对其进行一些调整,调整的结果就是 JAX-RPC 1.1。该规范使用大约一年之后,JCP 人员希望构建一个更好的版本:JAX-RPC 2.0。其主要目标是与行业方向保持一致,但行业中不仅只使用 RPC Web 服务,还使用面向消息的 Web 服务。因此从名称中去掉了“RPC”,取而代之的是“WS”(当然表示的是 Web 服务)。

因此 JAX-RPC 1.1 的后续版本是 JAX-WS 2.0——Java API for XML-based Web services。

 

   JAX-WS规范是一组XML web services的JAVA API。

   JAX-WS允许开发者可以选择RPC-oriented或者message-oriented 来实现自己的web services。
   在JAX-WS中,一个远程调用可以转换为一个基于XML的协议例如SOAP。在使用JAX-WS过程中,开发者不需要编写任何生成和处理SOAP消息的代码。JAX-WS的运行时实现
会将这些API的调用转换成为对于SOAP消息。
   在服务器端,用户只需要通过Java语言定义远程调用所需要实现的接口SEI (service endpoint interface),并提供相关的实现,通过调用JAX-WS的服务发布接口就可以将其发 布为WebService接口。
   在客户端,用户可以通过JAX-WS的API创建一个代理(用本地对象来替代远程的服务)来实现对于远程服务器端的调用。
通过web service所提供的互操作环境,我们可以用JAX-WS轻松实现JAVA平 台与其他编程环境(.net等)的互操作。

JAX-WS工作原理如下图所示:

 

 

区别

  • SOAP 1.2

    JAX-RPC 和 JAX-WS 都支持 SOAP 1.1。JAX-WS 还支持 SOAP 1.2。

  • XML/HTTP

    WSDL 1.1 规范在 HTTP 绑定中定义,这意味着利用此规范可以在不使用 SOAP 的情况下通过 HTTP 发送 XML 消息。JAX-RPC 忽略了 HTTP 绑定。而 JAX-WS 添加了对其的支持。

  • WS-I Basic Profile

    JAX-RPC 支持 WS-I Basic Profile (BP) V1.0。JAX-WS 支持 BP 1.1。(WS-I 即 Web 服务互操作性组织。)

  • 新 Java 功能
    • JAX-RPC 映射到 Java 1.4。JAX-WS 映射到 Java 5.0。JAX-WS 依赖于 Java 5.0 中的很多新功能。
    • Java EE 5 是 J2EE 1.4 的后续版本,添加了对 JAX-WS 的支持,但仍然支持 JAX-RPC,这可能会对 Web 服务新手造成混淆。
  • 数据映射模型
    • JAX-RPC 具有自己的映射模型,此模型大约涵盖了所有模式类型中的 90%。它没有涵盖的部分映射到了 javax.xml.soap.SOAPElement
    • JAX-WS 的数据映射模型是 JAXB。JAXB 可保证所有 XML 模式的映射。
  • 接口映射模型

    JAX-WS 的基本接口映射模型与 JAX-RPC 的区别并不大,不过二者之间存在以下差异:

    • JAX-WS 的模型使用新的 Java 5.0 功能。
    • JAX-WS 的模型引入了异步功能。
  • 动态编程模型
    • JAX-WS 的动态客户机模型与 JAX-RPC 的对应模型差别很大。很多更改都是为了认可行业需求:
      • 引入了面向消息的功能。
      • 引入了动态异步功能。
    • JAX-WS 还添加了动态服务器模型,而 JAX-RPC 则没有此模型。
  • 消息传输优化机制(Message Transmission Optimization Mechanism,MTOM)

    JAX-WS 通过 JAXB 添加了对新附件规范 MTOM 的支持。Microsoft 从来没有给 SOAP 添加附件规范;但似乎大家都支持 MTOM,因此应该能够实现附件互操作性。

  • 处理程序模型
    • 从 JAX-RPC 到 JAX-WS 的过程中,处理程序模型发生了很大的变化。
    • JAX-RPC 处理程序依赖于 SAAJ 1.2。JAX-WS 处理程序依赖于新的 SAAJ 1.3 规范。

    Content-Type

    • SOAP 1.1 HTTP/SOAP 消息的媒体类型为“text/xml”,其编码处理是在 RFC2376 中定义的。
      • SOAP 1.1: HTTP/SOAP 请求的字符集由 HTTP 头中的 ContentType 字符集参数确定。在 SOAP 消息的 XML 声明部分定义的编码特性将被忽略。如果不指定 ContentType 字符集参数,字符集将被视为 US-ASCII。
    • SOAP 1.2 HTTP/SOAP 消息的媒体类型为“application/soap+xml”,其编码处理是在 RFC3023 中定义的。
      • SOAP 1.2: HTTP/SOAP 请求的字符集由 HTTP 头中的 ContentType 字符集参数确定。在 SOAP 消息的 XML 声明部分定义的编码特性将被忽略。如果未指定 ContentType 的字符集参数,将使用在 XML 声明部分定义的编码特性。如果 ContentType 字符集参数或 XML 声明的编码特性均未定义,它将被视为 UTF-8。
    总结:
    如果您希望继续使用现有的东西,JAX-RPC 将在今后一段时间内继续得到支持。
    如果您不希望升级到 Java 5。
    如果您希望发送采用 SOAP 编码的消息或创建 RPC/encoded 样式的 WSDL。
    • 升级到 JAX-WS 2.0 的原因:

      • 如果您希望使用新的面向消息的 API。
      • 如果您希望使用 MTOM 发送附件数据。
      • 如果您希望通过 JAXB 更好地支持 XML 模式。
      • 如果您希望在 Web 服务客户机中采用异步编程模型。
      • 如果您需要使用能够处理 SOAP 1.2 消息的客户机或服务。
      • 如果您希望在 Web 服务中消除对 SOAP 的需求,而直接使用 XML/HTTP 绑定。
      • 如果您喜欢使用领先的尖端技术。
      •  

         

        在原文:http://xbcoil.iteye.com/blog/661039 做了些修改

        CXF都支持JAX-WS和JAX-RS.不过JAX-RS是JAVA EE 6提出的功能.

        与 WebServices 相关的 J2EE 技术称为 JWS(Java WebServices),其中含有 JAX-WS、JAX-RS、JAXB、JAXR、SAAJ、StAX 等技术。

        支持 SOAP 的是 JAX-WS,即 JSR 224,http://jcp.org/en/jsr/detail?id=224 

        支持 REST 的是 JAX-RS,即 JSR 311,http://jcp.org/en/jsr/detail?id=311

        分享到:
        评论

        相关推荐

          webservice-cxf-spring-jar.zip

          CXF支持JAX-WS和JAX-RS规范,提供了丰富的API和工具,使得开发Web服务变得简单。 2. **Spring框架**:Spring是一个强大的Java开发框架,它提供了依赖注入(DI)和面向切面编程(AOP)等核心特性。Spring可以和CXF...

          webservice apache-cxf-3.0.7 jar包

          5. **前端插件**:CXF提供了多种前端插件,如Spring、JAX-WS、JAX-RS等,使得服务的部署和集成更加便捷。 6. **客户端API**:CXF提供了强大的客户端API,可以方便地调用远程Web服务,支持同步和异步调用模式。 7. ...

          apache-cxf-3.1.1跟3.1.6所有jar包

          3. **JAX-WS和JAX-RS支持**:CXF完全支持JAX-WS(Java API for XML Web Services)和JAX-RS(Java API for RESTful Web Services),使开发者能轻松地创建和消费这两种类型的Web服务。 4. **数据绑定**:CXF支持...

          webservice-cxf-2.3.5

          - **JAX-WS(Java API for XML Web Services)**:CXF 实现了 JAX-WS 规范,使得开发 SOAP Web 服务更加方便,提供了服务端和客户端的工具集。 - **SOAP 消息处理**:CXF 支持 SOAP 消息的编码和解码,包括 SOAP ...

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

          2. **CXF架构**:CXF包含多个组件,如Frontend Client API、JAX-WS、JAX-RS、Data Binding、Transport和Protocol处理等。这些组件协同工作,处理Web服务的请求、响应,以及数据的序列化和反序列化。 3. **JAX-WS...

          apache-cxf-3.1.6所有jar包

          1. **服务接口绑定**:CXF支持多种编程模型,如JAX-WS(Java API for XML Web Services)和JAX-RS(Java API for RESTful Web Services)。JAX-WS允许开发者通过Java注解来定义SOAP服务,而JAX-RS则简化了RESTful...

          WebService CXF --- 由WSDL文件开发Client端

          CXF支持JAX-WS(Java API for XML Web Services)标准,使得基于WSDL的开发变得简单易行。 三、从WSDL生成客户端 1. **获取WSDL文件**:首先,你需要一个有效的WSDL文件,该文件定义了Web服务的接口。这通常由服务...

          apache-cxf-2.7.6所有jar包

          Apache CXF允许开发者以多种方式创建和消费Web服务,包括使用Java API for RESTful Web Services (JAX-RS)和Java API for XML-Based Web Services (JAX-WS)。JAX-RS用于构建RESTful服务,而JAX-WS则用于基于SOAP的...

          apache-cxf-3.1.0

          例如,`cxf-api.jar`包含了CXF的核心API,而`cxf-rt-frontend-jaxws.jar`则提供了JAX-WS(Java API for XML Web Services)的实现。 API文档,通常以HTML或Javadoc形式存在,是理解CXF内部工作原理和使用方法的关键...

          apache-cxf-2.7.7以及cxf客户端所需要的jar包

          它支持Java语言的JAX-WS(Java API for XML Web Services)和JAX-RS(Java API for RESTful Web Services)标准,同时兼容Spring框架,使得集成到现有的企业应用体系中更为便捷。 首先,Apache CXF的核心组件包括:...

          webservice之jax-ws

          JAX-WS取代了早期的JAX-RPC(Java API for XML-based RPC),提供了一个更加现代、轻量级且基于标准的框架。 1. **SOAP与Web服务** SOAP(简单对象访问协议)是一种基于XML的协议,用于交换结构化的信息。Web服务...

          webservice-CXF-spring+maven

          1. **Apache CXF**:CXF允许开发人员使用Java语言编写Web服务,支持JAX-WS和JAX-RS标准。它提供了多种服务端和客户端的生成工具,例如WSDL-to-Java和Java-to-WSDL,使得Web服务的创建和调用更加便捷。 2. **Spring...

          apache-cxf-3.2.7.zip

          Apache CXF是基于JAX-WS和JAX-RS标准的,它允许开发者以编程或基于注解的方式创建Web服务。CXF不仅支持SOAP协议,还支持RESTful API,使得它在Web服务领域非常灵活。 2. **生成Java Web服务客户端**: "wsdl2java...

          cxf-uw-ws-soap

          - 使用CXF,开发者可以通过JAX-WS(Java API for XML Web Services)来创建SOAP服务。JAX-WS是Java中定义Web服务的标准API,它简化了SOAP消息的处理。 2. **三大接口**: - `Service`: 这是JAX-WS规范中的顶级...

          apache-cxf-3.2.4完整版

          这个框架允许开发者使用多种编程模型,包括JAX-WS和JAX-RS,来创建和消费Web服务。在本案例中,我们讨论的是Apache CXF的3.2.4版本,这是一个稳定且广泛使用的版本。 1. **Apache CXF的核心功能**: - **服务端...

          apache-cxf-2.6.2.tar.gz

          CXF不仅支持WS-*(如WS-Security、WS-ReliableMessaging等)规范,还提供了与JAX-WS(Java API for XML Web Services)和JAX-RS(Java API for RESTful Web Services)的无缝集成。 在"apache-cxf-2.6.2"这个版本中...

          apache-cxf-2.7.4

          2. **JAX-WS与JAX-RS支持**:CXF是Java API for XML Web Services (JAX-WS) 和 Java API for RESTful Web Services (JAX-RS) 的实现。JAX-WS用于创建和消费SOAP服务,而JAX-RS则为构建RESTful服务提供了标准化的接口...

          Jax-ws所需要的JAR包

          7. **jaxrpc-api.jar**:尽管JAX-WS已经取代了JAX-RPC,但在某些老版本或特定场景下,JAX-RPC的API仍可能被引用。 把这些JAR文件复制到Tomcat安装目录的`lib`子目录下,可以确保Tomcat在启动时加载这些依赖,从而...

          apache cxf_jar包

          3. **cxf-rt-frontend-jaxws-2.7.12.jar**: JAX-WS(Java API for XML Web Services)前端实现,使得开发者可以使用Java注解来定义Web服务接口和实现,自动生成WSDL(Web服务描述语言)文档。此模块支持服务端和...

          apache-cxf-2.5.0

          CXF提供了多种方式来创建和消费Web服务,包括基于Java API for RESTful Web Services (JAX-RS) 和 Java API for XML-Based Web Services (JAX-WS) 的接口。 标题“apache-cxf-2.5.0”表明这是一个关于Apache CXF的...

        Global site tag (gtag.js) - Google Analytics