JAX-WS跟cxf

JAX-WS和cxf
CXF 支持的JAX-WS 的API,那什么是JAX-WS?

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创建一个代理(用本地对象来替代远程的服务)来实现对于远程服务器端的调用。



当然 JAX-WS 也提供了一组针对底层消息进行操作的API调用,你可以通过Dispatch 直接使用SOAP消息或XML消息发送请求或者使用Provider处理SOAP或XML消息。


通过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, 有一个比较官方的解释 。



如果你在使用CXF并想通过JAX-WS API进行开发的话,可以参考一下FuseSource 所提供的JAX-WS Development Guide 。 如果你想对JAX-WS涉及到的相关标准有比较完整的了解,可以看一下这个 教程



使用JAX-WS API 来开发的好处是可以保证你的应用可以部署在任意实现了 JAX-WS的运行环境中。试想一下你的WebService可以部署在任意的提供JAX-WS实现的环境中而不用修改任何的代码是不是很爽的一件事。



补充

到现在(2010年10月), JAX-WS 已经步入 2.2 版本, 目前除了Sun的RI 提供相应的支持(JDK 6提供的是 JAX-WS 2.1的实现, JDK7 已经集成了JAX-WS 2.2), 同时Apache CXF 2.3.0 也开始提供了JAX-WS 2.2 的支持。



有关CXF2.3.0 的信息大家可以参考这篇blog