调用JAX-RPC Web服务
调用web服务本质上是指客户端应用程序访问web服务这种行为。部署在Sun ONE应用服务器的web服务能够被任何客户端访问。就是说,应用服务器中的任何J2EE组件都能够担当客户端的角色。任何应用程序或者应用客户端都能够访问web服务。客户端可以使用Apache SOAP 库调用Web服务,或者客户端可以是一个.net客户端。
本节讲述了开发能够调用部署在Sun ONE 应用服务器上的JAX-RPC web服务的JAX-RPC客户端的过程。
JAX-RPC客户端是为了能在在运行时调用web服务而使用JAX-RPC API的应用程序。这些客户端利用WSDL导入服务,并且可以调用在非java平台上定义并部署的服务。为了从客户端的视角建模Web服,JAX-RPC定义了javax.xml.rpc.Service接口。你可以使用J2SE或者J2EE客户端编程模型开发JAX-RPC客户端。
调用web服务的主要步骤如下。
1. 添加客户端JAR文件到客户端jar路径。关于如何添加jar文件到类路径的详细信息,请参见"配置客户端环境 "。
2. 创建基于java的服务客户端。
3. 组装并部署客户端应用程序,请参见"组装并部署JAX-RPC客户端".
4. 执行Java客户端来调用web服务。
你可以使用stub方法、动态代理、或是调用接口这几种方法来创建JAX-RPC客户端。本节将会讨论以下主题:
i. 使用动态代理创建客户端
ii. 用调用接口创建客户端
通过生成stub方法创建客户端
当JAX-RPC客户端知道调用什么方法并且知道如何调用,比如传递什么参数的时候,可以使用stub。通过stub调用一个远程方法就好比通过Java远程方法调用(RMI)系统调用方法。Stub使调用远程方法看起来就象调用本地方法,从而简化了远程方法的调用。本地的stub对象用来代表远程对象。为了进行远程方法调用,JAX-RPC客户端向本地stub进行方法调用。
Stub类是描述web服务的WSDL端口的映射。因此它必须实现反映相关端口类型方法的服务定义接口。这样,客户端就具备了对web服务终端类型明确的,早绑定的访问能力。
Stub还必须实现javax.xml.rpc.Stub接口,该接口为客户端动态配置stub提供了便利。
典型情况下,JAX-RPC客户端执行以下步骤。这些步骤展示在图"JAX-RPC 客户端模型"中。
1.客户端调用stub。
2.Stub重定向调用到合适的web服务。
3.服务器捕获该调用并把它重定向到框架。
4.框架包装服务的真正实现,然后代表客户端调用web服务。
5.框架返回调用给服务器
6.接着,Web服务返回信息给原来的客户端stub。
7.最后,客户端stub返回信息给客户端应用程序。