分享
 
 
 

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。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有