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