WEB开发网
开发学院软件开发Java JAX-RPC 与 JAX-WS 的比较,第 3 部分:服务端点接... 阅读

JAX-RPC 与 JAX-WS 的比较,第 3 部分:服务端点接口

 2009-11-03 00:00:00 来源:WEB开发网   
核心提示: 研究 RPC/encoded 模式对于 RPC/encoded 风格的操作,无法进行比较,JAX-RPC 与 JAX-WS 的比较,第 3 部分:服务端点接口(7),JAX-WS 不支持包含编码的 数据表示的 WSDL 文档的任何映射,这是因为 JAX-WS 与 WS-I 的 Basic Pro

研究 RPC/encoded 模式

对于 RPC/encoded 风格的操作,无法进行比较。JAX-WS 不支持包含编码的 数据表示的 WSDL 文档的任何映射。这是因为 JAX-WS 与 WS-I 的 Basic Profile 1.1 的兼容性原因,其中不允许使用编码的 WSDL 文档。有时候的确需要构建 RPC/encoded Web 服务,在这种情况下您应该坚持使用 JAX-RPC 映射,但是如果您希望编写可互操作的 Web 服务,那么您就不应该使用 RPC/encoded 模式。

考虑其他的一些区别

JAX-WS 与 JAX-RPC 在操作映射方面的主要区别是前者引入了异步操作。任何具有双向消息流的 WSDL 操作,或者其中的客户端期待着接收响应的操作,都可以映射为异步的 Java 表示形式。有两种不同的机制,带回调的异步方式和异步轮询,它们需要两种不同的映射。后续的文章将描述这两种类型的操作是如何工作的。本文只是向您介绍一个示例。清单 12 包含一个异步回调操作,其中 javax.xml.ws.AsyncHandler 对象为回调对象。清单 13 包含了一个异步轮询操作映射。


清单 12. JAX-WS 异步回调
@WebMethod(action = "urn:samples.ibm.com/HelloWorld/hello") 
@RequestWrapper(localName = "hello", 
  targetNamespace = "urn:samples.ibm.com/HelloWorld", 
  className = "com.ibm.samples.helloworld.Hello") 
@ResponseWrapper(localName = "helloResponse", 
  targetNamespace = "urn:samples.ibm.com/HelloWorld", 
  className = "com.ibm.samples.helloworld.HelloResponse") 
public Future<?> helloAsync( 
  @WebParam(name = "name", targetNamespace = "") 
  String name, 
  @WebParam(name = "asyncHandler", targetNamespace = "") 
  AsyncHandler<String> asyncHandler); 


清单 13. JAX-WS 异步轮询
@WebMethod(action = "urn:samples.ibm.com/HelloWorld/hello") 
@RequestWrapper(localName = "hello", 
  targetNamespace = "urn:samples.ibm.com/HelloWorld", 
  className = "com.ibm.samples.helloworld.Hello") 
@ResponseWrapper(localName = "helloResponse", 
  targetNamespace = "urn:samples.ibm.com/HelloWorld", 
  className = "com.ibm.samples.helloworld.HelloResponse") 
public Response<String> helloAsync( 
  @WebParam(name = "name", targetNamespace = "") 
  String name); 

上一页  2 3 4 5 6 7 8  下一页

Tags:JAX RPC JAX

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接