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

类别:Java 点击:0 评论:0 推荐:
 开发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服务".

使用WSDLJAX-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。

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