14.6. 三种 WebService 规范

发布于 2023-07-26 22:26:03 字数 1792 浏览 28 评论 0

分别是 JAXM&SAAJ、JAX-WS(JAX-RPC)、JAX-RS。

JAX-WS

JAX-WS(Java API For XML-WebService),JDK1.6 自带的版本为JAX-WS2.1,其底层支持为JAXB。早期的基于SOAP 的JAVA 的Web 服务规范JAX-RPC(Java API For
XML-Remote Procedure Call)目前已经被JAX-WS 规范取代,JAX-WS 是JAX-RPC 的演进版本,但JAX-WS 并不完全向后兼容JAX-RPC,二者最大的区别就是RPC/encoded 样式的WSDL,JAX-WS 已经不提供这种支持。

JAX-RPC 的API 从JAVA EE5 开始已经移除,如果你使用J2EE1.4,其API 位于 javax.xml.rpc.* 包。JAX-WS(JSR 224)规范的API 位于 javax.xml.ws.* 包,其中大部分都是注解,提供API 操作Web 服务(通常在客户端使用的较多,由于客户端可以借助SDK 生成,因此这个包中的API 我们较少会直接使用)。

WS-MetaData(JSR 181)是JAX-WS 的依赖规范,其API 位于 javax.jws.* 包,使用注解配置公开的Web 服务的相关信息和配置SOAP 消息的相关信息。

JAXM & SAAJ

JAXM(JAVA API For XML Message)主要定义了包含了发送和接收消息所需的API,相当于Web 服务的服务器端,其 API 位于 javax.messaging.* 包,它是JAVA EE 的可选包,因此你需要单独下载。SAAJ(SOAP With Attachment API For Java,JSR 67)是与JAXM 搭配使用的API,为构建SOAP 包和解析SOAP 包提供了重要的支持,支持附件传输,它在服务器端、客户端都需要使用。这里还要提到的是 SAAJ 规范,其 API 位于 javax.xml.soap.*包。

JAXM&SAAJ 与 JAX-WS 都是基于 SOAP 的 Web 服务,相比之下 JAXM&SAAJ 暴漏了 SOAP 更多的底层细节,编码比较麻烦,而 JAX-WS 更加抽象,隐藏了更多的细节,更加面向对象,实现起来你基本上不需要关心 SOAP 的任何细节。那么如果你想控制 SOAP 消息的更多细节,可以使用 JAXM&SAAJ,2012 年版本为 1.3。

JAX-RS

JAX-RS 是 JAVA 针对 REST(Representation State Transfer)风格制定的一套Web 服务规范,由于推出的较晚,该规范(JSR 311,目前 JAX-RS 的版本为 1.0)并未随 JDK 1.6 一起发行,你需要到 JCP 上单独下载 JAX-RS 规范的接口,其 API 位于 javax.ws.rs.* 包。

这里的 JAX-WS 和 JAX-RS 规范我们采用Apache CXF 作为实现,CXF 是 Objectweb Celtix 和 Codehaus XFire 合并而成。CXF 的核心是 org.apache.cxf.Bus(总线),类似于Spring 的 ApplicationContext,Bus 由 BusFactory 创建,默认是 SpringBusFactory 类,可见默认 CXF 是依赖于 Spring 的,Bus 都有一个 ID,默认的 BUS 的 ID 是 cxf。你要注意的是 Apache CXF2.2 的发行包中的 jar 你如果直接全部放到 lib 目录,那么你必须使用 JDK 1.6,否则会报 JAX-WS 版本不一致的问题。对于 JAXM&SAAJ 规范我们采用 JDK 中自带的默认实现。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

0 文章
0 评论
23 人气
更多

推荐作者

金兰素衣

文章 0 评论 0

ゃ人海孤独症

文章 0 评论 0

一枫情书

文章 0 评论 0

清晰传感

文章 0 评论 0

mb_XvqQsWhl

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文