使用RestTemplate的spring webservices的超时配置

jse*_*nck 4 java spring web-services timeout resttemplate

我想使用RestTemplate为客户端配置spring webservices的超时.我尝试了以下配置:

<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
<constructor-arg>
    <bean class="org.springframework.http.client.CommonsClientHttpRequestFactory">
    <property name="readTimeout" value="10000" />
    </bean>
</constructor-arg>
    <property name="messageConverters">
    <list>
    <ref bean="stringHttpMessageConverter" />
    <ref bean="marshallingHttpMessageConverter" />
    </list>
    </property>
</bean>
Run Code Online (Sandbox Code Playgroud)

但是当我启动tomcat时,我有一个NoClassDefFoundError:

06 févr. 2012 10:43:43,113 [ERROR,ContextLoader] Context initialization failed
java.lang.NoClassDefFoundError: org/apache/commons/httpclient/HttpMethodBase
Run Code Online (Sandbox Code Playgroud)

但是我在我的pom.xml中包含了commons-httpclient:

    <dependency>
        <groupId>commons-httpclient</groupId>
        <artifactId>commons-httpclient</artifactId>
        <version>3.1</version>
    </dependency
Run Code Online (Sandbox Code Playgroud)

知道如何做/解决这个问题吗?

提前致谢 !

Edu*_*yer 9

Snicolas的回答几乎对我有用,只需改变演员类:

RestTemplate restTemplate = new RestTemplate();    
((SimpleClientHttpRequestFactory)restTemplate.getRequestFactory()).setReadTimeout(1000*30);
Run Code Online (Sandbox Code Playgroud)

您还可以设置连接时间:

((SimpleClientHttpRequestFactory)restTemplate.getRequestFactory()).setConnectTimeout(1000*30);
Run Code Online (Sandbox Code Playgroud)