您的位置:首页 > 其它

JAX-WS与JAX-RPC

2016-07-29 00:00 274 查看
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与JAX-RPC之间的关系
Sun最开始的web services的实现是JAX-RPC 1.1 (JSR 101)。这个实现是基于Java的RPC,并不完全支持schema规范,同时没有对Binding和Parsing定义标准的实现。
JAX-WS2.0 (JSR 224)是Sun新的web services协议栈,是一个完全基于标准的实现。在binding层,使用的是the Java Architecture for XML Binding (JAXB, JSR 222),在parsing层,使用的是 the Streaming API for XML (StAX, JSR 173),同时它还完全支持schema规 范。

JAX-WS与JAX-RPC的区别
至于JAX-WS为什么一下就成为2.0, 有一个比较官方的解释

同时这里有一个很好的有关使用JAX-WS 开发Web Services 教 程

JAX-WS与JAX-RPC关系

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

o 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。

PS:以上部分内容参考http://www.ibm.com/developerworks/cn/webservices/ws-tip-jaxwsrpc.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: