博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
八、 异步调用WebService
阅读量:6818 次
发布时间:2019-06-26

本文共 2606 字,大约阅读时间需要 8 分钟。

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

关于异步在此就不再赘述了,有兴趣的可以去网上查查这方面的资料。

1、 编写服务器端的代码。

代码package com.hoo.service;/** * function:异步WebService服务器端代码 * @author hoojo * @createDate 2011-3-14 上午08:16:59 * @file AsynchronousService.java * @package com.hoo.service * @project Axis2WebService * @blog http://blog.csdn.net/IBM_hoojo * @email hoojo_@126.com * @version 1.0 */public class AsynchronousService {	public String execute() {		System.out.println("正在执行此代码……");		//延迟5秒后,返回结果		try {			Thread.sleep(5000);		} catch (InterruptedException e) {			e.printStackTrace();		}		return "完成";	}}

2、 services.xml文件,创建aar文件,然后复制aar文件到[tomcat-home]\webapps\axis2\WEB-INF\services目录下

services.xml

代码
AsyncService
com.hoo.service.AsynchronousService

3、 编写客户端测试代码

代码package com.hoo.service;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;/** * function:异步WebService客户端代码 * @author hoojo * @createDate 2011-3-14 上午09:00:03 * @file AsynchronousServiceClient.java * @package com.hoo.service * @project Axis2WebService * @blog http://blog.csdn.net/IBM_hoojo * @email hoojo_@126.com * @version 1.0 */public class AsynchronousServiceClient {	public static void main(String[] args) throws IOException {		String target = "http://localhost:8080/axis2/services/AsyncService?wsdl";		RPCServiceClient client = new RPCServiceClient();		Options options = client.getOptions();		options.setManageSession(true);				EndpointReference epr = new EndpointReference(target);		options.setTo(epr);				QName qname = new QName("http://service.hoo.com", "execute");		//指定调用的方法和传递参数数据,及设置返回值的类型		client.invokeNonBlocking(qname, new Object[] {}, new AxisCallback() {						public void onMessage(MessageContext ctx) {				System.out.println(ctx.getEnvelope());				System.out.println("Message:" + ctx.getEnvelope().getFirstElement().getFirstElement().getFirstElement().getText());			}						public void onFault(MessageContext ctx) {			}						public void onError(Exception ex) {			}						public void onComplete() {			}		});		System.out.println("异步WebService");		//阻止程序退出        System.in.read();	}}

上面是异步调用WebService的代码,调用的方法是client.invokeNonBlocking,这个方法有三个参数,参数一是执行的方法签名,参数二是执行该方法的参数,参数三是异步回调,这里隐式实现AxiaCallback接口

注意的是运行程序的时候要用Debug方式运行。

你可能感兴趣的文章
juniper基本配置命令 自用
查看>>
hadoop学习笔记之--- HDFS原理学习
查看>>
ThinkPHP 学习笔记(四) ThinkPHP的配置
查看>>
win32 UNICODE 支持
查看>>
MySQL+DRBD+Corosync+Pacemaker CentOS6.5版
查看>>
在CentOS 6.5上安装和配Xen
查看>>
重载类的 new,delete,new[],delete[] 运算符成员函数
查看>>
Express 3.x升级到4.x 优缺点
查看>>
我的友情链接
查看>>
inittab文件丢失恢复
查看>>
ocjp 51-60
查看>>
我的友情链接
查看>>
windows下的任务不能自动执行的解决办法
查看>>
VACL配置说明
查看>>
shell防DDOS
查看>>
go语言 学习笔记1
查看>>
一键包安装lamp或lnmp环境
查看>>
网络提速(最短路)
查看>>
Spring整合MongoDB实现多个or的范围查询
查看>>
python安装包模块
查看>>