Файлы cookie Apache Camel HTTP4 и (JSESSIONID)

У меня относительно сложный маршрут, который вызывает 5 разных URL-адресов на одном хосте. Хост будет иногда отправлять файлы cookie, которые я должен возвращать при последующих вызовах, как это сделал бы браузер. Я использую Camel 2.10 (нет шансов на обновление из-за проблем с совместимостью), и эта версия, похоже, не настраивает хранилище файлов cookie по умолчанию. Если бы я подключил BasicCookieStore, было бы понятно, что он будет использоваться всеми вызовами, выполняемыми компонентом HTTP4 ... но это, конечно, не имеет смысла в контексте веб-приложения, совместно используемого многими пользователями, поэтому он может быть ошибочным предположением.

Я также заметил, что если я сделаю несколько запросов к одному и тому же URL-адресу, который всегда должен отправлять Set-Cookie для JSESSIONID (если, конечно, клиент уже не отправил этот файл cookie), но даже если я специально удаляю все заголовки перед созданием запрос, сервер отправляет JSESSIONID только в первый раз. Я пробовал как с bridgeEndpoint=true, так и без, без разницы в поведении. При доступе с помощью браузера он ведет себя так, как ожидалось.

Похоже, я что-то неправильно понимаю в том, как Camel работает с печеньем. Может ли кто-нибудь помочь мне понять, что происходит?


person kaqqao    schedule 07.09.2014    source источник


Ответы (1)


Когда вы устанавливаете для параметра bridgeEndpoint значение true, camel просто устанавливает для http-клиента cookieStore по умолчанию значение false, что означает, что он не запоминает никаких файлов cookie.

Если параметр bridgeEndpoint имеет значение false (значение по умолчанию), http-клиент использует BasicCookieStore для хранения файлов cookie.

person Willem Jiang    schedule 10.09.2014
comment
Означает ли это, что файл cookie будет использоваться всеми маршрутами и всеми пользователями, поскольку зарегистрирован только один компонент HTTP4? - person kaqqao; 10.09.2014
comment
Файл cookie может использоваться совместно с http-клиентом, и http-клиент создается для каждой конечной точки. - person Willem Jiang; 10.09.2014
comment
Итак, все абоненты конечной точки прекратят совместное использование файла cookie. Хм ... Полагаю, мне нужно было бы реализовать свой собственный CookieStore, если бы я хотел сгруппировать файлы cookie по идентификатору сеанса пользователя или что-то в этом роде. Я, очевидно, не хочу, чтобы пользователи заменяли свои jsessionids ценностями других людей. - person kaqqao; 10.09.2014
comment
camel-http4 поддерживает настройку собственного хранилища файлов cookie. Вам должно быть легко заменить реализацию по умолчанию. - person Willem Jiang; 11.09.2014