axis1.4 设立请求超时时间——call.setTimeout();
来源:互联网 发布:linux 删除路由 编辑:程序博客网 时间:2024/06/05 17:19
项目中使用axis1.4生成的webservice,访问公安网的接口,使用过程中某些业务和时间段调用接口会产生请求超时的情况,由于业务是顺序执行,无法通过线程等待一段时间的方式来处理请求超时,因此只能尝试从webservice自身入手。
先说解决方案:通过各种设置setTimeout来控制请求超时时间。
具体怎么设置,尝试过的有如下几种:
如果是使用stub方式调用webservice,有两种方式设定:
1:统一所有出口的超时时间设定:
这种方式在axis生成的四个客户端类中,对stub这个类下手,这个类就是stub方式调用的核心类,以前总认为它是自动生成能的,不能随便乱动,其实不然,关键是找到下手的地方。仔细阅读,你会在这个类里面找到webservice服务端对外暴露的方法,然后在在该方法里面找到生成call对象的地方,加入如下一行代码即可:
_call.setTimeOut(30000); //单位是毫秒
如果你想更灵活的控制超时时间,不妨把控制时间设置到配置文件里。
2:单个方法的超时时间控制:
在你的业务类处理接口调用方法里面,在获得stub对象的下面,加入如下代码:
stub.setTimeOut(30000); //单位是毫秒
这种方案控制到了具体的某个方法,更灵活。
解决方案来自于这里:
http://axis.apache.org/axis/faq.html#faq17
如果你是使用便捷模式调用,那更简单,直接一句话(标红代码):
String endpoint="http://ip/project/services/xxx?wsdl";
Service service =new service();
Call call=(Call) service.createCall();
call.setTargetEndpointAddress(endpoint);
call.setOperationName("methodname");
call.setTimeout(10000); //单位是毫秒
String ret =(String)call.invoke(new Object[] {xmldoc});
这种方法简单便捷,对于测试webservice极为方便,但是缺少灵活性,工程一般不建议使用。
最重要的,所有的方案都是从客户端下手,因为服务端常常不是你所能控制的。
- axis1.4 设立请求超时时间——call.setTimeout();
- axis1.4 设立请求超时时间——call.setTimeout();
- axis1.4 设置请求超时时间
- AFN请求超时时间
- 回调操作(Call Back)请求超时
- 设置 TOMCAT 请求超时时间
- 设置请求超时的时间
- 设置请求超时的时间
- AFNetWorking设置请求超时时间
- http 请求 超时时间设置
- ajax 设置请求超时(setTimeout和clearTimeout)
- unity5.4以上www可以设置请求超时时间了
- 超时时间设置的意义(SNMP4j中setTimeout)
- android的HttpClient添加请求超时时间
- 设置Apache的HttpClient请求时间超时
- 设置AFNetworking网络请求的超时时间
- 设置 AFNetworking 网络请求的超时时间
- PHP请求远程地址设置超时时间
- 构建灵活的 UI -Activity 运行时为 Activity 添加片段
- Spring Boot 性能优化
- 关系型数据库和关系型数据库管理系统
- php视频格式转换---------ffmpeg-php扩展与ffmpeg.exe安装与使用
- 练习
- axis1.4 设立请求超时时间——call.setTimeout();
- 基础最短路四 POJ3268
- 机器学习之自己实现决策树
- jsvascript === 和==的区别
- shuffle()重排数组
- webswebstorm快捷键
- java中的值传递
- Html blockquote标记
- java se 05