2014-01-14 3 views
0

Я использую RestTemplate, чтобы отправить запрос на отправку. Что-то вроде этого:java.net.SocketException: Недопустимый аргумент с RestTemplate

restTemplate.postForObject(url, fetchImageDataRequest, SimpleImageHolder[].class); 

Когда я создаю restTemplate так:

restTemplate = new RestTemplate(); 
MappingJacksonHttpMessageConverter converter = new MappingJacksonHttpMessageConverter(); 
restTemplate.getMessageConverters().add(converter); 

Все отлично работает. Но когда я использую RestTemplate, созданный в spring.xml и определено, как это:

<bean id="reHttpConnectionManager" class="org.apache.commons.httpclient.MultiThreadedHttpConnectionManager"> 
    <property name="params"> 
    <bean class="org.apache.commons.httpclient.params.HttpConnectionManagerParams"> 
     <property name="soTimeout"     value="30000"/> 
     <property name="connectionTimeout"   value="30000"/> 
     <property name="maxTotalConnections"   value="300"/> 
     <property name="defaultMaxConnectionsPerHost" value="50"/> 
    </bean> 
    </property> 
</bean> 

<bean id="reRequestFactory" class="org.springframework.http.client.CommonsClientHttpRequestFactory"> 
    <property name="readTimeout" value="3000" /> 
    <constructor-arg> 
    <bean id="httpClient" class="org.apache.commons.httpclient.HttpClient"> 
     <constructor-arg> 
     <bean class="org.apache.commons.httpclient.params.HttpClientParams" /> 
     </constructor-arg> 
     <property name="httpConnectionManager" ref="reHttpConnectionManager" /> 
     <property name="state"> 
     <bean class="org.apache.commons.httpclient.HttpState" /> 
     </property> 
    </bean> 
    </constructor-arg> 
</bean> 

<bean id="restTemplate" class="org.springframework.web.client.RestTemplate"> 
    <constructor-arg ref="reRequestFactory" /> 
</bean> 

я получаю java.net.SocketException: Invalid argument исключение. Попытка понять эту проблему.

Полные Свайные след:

org.springframework.web.client.ResourceAccessException: I/O error: Invalid argument; nested exception is java.net.SocketException: Invalid argument 
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:453) 
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:401) 
at org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:279) 
+0

Просьба отправить полный стек. –

+0

@SotiriosDelimanolis - добавлено. Благодаря! – Avi

ответ

0

я не мог найти то, что проблема была, но я просто удалил HttpParams боб из конструктора боба httpClient и полностью удален в HttpState и теперь он работает. Новый XML выглядит следующим образом:

<bean id="reHttpConnectionManager" class="org.apache.commons.httpclient.MultiThreadedHttpConnectionManager"> 
    <property name="params"> 
    <bean class="org.apache.commons.httpclient.params.HttpConnectionManagerParams"> 
     <property name="soTimeout"     value="30000"/> 
     <property name="connectionTimeout"   value="30000"/> 
     <property name="maxTotalConnections"   value="300"/> 
     <property name="defaultMaxConnectionsPerHost" value="50"/> 
    </bean> 
    </property> 
</bean> 

<bean id="reRequestFactory" class="org.springframework.http.client.CommonsClientHttpRequestFactory"> 
    <property name="readTimeout" value="3000" /> 
    <constructor-arg> 
    <bean id="httpClient" class="org.apache.commons.httpclient.HttpClient"> 
     <property name="httpConnectionManager" ref="reHttpConnectionManager" /> 
    </bean> 
    </constructor-arg> 
</bean> 

<bean id="restTemplate" class="org.springframework.web.client.RestTemplate"> 
    <constructor-arg ref="reRequestFactory" /> 
</bean> 
Смежные вопросы