Sun ONE Application Server 开发者指南(10)

类别:Java 点击:0 评论:0 推荐:
 

JAX-RPC客户端模型

下面这一节讲述了这些步骤:

生成stub 编写客户端代码 编译客户端代码 组装客户端类生成JAR文件 运行客户端

生成stub

可以使用wscompile工具为客户端生成stub。除了生成stub,wscompile工具还为服务器生成tie。为了生成stub,请设置PATH到install_dir/share/bin目录。使用下面的语法运行该工具:

wscompile -gen:client -d build/client -classpath build/shared config.xml

关于wscompile工具的更多信息,请参见"wscompile工具"。

有两种方法可以生成stub。可以从服务终端定义或是WSDL文件生成stub。上面的Wscompile命令采用了服务终端定义来生成stub。

编写客户端代码

确定在类路径中添加了必要的jar文件。想要了解更多,请参见"配置客户端环境 "。

客户端执行了以下步骤:

1.获得接口stub的一个实例

2.设定stub的终端属性,从而指定web服务的服务终端。

3.调用方法。

本例使用服务终端定义生成stub。你可以利用JAX-RPC实现的客户端API javax.xml.rpc.Stub来提供配置信息。

以下代码示范了上面提到的步骤:

package hello;

import javax.xml.rpc.Stub;

public class HelloClient {
public static void main(String[] args) {
try {

HelloIF_Stub stub = (HelloIF_Stub)(newHelloWorld_Impl().getHelloIFPort());

stub._setProperty( javax.xml.rpc.Stub.ENDPOINT_ADDRESS_PROPERTY, args[0]);

System.out.println(stub.sayHello("Duke!"));

command-line   }

catch (Exception ex) {

ex.printStackTrace();

       }

   }

}

在上面的代码示例中,HelloClient是调用HelloWorld服务中的sayHello方法的一个独立程序。它通过stub,一个充当远程服务代理的本地对象,进行调用。请注意在代码清单中名为HelloIF_Stub和HelloWorldImpl的类,它们由wscompile工具生成。HelloIF前缀与服务定义接口相吻合,HelloWorld前缀对应配置文件中指定的服务名称。HelloWorldImpl类是JAX-RPC规范中描述的服务的实现。客户端通过调用HelloWorldImpl 类的getHelloIF方法获得对stub的引用,HelloWorldImpl类是在运行wscompile工具的时候创建的。

stub._setProperty方法的args[0]参数是一个表示目标服务端口的URI。

编译客户端代码

注意

确定在编译客户端代码之前运行了wscompile和wsdeploy工具。客户端代码引用了wscompile工具的产物。

wscompile -gen:client -d build/client -classpath build/shared

要编译客户端,请切换到保存客户端代码的目录并输入以下命令:

asant compile

该命令编译Java源代码。

组装客户端类生成JAR文件

你可以使用asant工具组装客户端类生成JAR文件。Asant是一个命令行接口工具。请输入以下命令:

asant jar

该命令创建客户端jar文件。

运行客户端

使用asant工具运行客户端。输入以下命令:

asant run

asant的运行目标会执行以下命令:

java -classpath cpath client endpoint

cpath – 包括已经创建的客户端jar文件的类路径,也包括作为JAX-RPC实现的一部分的几个其他JAR文件。

注意

为了远程运行客户端,所有的JAR文件必须存在于远程客户端系统中。

endpoint- http://localhost:8080/jaxrpc-hello/jaxrpc/HelloIF

这个URL的jaxrpc-hello部分是实现了HelloWorld服务的servlet的上下文,它对应jaxrpc-hello.war文件的前缀。字符串jaxrpc对应sun-web.xml配置描述文件中<url-pattern> 元素的值。最后,HelloIF是在服务中定义的接口名称。

可以通过build.xml文件完成编译、组装、和部署任务,并且可以通过它运行客户端。绑定在Sun ONE应用服务器中的本例的build.xml文件位于:

install_dir/samples/webservices/jaxrpc/simple/src

使用动态调用接口创建客户端

使用动态调用接口(DLL),客户端可以调用服务或是远程过程。利用可以动态查找服务及其远程过程的服务代理,客户端能够在运行时发现服务或是过程的名称。javax.xml.rpc.Service封装了两类不需要任何生成代码的动态调用。本节讲述创建动态客户端的过程。

使用动态代理创建JAX-RPC客户端 使用调用接口创建JAX-RPC客户端

本文地址:http://com.8s8s.com/it/it16915.htm