JAX-WS 2.0 是 JAX-RPC 1.1 的后续版本。本文将引出对这两个 Java™ Web 服务编程模型进行比较的一系列文章。
<!-- START RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters -->
<!-- END RESERVED FOR FUTURE USE INCLUDE FILES-->
引言
Web 服务已经出现很久了。首先是 SOAP,但 SOAP 仅描述消息的情况,然后是 WSDL,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-RPC 1.1 和 JAX-WS 2.0 的差异前,我们应该首先讨论一下二者的相同之处。
- JAX-WS 仍然支持 SOAP 1.1 over HTTP 1.1,因此互操作性将不会受到影响,仍然可以在网上传递相同的消息。
- JAX-WS 仍然支持 WSDL 1.1,因此您所学到的有关该规范的知识仍然有用。WSDL 2.0 规范已经接近完成,但在 JAX-WS 2.0 相关工作结束时其工作仍在进行中。
区别何在?
- 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 规范。
在本文剩下的篇幅中,我们将讨论 SOAP 1.2、XML/HTTP、WS-I Basic Profiles 和 Java 5。上面的其余五个部分将分别在本系列技巧文章中单独讨论。
|
SOAP 编码
SOAP 编码已经在 Web 服务社区失宠了。WS-I Basic Profile 不支持它。因此,作为 Java Web 服务的最新版本的
JAX-WS 已不允许使用 SOAP 编码。JAX-RPC 支持 SOAP 编码,因此,如果真的必须使用采用 SOAP
编码的消息,则请仍然使用 JAX-RPC。
|
|
SOAP 1.2
从编程模型的角度而言,SOAP 1.1 和 SOAP 1.2 之间并没有太多的差异。作为 Java 程序员,您只会在使用处理程序时遇到这些差异,我们将在以后的技巧文章中对如何处理这种情况进行讨论。SAAJ 1.3 已更新以支持 SOAP 1.2。
XML/HTTP
与 SOAP 1.2 的更改类似,从编程模型的角度而言,SOAP/HTTP 和 XML/HTTP 消息之间并没有太多的差异。作为
Java 程序员,您只会在使用处理程序时遇到这些差异,我们将在以后的技巧文章中对如何处理这种情况进行讨论。HTTP
绑定具有自己的处理程序链和自己的一组消息上下文属性。
WS-I Basic Profiles
JAX-RPC 1.1 支持 WS-I Basic Profile (BP) 1.0。从那时起,WS-I 人员就完成了 BP
1.1(以及关联的 AP 1.0 和 SSBP 1.0)的开发。这些新概要阐明了一些小要点,更明确地定义了附件。JAX-WS 2.0
支持这些较新的概要。在大部分情况下,其间的差异并不会影响 Java 编程模型。不过附件除外。WS-I
不仅处理了有关附件的一些问题,而且还定义了自己的 XML 附件类型:wsi:swaRef。
很多人都被这些概要搞糊涂了。为了弄清楚其间的问题,将需要了解一下其相关历史。
WS-I 的第一个基本概要 (BP 1.0) 在阐明各个规范方面做得非常不错,但它并不完美。尤其对 SOAP with
Attachments (Sw/A) 的支持仍然相当不明确。在第二个工作循环中,WS-I 人员将附件从基本概要 (BP 1.1)
中分离出来,并对第一版中一些没有讨论的内容进行了补充。当时他们还添加了两个互不包括的基本概要补充文档:AP 1.0 和 SSBP 1.0。AP
1.0 是附件概要 (Attachment Profile),描述如何使用 Sw/A。SSBP 1.0 是简单 SOAP 绑定概要
(Simple SOAP Binding Profile),描述并不支持 Sw/A 的 Web 服务引擎(如 Microsoft 的
.NET)。WS-I 所提供的其他概要文件都是以这些基本概要文件为基础构建的。
Java 5
对 Java 语言进行了一系列更改。JAX-WS 依赖于:Annotation、通用函数和执行程序。我们将在后续的技巧文章中具体讨论 JAX-WS 如何依赖于这个新功能。有关 Java 的这些新功能的信息,请参见参考资料
中的 Java 5 链接。
总结
JAX-WS 2.0 是 JAX-RPC 1.1
的后续版本。其中有些内容保持不变,但大部分编程模型都或多或少有些不同。本技巧文章中介绍的主题将在一系列技巧文章中展开讨论,这个系列的文章对
JAX-WS 和 JAX-RPC 间的区别进行了详细的讨论,我们将在随后的数月中陆续发布。大致看来,可能会因为以下这些原因而决定从
JAX-RPC 迁移到 JAX-WS,或保持不变。
希望继续使用 JAX-RPC 1.1 的原因:
- 如果您希望继续使用现有的东西,JAX-RPC 将在今后一段时间内继续得到支持。
- 如果您不希望升级到 Java 5。
- 如果您希望发送采用 SOAP 编码的消息或创建 RPC/encoded 样式的 WSDL。
升级到 JAX-WS 2.0 的原因:
- 如果您希望使用新的面向消息的 API。
- 如果您希望使用 MTOM 发送附件数据。
- 如果您希望通过 JAXB 更好地支持 XML 模式。
- 如果您希望在 Web 服务客户机中采用异步编程模型。
- 如果您需要使用能够处理 SOAP 1.2 消息的客户机或服务。
- 如果您希望在 Web 服务中消除对 SOAP 的需求,而直接使用 XML/HTTP 绑定。
- 如果您喜欢使用领先的尖端技术。
参考资料
学习
获得产品和技术
- 使用 IBM 试用软件
开发您的下一个项目,可直接从 developerWorks 下载这些试用软件。
作者简介
|
|
|
Russell
Butek 是 IBM 的一名 SOA 和 Web 服务顾问。他曾是 IBM WebSphere Web 服务引擎的开发人员之一。他也是
JAX-RPC Java Specification Request (JSR) 专家组的成员。他参与了 Apache 的 AXIS SOAP
引擎的实现,并推动 AXIS 1.0 遵守 JAX-RPC。
|
|
|
|
Nick Gallardo
担任 IBM WebSphere 平台软件工程师,主要负责 Web 服务支持的各个方面。在此之前,他从事 IBM WebSphere 和
Tivoli 平台中其他方面的工作。Nick 于 2001 加入 IBM,此前他曾在德克萨斯州奥斯汀市两家不同的初创技术型公司从事开发工作。
|
分享到:
相关推荐
- **可扩展性**:支持WS-Security、WS-ReliableMessaging等高级Web服务协议,以满足安全性、可靠性的需求。 5. **与JAX-RPC的区别:** - JAX-WS是JAX-RPC的后续版本,它在设计上更注重简洁性和性能,且更符合现代...
Java API for XML Web Services(JAX-WS)是Java平台上用于构建和消费Web服务的标准API。它简化了创建和使用Web服务的过程,使得开发者能够通过SOAP消息与远程服务进行交互。JAX-WS允许开发者将服务接口直接映射到...
本篇将深入探讨与J2EE Web服务相关的九大关键技术:XML、SOAP、WSDL、UDDI、WS-I、JAX-RPC、JAXR、SAAJ以及JAXP。 1. **XML(eXtensible Markup Language)**:XML是一种标记语言,用于结构化数据的交换。在Web服务...
4. **WSDL**:Web服务描述语言(WSDL)是XML格式的文件,用来描述Web服务的接口和消息交换模式。JAX-WS可以自动生成WSDL,使得其他系统能够发现并理解如何调用你的服务。 5. **SOAP**:简单对象访问协议(SOAP)是...
需要注意的是,随着技术的发展,JAX-RPC已经被更现代的Java Web服务标准如JAX-WS所取代。JAX-WS提供了更强大的功能和更好的性能,但`jaxrpc.jar`在某些旧项目或特定场景下仍然有其价值。 总结,`jaxrpc.jar`是Java ...
需要注意的是,虽然JAX-RPC在早期的Web服务开发中发挥了重要作用,但它已经被更现代的规范如JAX-WS所取代,JAX-WS提供了更强大和灵活的Web服务开发能力,支持注解和更丰富的数据绑定。然而,理解JAX-RPC的基本原理...
JAX-WS是Sun Microsystems在J2EE 5.0中引入的,目的是简化Web服务的开发过程,取代了之前的JAX-RPC(Java API for XML-based Remote Procedure Calls)。JAX-WS通过使用WSDL(Web服务描述语言)来定义服务接口,使得...
JAX-WS(Java API for XML Web Services)2.0 API 是Java平台上的一个标准接口,用于创建和消费Web服务。它提供了一种简单、类型安全且与平台无关的方式来实现基于SOAP(Simple Object Access Protocol)的Web服务。...
Java API for XML Web Services(JAX-WS)是Java平台上的一个标准,用于构建和部署Web服务。它简化了Web服务的开发,使得开发者能够使用Java编程语言来创建、调用和部署SOAP(Simple Object Access Protocol)服务。...
- **SOAP(Simple Object Access Protocol)**:Web服务通常基于SOAP协议,它是一种XML格式的消息传输协议,用于在分布式环境中交换结构化信息。 - **WSDL(Web Services Description Language)**:定义了Web服务...
【标题】:Web服务之Java API for XML Web Services (JAX-WS) 【内容详解】 JAX-WS,全称为Java API for XML Web Services,是Java平台上的一个标准,用于构建和部署基于SOAP(Simple Object Access Protocol)的...
- 考虑到Web服务的安全性,JAX-WS支持WS-Security标准,可以实现消息认证、加密和签名。 8. **测试**: - 使用工具如`wsimport`生成客户端代码后,可以编写测试用例来验证服务的正确性。 9. **ws_1文件**: - ...
**JAX-WS Web服务开发概述** JAX-WS(Java API for XML Web Services)2.0,由JSR 224定义,是Java EE 5平台的关键组成部分,它是JAX-RPC 1.1的升级版。JAX-WS的主要目标是简化基于XML的Web服务的开发任务,它提供...
JAX-WS 提供了更加简化的方式来构建和部署 Web 服务,相比早期的 JAX-RPC(Java API for XML Remote Procedure Calls),它提供了更高级别的抽象,使得开发者可以更加专注于业务逻辑,而不需要过多关注底层通信细节...
**四、JAX-WS与JAX-RPC比较** 相比早期的JAX-RPC,JAX-WS提供了更丰富的功能,如: - 更强的类型安全性,通过WSDL生成的客户端代码能更好地捕获类型错误。 - 更好的集成性,与Java EE平台无缝集成。 - 支持WS-*...
- **定义与背景**:JAX-WS(Java API for XML Web Services)是Java平台中用于创建、发布和消费Web服务的标准API。它继承自JAX-RPC,并在Java SE 6中作为标准组件被引入。 - **关键特性**:JAX-WS提供了高级抽象...
与早期的Java API for XML Processing (JAX-RPC)相比,JAX-WS更符合面向对象的设计原则,更易于使用。 在本示例中,我们主要关注的是使用注解来创建Web服务。注解是一种元数据,它可以在源代码中嵌入,为编译器和...
JAX-WS(Java API for XML Web Services)是Java平台上用于创建Web服务和Web服务客户端的核心API。这个标准由Java社区进程(JCP)制定,旨在简化面向服务架构(SOA)的实现。JAX-WS允许开发者使用Java编程语言来构建...
Java API for XML Web Services(JAX-WS)是Java平台上的一个标准,用于创建和消费Web服务。它提供了一种基于注解的方式,使得开发人员可以方便地在Java类和XML消息之间进行绑定,从而简化Web服务的开发。JAX-WS是...
JAX-WS(Java API for XML-Based Web Services)是Java平台上的一个标准,用于构建和消费Web服务。它是JAX-RPC的继承者,提供了更现代、基于标准的编程模型。JAX-WS 2.0是其第二个主要版本,与Java 5兼容,并且基于...