В течение некоторого нагрузочного тестирования одного из наших REST услуг, мы начинаем видеть такого рода журналы для шаблона REST Spring, когда нагрузка возрастает:Spring REST шаблон принимает заголовки
При одновременной нагрузке и после 3-4 часов, Принять заголовок запроса HTTP становится
DEBUG: org.springframework.web.client.RestTemplate - Setting request Accept header to [text/plain, application/json, application/*+json, text/plain, text/plain, text/plain, text/plain, text/plain, text/plain, text/plain, text/plain, text/plain, text/plain, text/plain, text/plain, text/plain, text/plain, text/plain, text/plain, text/plain, text/plain, text/plain, text/plain, text/plain, text/plain, text/plain, text/plain, text/plain, text/plain, text/plain,<and so on>, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, */*, <and so on>]
в конце концов, все звонки на эту услугу с помощью RestTemplate начать сбой с 400 Error (Bad Request)
службы REST называют принимает строку в качестве входных данных и имеет следующий Signatur e
@RequestMapping(value = "/findRecordById", method = {RequestMethod.POST, RequestMethod.GET })
@ResponseBody
public String findRecordById(@RequestBody String id) {//method body}
Мы отправляем запрос типа POST этой службе с запросом содержимого формы «someId», например. «123»
При низкой нагрузке при вызове службы не возникает никаких проблем.
Что вызывает недоумение - текст , */*, которые продолжают добавляться в список принимающих заголовков для шаблона REST. Почему это происходит?
Объявление шаблона боб REST, как это:
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
<constructor-arg>
<bean class="org.springframework.http.client.HttpComponentsClientHttpRequestFactory">
<property name="readTimeout">
<value>90000</value>
</property>
<property name="httpClient" ref="restHttpClient" />
</bean>
</constructor-arg>
</bean>
<bean id="restHttpClient" class="org.apache.http.impl.client.DefaultHttpClient">
<constructor-arg>
<bean class="org.apache.http.impl.conn.PoolingClientConnectionManager">
<property name="defaultMaxPerRoute">
<value>100000</value>
</property>
<property name="maxTotal">
<value>100000</value>
</property>
</bean>
</constructor-arg>
</bean>
Как запрос создается:
String postParams = "\"" + id + "\"";
String postResp = restTemplate.postForObject("findRecordById",postParams, String.class);
Пожалуйста, покажите нам пример запроса вы делаете с 'RestTemplate' .. –
редактировал вопрос, чтобы показать, как запрос сделан –
Итак, вы получаете 'restTemplate' непосредственно из' ApplicationContext' без каких-либо дополнительных изменений? И вы отправляете тонны запроса, как указано выше? –