原文链接:http://www-128.ibm.com/developerworks/webservices/library/ws-tip-jaxwsrpc.html
JAX-WS 2.0是JAX-RPC 1.1的后续版本。这篇文章介绍一系列这两种编程模型的对比:
介绍
Web服务已经出现了好长一段时间了。首先有的是SOAP。但是SOAP只是用来描述消息(message)是什么样的。然后就有了WSDL.但是WSDL没有告诉你怎么基于Java平台,来写web服务。然后紧跟着出现了JAX-RPC 1.0。使用了几个月后,国际开放组织JCP(Java Community Process(JCP( Java Community Process) 是一个开放的国际组织,主要由Java开发者以及被授权者组成,职能是发展和更新Java技术规范、参考实现(RI)、技术兼容包(TCK)。Java技术和JCP两者的原创者都是SUN计算机公司。然而,JCP已经由SUN于1995年创造Java的非正式过程,演进到如今有数百名来自世界各地Java代表成员一同监督Java发展的正式程序。)写这个规范的人们意识到规范必须做些调整,所以就出来了JAX-RPC 1.1。差不多使用这个规范一年后,JCP的JAX-RPC规范制订者想要重新构建一个更好的版本:JAX-RPC 2.0。一个基本的目标就是跟行业的发展方向保持一致,但是行业又不是仅仅在做基于RPC的Web服务,他们也在做面向消息的web服务。所以说“RPC”从名称JAX-RPC中被删去了,取而代之的是“WS”(它当然是代表Web Service的意思)。因此,JAX-RPC 1.1的后续版本就是JAX-WS 2.0-基于XML的Web 服务的Java API。
什么保持不变
在我们详细说明JAX-RPC 1.1 跟JAX-WS 2.0之间的不同点之前,我们应该首先讨论下他们两者有哪些方面是相同的:
l JAX-WS仍然支持基于 HTTPSOAP1.1,所以说互操作性将不会受到影响。同样的消息仍然能够横跨传输线路流动。
l JAX-WS仍然支持WSDL1.1,所以说你之前学习的那个规范仍然是有用的。WSDL2.0规范就要接近完成了,但是在JAX-WS 2.0最终发布后WSDL1.1仍然能够正常使用。
有什么不一样
l SOAP 1.2
JAX-RPC 和JAX-WS都支持SOAP1.1,而JAX-WS也支持SOAP 1.2
l XML/HTTP
WSDL 1.1规范定义了一个HTTP绑定,通过这种方式你可以在不用SOAP时基于HTTP来发送XML消息。JAX-RPC忽略了HTTP绑定。JAX-WS增加了对它的支持。
l WS-I的Basic Profiles
JAX-RPC支持WS-I’s Basic Profile(BP)1.0,而JAX-WS支持BP1.1(WS-I是web服务互操作组织。)
l 新的Java特性
Ø JAX-RPC 映射到Java 1.4,JAX-WS映射到Java 5.0。JAX-WS依赖于许多在Java5.0中的新特性。
Ø Java EE 5,J2 EE 1.4的后续版本,增加了对JAX-WS的支持,但是它同样也保留了对JAX-RPC的支持,这样可能会把现在的Web服务的初学者弄糊涂。
l 数据映射模型
Ø JAX-RPC有它自己的数据映射模型,它大概涵盖了所有schema类型的90%。
那些它没有汲及到的都映射到了javax.xml.soap.SOAPElement。
Ø JAX-WS的数据映射模型是JAXB.JAXB承诺映射所有的XML schema。
l 接口映射模型
JAX-WS的基本接口映射模型跟JAX-RPC的有很大的不同;但是:
Ø JAX-WS的模型利用了Java 5.0的新特性。
Ø JAX-WS的模型进了异步功能。
l 动态的编程模型
Ø JAX-WS的动态客户端模型跟JAX-RPC的有很大的不同。许多的改变表明了行业需要:
ü 它引进了面向消息的功能。
ü 它引进了动态的异步功能。
Ø JAX-WS 也增加了动态的服务器模型,这个JAX-RPC是没有的。
l MTOM (Message Transmission Optimization Mechanism)
JAX-WS,通过JAXB,增加了对MTOM的支持,新的附件规范。微软从不买进带有附件的SOAP规范;但是可以看出来越来越多的MTOM支持,所以附件的互操作性应该会成为现实的。
l 处理器模型
Ø 从JAX-RPC到JAX-WS处理器模型有了相当多的改变
Ø JAX-RPC处理器依赖于SAAJ 1.2。JAX-WS处理器依赖于新的SAAJ(SOAP with Attachments API for Java)1.3规范。
在本文以下的内容里,我们将要讨论SOAP 1.2,XML/HTTP,WS-I Basic Profiles,还有Java 5.0.
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制定者就已经开发出来了BP 1.1(而且相关的AP 1.0跟SSBP 1.0).这些新的profiles阐明了一些小的观点,并且更加明显地定义了附件。JAX-WS2.0支持这些更新的profiles。对于大部分来说,它们存在的不同之处不影响Java编程模型。有个例外就是附件。WS-I还没有消除对附件存在的一些疑问,但是他们也定义了他们自己的XML附件类型:wsi:swaRef。
很多人被所有这些profiles搞得很困惑。你将需要一段时间来消除这些困惑。
WS-I的第一个basic profile(BP1.0)做了很好的工作来阐明不同的规范。但它不是完美的。而且特别是支持SOAP附件也仍然是不明确的。在他们的第二个迭代中,WS-I的BP制定者制定出来了baisic profile附件-BP 1.1-而且修正了一些在第一版本所遗漏的东西。在这点他们也增加了两个互斥的补充到basic profile:AP 1.0和SSBP 1.0。AP 1.0是附件框架(Attachment Profile),它描述了怎样使用Sw/A.SSBP 1.0是简单的SOAP绑定框架,它描述了一个不支持Sw/A(比如说微软的.net)的Web服务引擎。The remaining profiles that WS-I has and is working on build on top of those basic profiles.
Java 5
Java语言有很大的变化。JAX-WS依赖于:annotations,generics, 和 executors
总结
JAX-WS2.0是JAX-RPC 1.1的后续版本。有一些东西没有变化,但是在某种程度上这两种编程模型是不同的。总的看来,对于你为什么将要或者是将不会从JAX-RPC转移 到JAX-WS有一些原因。
想继续使用JAX-RPC 1.1的原因:
l If you want to stay with something that's been around a while, JAX-RPC will continue to be supported for some time to come.
l If you don't want to step up to Java 5.
l If you want to send SOAP encoded messages or create RPC/encoded style WSDL.
从JAX-RPC走进JAX-WS的原因:
l If you want to use the new message-oriented APIs.
l If you want to use MTOM to send attachment data.
l If you want better support for XML schema through JAXB.
l If you want to use an asynchronous programming model in your Web service clients.
l If you need to have clients or services that can handle SOAP 1.2 messages.
l If you want to eliminate the need for SOAP in your Web services and just use the XML/HTTP binding.
l If you like playing with leading edge technology.
相关推荐
J2EE Web Services: XML SOAP WSDL UDDI WS-I JAX-RPC JAXR SAAJ JAXP
jax-rpc soap头扩展 客户端,服务端例子 ws-tipjax2SOAPHandler.ear,ws-tip-extend.zip 官方也有下载的
使用JAX-WS(JWS)发布WebService 使用myeclipse开发java的webservice的两种方式 方式一: (此方式只能作为调试,有以下bug:jdk1.6u17?以下编译器不支持以Endpoint.publish方式发布document方式的soap,必须在...
早期的基于 SOAP 的 JAVA 的 Web 服务规范 JAX-RPC(Java API For ...WS-MetaData(JSR 181)是 JAX-WS 的依赖规范,其 API位于 javax.jws.*包,使用注解配 置公开的Web服务的相关信息和配置 SOAP 消息的相关信息。
本文内容包括:Axis2中的JAXB在Axis2中使用JAX-WS结束语下载参考...早期的ApacheAxis建立在第一个面向Web服务的Java标准JAX-RPC的基础之上。事实证明,这并不是一个很好的方法,因为JAX-RPC限制了Axis代码的内部设计,
•JAX-RPC 1.1 •JAX-WS 2.2 •JAX-RS 1.1 •JAXB 2.2 •JAXR 1.0 •Java EE Management 1.1 •Java EE Deployment 1.2 •JACC 1.4 •JASPIC 1.0 •JSP Debugging 1.0 •JSTL 1.2 •Web Services Metadata 2.1 •JSF...
6. JAX-WS:Spring通过JAX-WS为远程Web服务提供支持(the successor of JAX-RPC, as introduced in Java EE 5 and Java 6)。 7. JMS:远程访问通过类JmsInvokerServiceExporter和JmsInvokerProxyFactoryBean使用JMS的...
这个教程将了如何使用CXF开发WebService,包括JAX-WS、JAX-RS规范、数字证书、MTOM附件传输、异步调用、异常处理、使用Axis+Spring解决RPC/Encode的问题向旧规范JAX-RPC的兼容,第三版版教程在最一开始分别介绍了...
介绍wsdl和uddi的例子 快下呀,我没积分了
Axis2是目前比较流行的WebService引擎。...本课程站在初学者角度介绍了Axis2的大多数常用的功能,例如,以多种方式编写和发布WebService、JAX-RPC、JAX-WS、复杂类型传输、WebService会话管理、Axis2模块等
(删减)JAX-RPC 1.1 - - JAX-WS 2.2a - -项目-邮件列表 JAXB 2.2 - JSR 222 -项目-邮件列表 Web 服务 1.4 - JSR 109 Web 服务元数据 2.1 - JSR 181 JAX-RS 2.0 - JSR 339 -项目-邮件列表- Jersey - @gf_jersey - ...
JAX-WS(也就是基于XML的Web服务的JavaAPI,JAXBXML绑定,JAX-WS允许开发者可以选择RPC- oriented或者message-oriented来实现自己的webservice) 2. JAF(也就是JavaBeans激活框架,一个专用的数据处理框架,它...
6.13 JAX-WS 2.2 标准 6.14 JAX-RS 1.1标准 6.15 JAXB 2.2 标准 6.16 JAXR 1.0 标准 6.17 API 1.1标准 6.18 API 1.2 标准 6.19 JACC 1.4 标准 6.20 JASPIC 1.0 标准 6.21 JSR-45 标准 6.22 SJSTL 1.2 标准 6.23 ...
本课程站在初学者角度介绍了Axis2的大多数常用的功能,例如,以多种方式编写和发布WebService、JAX-RPC、JAX-WS、复杂类型传输、WebService会话管理、Axis2模块等。本课程共分为两部分,其中第一部分为Axis2基础知识...
2.5.7. JAX-WS支持 2.6. 其他 2.6.1. 动态语言支持 2.6.2. 增强的测试支持 2.6.3. JMX 支持 2.6.4. 将Spring 应用程序上下文部署为JCA adapter 2.6.5. 计划任务 2.6.6. 对Java 5 (Tiger) 支持 2.7. 移植到...
2.5.7. JAX-WS支持 2.6. 其他 2.6.1. 动态语言支持 2.6.2. 增强的测试支持 2.6.3. JMX 支持 2.6.4. 将Spring 应用程序上下文部署为JCA adapter 2.6.5. 计划任务 2.6.6. 对Java 5 (Tiger) 支持 2.7. 移植到...
发现介绍开源的资料太多了,基础知识反而少有关注,最近闲来无事,将多年工作中用到的比较实际的xml与webservice基础东西讲一些,基本的都有谈到,但ppt中分类不方便,因此流水账似地覆盖知识点。...
15.5.2. Proxying JAX-WS services on the client side 15.6. Summary Chapter 16. Creating REST APIs with Spring MVC 16.1. Getting REST 16.1.1. The fundamentals of REST 16.1.2. How Spring supports REST ...