各位好!
    想请教大家,关于用Axis2 做WebService的客户端的异步调用,无返回值时怎么处理?我自已测试了,不成功,主要是无返回值时,不设线程的睡眠,让CallbackHandler程序去等待返回的结果,就调不到服务接口!但设置了线程睡眠,是调到接口服务了,但会报错!我用的是非API的方式的,就是用wsdl2java工具,将wsdl文件反编译成本地的java文件,再来调用这些JAVA类操作.以下是我的代码段: public static void main(String[] args) {

try {
HelloWorldStub stock=new HelloWorldStub();
HelloWorldStub.SayHello request=new HelloWorldStub.SayHello();
request.setName("www.baidu.com");
HelloWorldCallbackHandler backHandler=new MyCallbackHandler();

System.out.println("send request:");
stock.startsayHello(request,backHandler);


int i=0;
while(backHandler.getClientData()==null & i<=10){
try {
Thread.sleep(1000);
i++;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} catch (AxisFault e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
}

System.out.println("request over!");
}我在服务接口设置了服务睡眠10秒钟,当这个客户端的程序10秒后,就会报个错出来:
  Exception in thread "Axis2 Task" java.lang.NullPointerException
at org.apache.axis2.description.OutInAxisOperationClient$NonBlockingInvocationWorker.run(OutInAxisOperation.java:472)
at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1061)
at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:575)
at java.lang.Thread.run(Thread.java:595)
现在服务是调到了,容器显示客户端调用服务接口的信息,但我这边的回调函数没用调到,不知道是不是因为没有返回,所以不调用返回函数,我的回调函数是这样的:public class MyCallbackHandler extends HelloWorldCallbackHandler { public void receiveResultsayHello() {

System.out.println("接口调用完成!");
}
}
servers.xml文件:
<service name="HelloWorld">
<parameter name="ServiceClass">helloworld.HelloWorld</parameter>
<operation name="sayHello">
<messageReceiver 
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
</operation>
</service>以上说是我做测试的代码了,如果看得眼花的话,你就指点我下,当用wsdl2java编译后,对于客户端调服务的异步处理,有返回值和无返回值时,该怎么写?
如果你们有例子的话最好了!
谢谢了,小弟急待回复了!