java - 来自客户端的超时 web 服务调用

标签 java rest timeout resteasy

我正在使用 RestEasy Client 调用网络服务。一项要求是,如果调用运行超过 5 秒,则中止/超时调用。我将如何使用 RestEasy Client 实现这一目标?我只看到服务器端超时,即如果在特定时间内未完成请求,Rest Easy 网络服务将使请求超时。

最佳答案

RESTEasy 客户端通常使用 Apache HttpClient 来处理网络对话。

您可以使用自己的自定义超时参数覆盖 HttpClient 属性:

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpParams params = httpClient.getParams();
HttpConnectionParams.setConnectionTimeout(params, connectionTimeoutMillis);
HttpConnectionParams.setSoTimeout(params, socketTimeoutMillis);

第一个参数允许您指定建立初始连接的超时时间,第二个参数允许您指定套接字在没有数据发送时等待的最长时间。

您可以使用修改后的 HttpClient 来构建您的 ClientExecutor:

ClientExecutor executor = new ApacheHttpClient4Executor(httpClient);

可以依次使用它来构建 ClientRequest 对象。或者,如果您使用 RESTEasy 的 Spring 配置,则可以将其注入(inject) RestClientProxyFactoryBean。

这与绝对 5 秒超时并不完全相同,但根据您要完成的目标,调整这两个属性通常可以满足要求。

关于java - 来自客户端的超时 web 服务调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5965917/

相关文章:

java - 如何使用接口(interface)正确实现多态性?

java - Java 中是否有框架来设置持久层?

javascript - 在 Javascript Web 应用程序中保护私有(private) API key

Grails::等待空闲对象的超时::GORM 事件方法

java - 我正在尝试解析一个文本文件以计算唯一字符串的数量并打印有关这些字符串的一些信息

java - Android JDOM2 xml解析,IOExcetion

javascript - 如何使用 PayPal Express Checkout 集成(客户端 REST)获取交易 ID

javascript - 为 mongodb REST API 编写通用查询函数

asp.net-mvc - .NET C# : How to handle forms authentication expiration during an AJAX call

sql-server - 从 SQL Server 新建的表中获取记录时出现超时错误