注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 CCNA教材推荐
 帮助

使用Axis2来构建Web Service客户端


2007-04-15 11:40:56
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://zhangjunhd.blog.51cto.com/113473/23805
本文翻译自Apache Axis2 User Guide,介绍Axis2提供的四种调用模式。
author: ZJ 07-3-13
 
Web services可以用来为用户提供广泛的功能,从简单的,少时间消耗的功能到多时间消耗的业务服务。当我们使用(调用客户端的应用程序)这些Web Service时,我们不能用简单的调用机制来针对那些对时间消耗有很大要求的服务操作。例如,如果我们使用一个简单的传输通道(如HTTP)并使用IN-OUT模式来调用一个需要很长时间来完成的Web Service,那么多数情况下,我们得到的结果将是"connection time outs"。另一方面,如果我们从一个简单的客户端应用程序调用一个同步的服务,使用"blocking"的客户端API将会降低客户端应用程序的性能。现在来分析一下一些常用的服务调用形式。
许多Web Service引擎提供给客户BlockingNon-Blocking的客户端APIs
1Blocking API-一旦服务被启用,客户端的应用程序将被挂起,直到operation被执行完毕(表现为收到一个responsefault),才能重新获得控制权。这是调用Web Service最简单的方式,并且这种方式适用于多数业务情形。
 
2Non-Blocking API-这是一个回叫或轮询机制的API。因此,一旦服务被起用,客户端应用程序马上得到控制权,通过使用一个callback对象来获得response。这种方式使得客户端应用程序可以很方便的同步启用多个Web Service
这两种机制都是工作在API层面上的。称将通过使用Non-Blocking API而产生的异步行为方式为API Level 异步。
这两种机制都使用单一的传输连接来发送request和接收response。它们的性能远远落后于使用两个传输连接来发送request和接收response(不管是单工还是双工)。所以这两种机制都不能解决需要长时间处理的事务的传输问题(在operation处理完成之前,很有可能你的连接已经超时了)。一种可能的解决方法是使用两个独立的传输连接来发送和接收request&response。这种异步行为,我们称为Transport Level 异步。
通过组合API Level异步和Transport Level 异步,我们可以得到四种调用模式。如下所示。
API (Blocking/Non-Blocking)
Dual Transports (Yes/No)
Description
Blocking
No
最简单和常用的调用模式
Non-Blocking
No
使用回叫或轮询机制
Blocking
Yes
在单工模式下,service operationIN-OUT时,很有用。(如SMTP
Non-Blocking
Yes
此模式下的异步效果最大
Axis2提供了所有上述4种调用Web Service的实现方式。 




    文章评论
 
2007-08-01 23:48:36
博主:

我下午在Apache网站上看到这篇文章的,但看得很糊涂。我晚上回家再继续理解一下!

non-breaking Dual transports比较适合我的情况吧?

谢谢!

2007-08-02 09:25:11
to maomao-katze,
通过代码去体会它的内容,好好阅读Tutorials ,以及它提供的例子(..\Axis2\axis2-std-1.0-bin\samples)。

2007-10-13 14:48:47
博主:你好
    请教你个问题。
    我在jbuilder9调试状态下,可以用.net访问用jbuilder写的web service ,但是把web service拷贝到tomcat5.0下再访问时,.net端可以看到wsdl文件,但是运行程序的时候返回空指针错误。web service 返回的值.net好象认不出来。我想是tomcat还需要配置什么,但是不知道怎么配,能不能改点提示:
szzhouyujie@yahoo.com.cn

 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: