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

王朝java/jsp·作者佚名  2006-01-08
宽屏版  字体: |||超大  

开发JAX-RPC Web服务

JAX-RPC Web服务是同步的服务,就是说,每当客户端调用一个JAX-RPC Web 服务操作的时候,它总会接收到一个SOAP响应,即使实现操作的方法返回的是空值。关于Web服务操作的更多信息,请参见"Web 服务中使用的消息模型。"

部署在Sun ONE应用服务器上的Web服务可以被任何类型的客户端访问,比如任何充当客户端角色的J2EE组件,任何基于J2SE的客户端,或者.net客户端。

以下步骤讲述了利用Java接口及其实现创建JAX-RPC Web服务的过程:

1. 定义一个代表服务远程接口的类,即服务的终端接口。该类包含了可能被客户端调用的服务方法的声明。服务终端接口扩展了java.rmi.Remote接口,而且它的方法必须抛出java.rmi.RemoteException。下面的代码演示了服务终端接口的创建。

package hello;

import java.rmi.Remote;

import java.rmi.RemoteException;

public interface HelloIF extends Remote{

public String sayHello(String S) throws RemoteException;

}

在上面的代码示例中,程序包文件的名称是hello,服务定义接口是HelloIF.java。

服务接口部署在实现了JAX-RPC运行时系统的容器中。

2. 编写服务实现类。服务实现类是一个普通的java类。调用在servlet容器中进行。下面的代码示例演示了如何编写服务实现类。

package hello;

public class HelloImpl implements HelloIF {

public String message = "Hello";

public String sayHello(String S) {

return message + S;

}

}

3. 为了处理客户端和服务终端之间的通讯,JAX-RPC在客户端和服务器端需要多个类、接口、和其他文件。Sun ONE应用服务器中的JAX-RPC实现提供了wscompile工具来生成这些部件。

Wscompile工具使用配置文件config.xml为生成客户端和服务器端部件读取接口和实现类。Wscompile工具还为服务创建了WSDL描述。

例子的配置文件如下:

<?xml version="1.0" encoding="UTF-8"?>

<configuration

xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config"> <service name="HelloWorld"

targetNameSpace="http://hello.org/HelloWorld.wsdl"

typeNameSpace="http://hello.org/hello/type"

packageName="hello">

<interface name="hello.HelloIF"

servantName="hello.HelloImpl"/>

</service>

</configuration>

关于配置文件的信息,请参见"配置文件"

关于用于创建配置文件的XML schema的信息,请参见"XML Schema定义"

下面是运行wscompile工具的语法:

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

Stub和tie是wscompile工具生成的最重要的部件。Stubs和tie是使服务终端和客户端能够进行通讯的类。Stub类位于客户端,处在服务终端和JAX-RPC客户端运行时系统之间。Stub类负责把JAX-RPC服务客户端请求转换成SOAP消息并且利用特定的协议发送到服务终端。它也把按照SOAP消息格式接收到的服务终端响应转换成客户端需要的格式。转换客户端请求到SOAP格式称为编组,把SOAP格式反过来转换成客户端响应称为反编组。

类似地,tie类位于服务器端,处在服务终端和JAX-RPC运行时系统之间。Tie类处理数据在服务终端类和SOAP格式之间的编组和反编组。Stub是为服务终端充当代理的本地对象。

可以使用一个ant编译文件(build.xml)来编译服务,生成服务器端部件并创建可移植的war文件。可在以下位置找到一个示例build.xml文件。

install_dir/samples/webservices/jaxrpc/simple/src

关于创建build.xml文件的更多信息,请看"创建 build.xml 文件"

4. 组装并且部署服务到Sun ONE应用服务器。请参见"组装并部署JAX-RPC Web服务".。

5. 编写调用服务的客户端应用程序。请参见"调用JAX-RPC Web服务".

使用WSDL的JAX-RPC Web服务

可以使用已有的WSDL文件创建JAX-RPC Web服务。在该方法中,wscompile工具利用WSDL生成服务定义接口。WSDL端口类型被映射为Java服务定义接口。要从WSDL生成服务接口,可以使用-import选项来执行wscompile工具,并以WSDL文件的存放位置作为参数。或者,你可你在名为config.xml的配置文件中存储生成服务定义接口所必需的信息。config.xml中一般存储了项要访问的WSDL所在的位置。

下面的wscompile命令读取config.xml,从而生成服务定义接口:

wscompile -gen:server -import <config.xml>

包含了WSDL文件的配置文件具备以下格式:

<?xml version="1.0" encoding="UTF-8"?>

<configuration xmlns="http://java.sun.com/jax-rpc-ri/xrpcc-config">

<wsdl location="[1]"

packageName="[2]">

<typeMappingRegistry>[3] </typeMappingRegistry>

</wsdl>

</configuration>

包含了WSDL文件的配置文件具备以下属性:

wsdl location – 指向WSDL文件的URL。

packageName – 为生成类/接口指定一个完全符合规定的名字Java程序包名称。

typeMappingRegistry – 该服务用到的类型映射注册中心。

关于用于建立配置文件的XML schema的信息,请参见"XML Schema定义"

下面的代码是一个示例配置文件,位于:install_dir/samples/webservices/jaxrpc/simple

<?xml version="1.0" encoding="UTF-8"?>

<configuration xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config">

<wsdl location="HelloWorld.wsdl"

packageName="samples.webservices.jaxrpc.simple"/>

</configuration>

生成服务接口之后,请执行"开发JAX-RPC Web服务".这一节中的步骤2到步骤5。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有