来自客户端的超时webservice呼叫

n00*_*13f 9 java rest timeout resteasy

我正在使用RestEasy Client调用Web服务.一个要求是,如果呼叫运行超过5秒,则中止/超时.我如何使用RestEasy Client实现这一目标?我只看到服务器端超时,即如果在一定时间内未满足,则Rest Easy websevice将超时请求.

Car*_*age 11

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

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

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpParams params = httpClient.getParams();
HttpConnectionParams.setConnectionTimeout(params, connectionTimeoutMillis);
HttpConnectionParams.setSoTimeout(params, socketTimeoutMillis);
Run Code Online (Sandbox Code Playgroud)

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

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

ClientExecutor executor = new ApacheHttpClient4Executor(httpClient);
Run Code Online (Sandbox Code Playgroud)

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

它与绝对的5秒超时不完全相同,但取决于您要完成的任务,调整这两个属性通常会填补这个空白.