Axis2 无返回值的异步调用

jacsen 2008-08-29 09:35:21
各位好!
想请教大家,关于用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编译后,对于客户端调服务的异步处理,有返回值和无返回值时,该怎么写?
如果你们有例子的话最好了!
谢谢了,小弟急待回复了!








...全文
176 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
jacsen 2008-09-01
  • 打赏
  • 举报
回复
唉,怎么没人来解答的啊?急啊!
各位帮帮忙!

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧