Spring RestTemplate, похоже, не является потокобезопасным по отношению к заголовкам - PullRequest
0 голосов
/ 07 января 2020

У меня есть веб-клиент Spring, который отправляет сообщения на веб-сервер Spring (с одним и тем же URL-адресом), используя двух разных пользователей c. Это известная проблема, что я не могу использовать один RestTemplate для обоих?

Когда я использую один RestTemplate, и запросы почти одновременно (в разных потоках), хотя я указываю разных пользователей в заголовке, принимающий сервер думает, что они от одного пользователя! Обратите внимание, что запрос и заголовки (и тело сообщения) заново выделяются для каждого запроса.

Если я использую один RestTemplate, но ставлю synchronized () вокруг вызова к

response = RestTemplate.exchange(url, method, requestParams, MyResponse.class)

работает нормально.

Я также попытался создать два шаблона RestTemplate, по одному для каждого пользователя (каждый из которых создан с RestTemplateBuilder), который тоже работает. Я сохраню это решение, но меня удивляет, что оно необходимо.

Это известная проблема?

(я вижу, что stackOverflow отвечает, что RestTemplate является поточно-ориентированным после создания, но заголовки передаются вместе с запросом, а не как настройка уже созданного RestTemplate ...)

...