Apache Camel HTTP4和(JSESSIONID)cookies

Apache Camel HTTP4和(JSESSIONID)cookies,cookies,apache-camel,apache-httpclient-4.x,jsessionid,Cookies,Apache Camel,Apache Httpclient 4.x,Jsessionid,我有一个相对复杂的路由,在同一台主机上调用5个不同的URL。主机偶尔会发送cookies,我必须在随后的通话中返回cookies,就像浏览器一样。我正在使用Camel 2.10(由于兼容性问题,没有升级的机会),这个版本在默认情况下似乎没有配置cookie存储。如果我连接一个BasicCookieStore,它理所当然地会被HTTP4组件发出的所有调用共享。。。当然,这在许多用户共享的web应用程序环境中是没有意义的,因此这可能是一个错误的假设 我还注意到,如果我对同一个URL发出多个请求,那么

我有一个相对复杂的路由,在同一台主机上调用5个不同的URL。主机偶尔会发送cookies,我必须在随后的通话中返回cookies,就像浏览器一样。我正在使用Camel 2.10(由于兼容性问题,没有升级的机会),这个版本在默认情况下似乎没有配置cookie存储。如果我连接一个
BasicCookieStore
,它理所当然地会被HTTP4组件发出的所有调用共享。。。当然,这在许多用户共享的web应用程序环境中是没有意义的,因此这可能是一个错误的假设

我还注意到,如果我对同一个URL发出多个请求,那么应该始终为JSSessionID发送一个设置Cookie(当然,除非客户机已经发送了这个Cookie),但即使我在发出请求之前明确删除了所有头,服务器也只会第一次发送JSSessionID。我尝试了使用
bridgeEndpoint=true
和不使用这两种方法,在行为上没有差异。使用浏览器访问时,其行为与预期一致


看来我对骆驼如何处理饼干有严重的误解。有人能帮我理解发生了什么吗?

当您将bridgeEndpoint选项设置为true时,只需将http客户端默认cookieStore设置为false,这意味着它不记得任何cookie


如果bridgeEndpoint选项为false(默认值),http客户端将使用BasicCookieStore存储cookie。

这是否意味着cookie将在所有路由和所有用户之间共享,因为只注册了一个HTTP4组件?cookie可以在http客户端内共享,并且http客户端将在每个端点上创建。确定,因此,端点的所有调用者都将结束共享cookie。隐马尔可夫模型。。。我猜如果我想按用户会话id或类似的方式对cookie进行分组,我需要实现自己的CookieStore。显然,我不希望用户的JSessionID被其他人的值替换。camel-http4支持设置自定义cookie存储。替换默认实现应该很容易。