项目中使用axis1.4生成的webservice,访问公安网的接口,使用过程中某些业务和时间段调用接口会产生请求超时的情况,由于业务是顺序执行,无法通过线程等待一段时间的方式来处理请求超时,因此只能尝试从webservice自身入手。
先说解决方案:通过各种设置setTimeout来控制请求超时时间。
具体怎么设置,尝试过的有如下几种:
如果是使用stub方式调用webservice,有两种方式设定:
1:统一所有出口的超时时间设定:
这种方式在axis生成的四个客户端类中,对stub这个类下手,这个类就是stub方式调用的核心类,以前总认为它是自动生成能的,不能随便乱动,其实不然,关键是找到下手的地方。仔细阅读,你会在这个类里面找到webservice服务端对外暴露的方法,然后在在该方法里面找到生成call对象的地方,加入如下一行代码即可:
_call.setTimeOut(30000); //单位是毫秒
如果你想更灵活的控制超时时间,不妨把控制时间设置到配置文件里。