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传递对象类型参数(源码)
axis2 webservice入门知识(JS,Java,PHP调用实例源码)