WebService大讲堂之Axis2(8):异步调用WebService - 编程入门网
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表示生成异步调用代码。
在执行上面的命令后,将生成两个类: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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |