Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java web服务客户端上的超时_Java_Web Services_Jax Ws - Fatal编程技术网

java web服务客户端上的超时

java web服务客户端上的超时,java,web-services,jax-ws,Java,Web Services,Jax Ws,我们的团队选择使用NetBeans 7.1.2提供的所有工具开发web服务 不幸的是,我们的web服务太不稳定,很多时候处于脱机状态。这是我们现在无法解决的问题。我们的决定是在客户机中实现超时。但我们没有找到任何关于它的选项或文档 例如,当服务需要5秒钟才能返回答案时,是否有方法使客户端抛出异常?因此,我们无法捕获此异常并处理视图的流 我这样问是因为有很多方法可以通过线程和时间计数器来实现它,但很明显,其他程序员已经遇到了同样的问题 顺便说一下,我们正在使用JAX-WS 非常感谢。使用java.

我们的团队选择使用NetBeans 7.1.2提供的所有工具开发web服务

不幸的是,我们的web服务太不稳定,很多时候处于脱机状态。这是我们现在无法解决的问题。我们的决定是在客户机中实现超时。但我们没有找到任何关于它的选项或文档

例如,当服务需要5秒钟才能返回答案时,是否有方法使客户端抛出异常?因此,我们无法捕获此异常并处理视图的流

我这样问是因为有很多方法可以通过线程和时间计数器来实现它,但很明显,其他程序员已经遇到了同样的问题

顺便说一下,我们正在使用JAX-WS


非常感谢。

使用java.util.concurrent包类。例如,您可以使用timeout执行Future实例:
Future.get(5,TimeUnit.SECONDS)
,如果它使用TimeoutException异常,您可以根据需要做出反应:

Future<String> future = executor.submit(new Callable<String>() {
    public String call() {
        return webService.executeServiceMethod();
    }
});
try {
    String result = future.get(5, TimeUnit.SECONDS);
    processResult(result);
} catch (TimeoutException ex) {
    displayMessageToUserOrExecuteAgain();
}
Future-Future=executor.submit(新的可调用(){
公共字符串调用(){
返回webService.executeServiceMethod();
}
});
试一试{
字符串结果=future.get(5,TimeUnit.SECONDS);
处理结果(result);
}捕获(TimeoutException例外){
DisplayMessageToUserExecuteAGain();
}

Web服务客户端可以配置超时,请参阅此

您是说如果用户等待5秒,您的服务负载很重,因此您想返回503错误?不。实际上,我们的托管bean使用Web服务客户端来更新某些面板。但是这些面板不能干扰页面流。因此,如果web服务返回答案的时间超过5秒,我想将panel“rendered”属性设置为false。这可能很有效,但调用将继续运行,消耗资源等。您的调用可能会超时,但底层工件不会超时。@hoaz,它起到了作用,我正处于结束问题的一个步骤中。但只有一件事让我担心。应用服务器内存泄漏是否有危险?我问这个问题是因为我害怕使用非托管线程,而对于Future,如果抛出TimeoutException,我就不能杀死线程,对吗?Future#cancel可以很好地工作,实际上还有其他释放资源的方法,比如关闭执行者本身,这样你就可以尝试使用它了it@Adriano“斯坦利”:也指。这似乎以一种更优雅的方式解决了您的问题。您好,需要帮助,我已经为注入的客户端配置了连接超时,但默认时间超过1分钟。有人能给点建议吗?