java axis2 调用webservice 怎么捕获超时异常(即超时了让它停下来,不要报错)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java axis2 调用webservice 怎么捕获超时异常(即超时了让它停下来,不要报错)相关的知识,希望对你有一定的参考价值。

思路是:用睡眠20秒的方式,Thread.currentThread().sleep(20000),如果20秒后没有给你返回信息(休眠结束后判断call==null),则停止等待。这部分代码怎么写啊?希望懂的人帮我一下(答案有帮助的话,再加分)

参考技术A   超时分两种,一种是客户端请求连接超时,一种是服务端处理时间过长,客户端等待超时。 看你要捕获哪一种?
  第一种你可以捕获ConnectTimeOutException;
  第二种你可以在客户端设置超时时间,比如发起请求之后服务端5秒还未返回处理后的结果就认为超时;
  在异常处理中执行正常业务逻辑即可。
参考技术B call.setTimeout(1000*20); //设置超时时间 20秒
调用接口时将代码Try catch起来,异常信息在catch块中不输出,继续执行后面的代码就行了
参考技术C

    axis2.xml 配置下,timeout时不做任何操作就行


JAVA Axis2调用WebService

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;       


     
            String url = "";
            String methodName = "";
            String targetNameSpace = "";

            Service service = new Service();
            Call call = (Call)service.createCall();
            call.setTargetEndpointAddress(new URL(UrlEncode.encodeURI(url)));
            call.setOperationName(
                    new QName(targetNameSpace,
                            methodName));
            call.addParameter("projectId", XMLType.XSD_STRING,
                    ParameterMode.IN);
            call.addParameter("templateName", XMLType.XSD_STRING,
                    ParameterMode.IN);
            call.addParameter("data", XMLType.XSD_BASE64,
                    ParameterMode.IN);
            Object res = call.invoke(new Object[] { projectId, templateName, bytes});

 

以上是关于java axis2 调用webservice 怎么捕获超时异常(即超时了让它停下来,不要报错)的主要内容,如果未能解决你的问题,请参考以下文章

JAVA Axis2调用WebService

java调用(axis2)WebService传递对象类型参数(源码)

axis2 webservice入门知识(JS,Java,PHP调用实例源码)

使用axis2调用webservice时,服务端接收到的参数为null

Java调用wsdl,怎么实现

Axis2生成wsdl客户端代码并实现webservice调用