快速业务通道

WebService大讲堂之Axis2(8):异步调用WebService - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-07-04
nt.invokeNonBlocking(opAddEntry, opAddEntryArgs, new org.apache.axis2.client.async.AxisCallback() { @Override public void onComplete() { } @Override public void onError(Exception arg0) { } } @Override public void onFault(MessageContext arg0) { } @Override public void onMessage(MessageContext mc) { // 输出返回值 System.out.println(mc.getEnvelope().getFirstElement() .getFirstElement().getFirstElement().getText()); } }); System.out.println("异步调用!"); // 阻止程序退出 System.in.read(); } }

WebService大讲堂之Axis2(8):异步调用WebService(3)

时间:2011-08-13 BlogJava 哈佛校训

从上面的代码可以看出,invokeNonBlocking方法有三个参数,前两个参数分别指定了要调用的方法及 方法参数的相关信息,而最后一个参数并不是方法返回值的类型信息,而是一个实现 org.apache.axis2.client.async.AxisCallback接口的类的对象实例。在本例中隐式实现了AxisCallback 接口。在AxisCallback接口中有四个方法需要实现,其中当被异步调用的方法返回时onMessage方法被调 用。当运行上面的程序后,将输出如下的信息:

异步调用!

火星

虽然上面的例子可以实现异步调用,但比较麻烦。为了更方便地实现异步调用,可以使用wsdl2java命 令的-a参数生成可异步调用的Stub类。下面的命令可生成同步和异步调用的客户端代码(两个类),其中 -s表示生成同步调用代码,-a表示生成异步调用代码。

%AXIS2_HOME%\bin\wsdl2java -uri http://localhost:8080/axis2/services/myService?wsdl -p client -s -a -o stub

在执行上面的命令后,将生成两个类:MyServiceStub和MyServiceCallbackHandler类,其中 MyServiceStub类负责同步和异步调用WebService,MyServiceCallbackHandler类是一个抽象类,也是一 个回调类,当使用异步方式调用WebService方法时,如果方法返回,则MyServiceCallbackHandler类的 receiveResultgetName方法被调用。下面是使用MyServiceStub类异步访问WebService的代码:

package client;
import client.MyServiceStub.GetNameResponse;
class MyCallback extends MyServiceCallbackHandler
{
    @Override
    public void receiveResultgetName(GetNameResponse result)
    {
        //  输出getName方法的返回结果
        System.out.println(result.get_return());
    }
}
public class StubClient
{
    public static void main(String[] args) throws Exception
    {
        MyServiceStub stub = new MyServiceStub();
        //  异步调用WebService
        stub.startgetName(new MyCallback());
        System.out.println("异步调用!");
        System.in.read();
    }
}

WebService大讲堂之Axis2(8):异步调用WebService(4)

时间:2011-08-13 BlogJava 哈佛校训

执行上面的程序后,将输出如下的信息:

异步调用!

火星

在.net中也可以使用异步的方式来调用WebService,如在C#中可使用

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号