![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
java客户端调用webservice 超时问题
在action调用了webservice的一个接口,希望能超过20秒,我们就在页面上提示接口返回超时,但在20秒内只要接口有返回,接口马上停止等待向下执行,请问这要怎么写...
在action调用了webservice的一个接口,希望能超过20秒,我们就在页面上提示接口返回超时,但在20秒内只要接口有返回,接口马上停止等待向下执行,请问这要怎么写代码才好呢?客户端代码如下:String address = "http://localhost:8080/axis2spring/services/WeatherService"; EndpointReference target = new EndpointReference(address); RPCServiceClient serviceClient = new RPCServiceClient(); Options options = serviceClient.getOptions(); options.setTo(target); QName opGetWeather = new QName("http://service","getWeather"); Object[] opGetWeatherArgs = new Object[]{}; Class[] returnType = new Class[]{Weather.class}; Object[] response = serviceClient.invokeBlocking(opGetWeather, opGetWeatherArgs, returnType); Weather ret = (Weather) response[0]; if(ret == null){ System.out.println(" has no record"); }else{ System.out.println("Temperature: " + ret.getTemperature()); }(答案有帮助的话,再加分)
展开
展开全部
用多线程来处理类似问题
将调用这个WebService的程序放到一个独立线程A中,再创建另一个线程B用来计时,线程A和线程B共享一个变量responseOK。
在线程A中调用WebService之前启动线程B,成功虚顷基返回后设定差谨responseOK=true。
线程B启动后计时,如果responseOK==true则停止计时,如果计时超过20秒,则终止线程A并返回错误信息。
似乎webService调用的时候如果服务端超时应该会有异常触发的,截乎袭获此异常即可。
将调用这个WebService的程序放到一个独立线程A中,再创建另一个线程B用来计时,线程A和线程B共享一个变量responseOK。
在线程A中调用WebService之前启动线程B,成功虚顷基返回后设定差谨responseOK=true。
线程B启动后计时,如果responseOK==true则停止计时,如果计时超过20秒,则终止线程A并返回错误信息。
似乎webService调用的时候如果服务端超时应该会有异常触发的,截乎袭获此异常即可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询