分享
 
 
 

用Axis和SOAP开发基于JAX-RPC的Web服务(1)

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

Web服务是基于一系列工业标准的软件程序,它们可以被共享,可以被用作为分布式基于Web的应用的组件。Web服务可以由一个URI来标识,它们的公共接口可以用XML来描述和发现。

随着互操作性和应用集成需求的增长,Web服务被认为是最理想的商业解决方案,因为它们是是基于标准的互联网协议。Web服务通过讲通用的,非私有的语言,使用公共的传输协议(例如,HTTP和SMTP),使得应用程序可以处理来自远程的,不同系统的请求。

本文重点描述使用Axis构建廉价的Web服务来解决前面所提及的问题。Axis是Apache提供的一个开放源代码的SOAP实现。为了公正,本文的Web服务构建将基于JAX-RPC,后续文章将介绍其他方法。

基于XML的远程过程调用的Java API(JAX-RPC)简化了Web服务的创建过程(Web服务本身就合并了基于XML的PRC)。它定义了Java类型和XML类型之间的映射,目的是为了隐藏XML的细节,提供一种熟悉的方法调用范例。本文详细阐述了开发者怎样使用JAX-RPC来实现和调用基于SOAP的Web服务,这些以Web服务描述语言(WSDL)所描述的Web服务使用了Apache提供的开放源代码工具--用于部署服务的Apache Tomcat和SOAP实现Apache Axis。

1. 基于JAX-RPC的Web服务

JAX-RPC完全包容了Web服务的异构性。它允许一个JAX-RPC客户端与另一个部署在不同平台上的,用不同语言编写的Web服务进行对话。JAX-RPC提供了一系列规范,包括调用模式、客户端生成、参数模式、Java到WSDL和WSDL到Java的类型映射、以及调用Web服务的客户端APIs。

2. 调用模式与客户端

JAX-RPC支持三种Web服务调用模式:

A. 同步请求--响应(Synchronous request-response):客户端调用Web服务上的一个远程方法,在Web服务处理期间调用线程阻塞,直到接收到一个返回值或者异常。

B. 单向(One-way)PRC模式(One-way RPC mode):客户端以单向模式调用Web服务上的一个远程方法,线程并不阻塞,并且继续执行。客户端不接收任何返回值。

C. 非阻塞RPC模式(Non-blocking RPC mode):客户端调用Web服务上的一个远程方法,该线程继续处理。稍候,客户端通过执行一个接收模块或者轮询返回值来处理远程方法。

有了本文上述的调用模式,我们来看看在Tomcat-Axis组合上怎样使用同步请求--响应模式编写或生成Java客户端。

3. 参数模式(Parameter Modes)

基于JAX-RPC的Web服务调用使用的是拷贝传值的参数传递方式。它不支持引用传值的参数传递方式。

JAX-RPC支持下列参数模式:

A. IN模式:一个IN类型的参数传递的是一个拷贝。IN类型参数的值在Web服务调用之前就被拷贝。返回值也被创建为一个拷贝,然后返回给Web服务的客户端。

B. OUT模式:OUT类型的参数被作为一个没有任何输入值的拷贝传递给Web服务方法。Web服务方法填充OUT参数,然后把它返回给客户端。

C. INOUT模式:INOUT参数被作为一个具有一个输入值的拷贝传递给给Web服务方法。Web服务方法使用这个输入值,处理它,用一个新值填充INOUT参数,然后返回给客户端。

OUT和INOUT参数的参数传递模式都是使用Holder类。使用Holder类使得映射可以保持预期的WSDL签名和参数传递语义。JAX-RPC规范包括简单XML类型到Java数据类型的映射的“Holder类”。在JAX-RPC实现的javax.xml.rpc.holders包中可以得到原子数据类型(例如,int,float等等)的Holder类。对复杂的XML数据类型来说,Holder类的名字是通过在相对应的Java类的后面附加"Holder"来构成的。这些生成Holder类作为生成子包Holders的一部分被包装在WSDL到Java的映射中。

每个Holder类提供下列方法和属性:

A. 一个公共属性“value”,“value”的类型就是相映射的Java类型。

B. 一个默认的构造函数,用来初始化“value”属性为一个默认的值。

C. 一个把“value”属性的值设置为传入参数的构造函数。

4. Web服务调用

Apache Tomcat-Axis组合提供一个JAX-RPC 1.0兼容的运行时引擎,它具有客户端和服务器端库以及部署工具。图1详细阐述了标准的同步请求--响应模式的Web服务调用框架。封装了Web服务客户端的Application1使用JAX-RPC运行时环境执行一个远程过程调用请求封装了Web服务服务器端的Application 2的公共方法。客户端使用运行时库把Java对象序列化成一个SOAP消息,然后通过HTTP协议把该消息发送给Web服务端点。当部署在Apache Tomcat上的Web服务接收到这个请求时,服务器端的JAX-RPC运行时库把SOAP消息反序列化为Java类型,并且调用Web服务上的方法,接着对Application 2进行调用。在处理完请求后,Web服务以类似的方式把响应发回给客户端。

图1 Web服务调用框架

至此,我们已经了解基于JAX-RPC的Web服务调用。本文的下一部分将在Apache Tomcat-Axis组合上简要的开发一个示例Web服务,一个动态客户端。

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