2008年1月14日星期一

WebService_102:JAX-RPC介绍

【JAX-RPC】:Java APIs for XML-Based Remote Procedure Call 基于XML 的远程过程调用的 Java API。
JAX-RPC 定义并使用了一种基于XML 的远程过程调用机制。它旨在帮助服务消费者和服务提供者获得最大程度的灵活性,方法是通过把服务互操作性的重担转移到运行时基础架构。
它使服务提供者能够用标准的API 定义其服务并且能够用WSDL 描述其服务;它使服务消费者能够用标准的API 与服务器进行通信。
JAX-RPC遵循SOAP1.1规范,但是开发者不需要与SOAP消息打交道,开发者只会看见远程接口(方法、参数和返回值)。
JAX-RPC最终被JCP命名为JSR 101。
JAX-RPC的局限性:
“JAX-RPC enables building of Web services and Web applications based on the SOAP 1.1 specification, Java SE 1.4 or lower, or when rpc/encoded style must be used.
If possible, JAX-WS should be used instead as it is based on the most recent industry standards. ”
更多信息请访问:https://jax-rpc.dev.java.net/。

JAX-RPC的功能如下:
  • 类型映射系统

  • 服务端点

  • 异常处理

  • 服务端点上下文

  • 消息处理程序

  • 服务客户机和服务上下文

  • 带附件的 SOAP

  • 运行时服务

  • JAX-RPC 客户机调用模型


1. 类型映射系统
将XML 类型映射为Java 类型
将抽象的WSDL 定义(端口类型、操作和消息)映射为Java 接口和 Java 类。
将具体的WSDL 定义(端口、绑定和服务)映射为Java 类。
2. 服务端点
3. 异常处理
4. 服务端点上下文
5. 消息处理程序
6. 服务客户机和服务上下文
7. 带附件的 SOAP
8. 运行时服务
9. JAX-RPC 客户机调用模型


这里是三个不同的从客户机调用服务端点的的模型。它们独立于任何特定于服务实现的模型。
(1)基于存根的模型(静态存根):
一个生成了的存根类是实现 javax.xml.rpc.stub 和服务端点接口所必需的。这个存根接口通过设置诸如端点地址、会话、用户名、密码这样的属性来提供 API 以配置存根。
优点:实现比较简单。
缺点:不能实现动态调用,需要先通过工具构建客户端,生成代理,才能利用客户端来调用远程服务。
(2)动态代理。和上面所讨论的静态存根相反的是,运行时客户机使用 javax.xml.rpc.Service 接口来创建动态服务代理存根客户。客户机能够推算出关于WSDL 和它要调用的服务的信息。它使用 ServiceFactory 类来创建服务获取代理。
优点:不必构建代理程序,实现了一定的动态性。
缺点:与远程服务的关联太紧密,耦合度太高。
(3)DII(动态调用接口)。这个软件模式省却了客户提前了解服务的确切名字和参数的需要。DII 客户机可以使用能查找服务信息的服务代理程序在运行时发现这个信息。服务发现中的灵活性使运行时系统能使用服务代理程序,服务代理程序能够采用各种服务发现机制(如 ebXML、注册表、UDDI等)。

参考文献:
1. 《开发者关于JAX-RPC 的介绍》作者:http://www.ibm.com/developerworks/cn/webservices/ws-jaxrpc/part1/

没有评论: