【问题标题】:Is it possible to override default request-timeout in a specific web-service method?是否可以在特定的 Web 服务方法中覆盖默认请求超时?
【发布时间】:2017-05-29 09:02:13
【问题描述】:

在我的 Web 服务客户端 (JAX-WS RI 2.2.9-b14002) 中,我设置了相当低的连接和请求超时,但是对于某些方法,我想以默认超时不会覆盖的方式覆盖它们改变。 换句话说,我想在用户调用特定方法时设置更高的请求超时,为所有其他方法保留默认超时。

先谢谢了,再见

【问题讨论】:

  • 看看这个snippet of code 这允许你设置一个全局然后每个请求超时

标签: java timeout jax-ws request-timed-out


【解决方案1】:

您可以通过首先创建一个 ClientConfig 并在创建新客户端时将其作为参数提供来做到这一点。

ClientConfig configuration = new ClientConfig();
configuration.property(ClientProperties.CONNECT_TIMEOUT, 1000);
configuration.property(ClientProperties.READ_TIMEOUT, 1000);
Client client = ClientBuilder.newClient(configuration);

【讨论】:

  • 为什么要在调用另一个方法之前重新创建客户端,这没有意义。谢谢罗斯,但这不是我要找的答案:(
【解决方案2】:

我相信你可以通过使用请求上下文来做到这一点

requestContext.put(BindingProviderProperties.REQUEST_TIMEOUT, REQUEST_TIMEOUT);
requestContext.put(BindingProviderProperties.CONNECT_TIMEOUT, CONNECT_TIMEOUT);

【讨论】:

  • 谢谢,但我从来没有问过这个:) 此外 BindingProviderProperties 来自 com.sun.xml.internal.ws.client。并且使用内部包会产生编译错误。
猜你喜欢
  • 2010-09-17
  • 2013-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 2016-09-29
相关资源
最近更新 更多