异步,说到异步需要首先将以下同步。同步就是代码按照顺序执行,当前面的代码的请求没有正常返回结果的情况下,后面的代码是不能运行。而异步正好和这点不同,异步是代码运行后,不管当前的请求是否返回结果,后面的代码都会继续运行。

1.   编写服务端代码:

      


[java]  view plain copy


 public class AsynchronousService {  
  
 public String execute() {  
 "正在执行此代码……");  
 // 延迟5秒后,返回结果  
 try {  
 5000);  
catch (InterruptedException e) {  
            e.printStackTrace();  
         }  
 return "完成";  
     }  
 }



2.   编写services.xml代码,打包并发布至对应文件夹下

 


[html]  view plain copy


 <service name="AsyncService">  
 <description>  
         AsyncService  
 </description>  
 <parameter name="ServiceClass">  
         server.asynchronous.AsynchronousService  
 </parameter>  
<messageReceivers>  
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"  
 class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />  
 <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"  
 class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />  
 </messageReceivers>  
 </service>



3.   客户端代码:


[java]  view plain copy


 package client;  
   
 import java.io.IOException;  
   
 import javax.xml.namespace.QName;  
   
 import org.apache.axis2.addressing.EndpointReference;  
 import org.apache.axis2.client.Options;  
 import org.apache.axis2.client.async.AxisCallback;  
 import org.apache.axis2.context.MessageContext;  
 import org.apache.axis2.rpc.client.RPCServiceClient;  
   
 public class AsynTest {  
   
       
 public static void main(String[] args) throws IOException {  
 "http://localhost:8080/axis2/services/AsyncService";  
 new RPCServiceClient();  
         Options options = client.getOptions();  
 true);  
           
 new EndpointReference(target);  
         options.setTo(epr);  
           
 new QName("http://asynchronous.server", "execute");  
 //指定调用的方法和传递参数数据,及设置返回值的类型  
 new Object[] {}, new AxisCallback() {  
               
 public void onMessage(MessageContext ctx) {  
                 System.out.println(ctx.getEnvelope());  
 "Message:" + ctx.getEnvelope().getFirstElement().getFirstElement().getFirstElement().getText());  
             }  
               
 public void onFault(MessageContext ctx) {  
             }  
               
 public void onError(Exception ex) {  
             }  
               
 public void onComplete() {  
             }  
         });  
 //断点此处,查看异步结果  
 "异步WebService");  
 //阻止程序退出  
        System.in.read();  
     }  
       
 }