首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

Axis Web Service开发之旅 (10) -异步调用WebService

2012-09-03 
Axis Web Service开发之旅 (十) --异步调用WebService在前面几篇文章中都是使用同步方式来调用WebService。

Axis Web Service开发之旅 (十) --异步调用WebService

在前面几篇文章中都是使用同步方式来调用WebService。也就是说,如果被调用的WebService方法长时间不返回,客户端将一直被阻塞,直到该方法返回为止。使用同步方法来调用WebService虽然很直观,但当WebService方法由于各种原因需要很长时间才能返回的话,就会使客户端程序一直处于等待状态,这样用户是无法忍受的。
??? 当然,我们很容易就可以想到解决问题的方法,这就是多线程。解决问题的基本方法是将访问WebService的任务交由一个或多个线程来完成,而主线程并不负责访问WebService。这样即使被访问的WebService方法长时间不返回,客户端仍然可以做其他的工作。我们可以管这种通过多线程访问WebService的方式称为异步访问。
??? 虽然直接使用多线程可以很好地解决这个问题,但比较麻烦。幸好Axis2的客户端提供了异步访问WebService的功能。
??? RPCServiceClient类提供了一个invokeNonBlocking方法可以通过异步的方式来访问WebService。下面先来建立一个WebService。
??? MyService是一个WebService类,代码如下:

?

???

从上面的配置代码可以看出,MyService的配置方式与前几章的WebService的配置方式完全一样,也就是说,MyService只是一个普通的WebService。
??? 下面是异步调用MyService的Java客户端代码:

?

asyn.myService my = new WSC.asyn.myService();   my.getNameAsync();   my.getNameCompleted += new WSC.asyn.getNameCompletedEventHandler(getNameCompletedEvent);   asyn.myService my1 = new WSC.asyn.myService();   my1.getNameCompleted += new WSC.asyn.getNameCompletedEventHandler(getNameCompletedEvent);   my1.getNameAsync();  

???

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/crazystone4/archive/2009/06/20/4285777.aspx

热点排行