RESTful 具有 data-driven 凭据的服务客户端无法正常工作

RESTful service client with data-driven credentials not working

我正在使用 Spring 4 的 RestTemplate 和 Jakarta 的 HttpComponents 4.3 来实现远程 Web 服务的客户端。客户端通过安全电路使用基本身份验证。一切都很好运行,但现在我们正在升级到一种模式,连接的用户名将根据请求的内容而变化。

到目前为止,PoolingHttpClientConnectionManager 在确定现有连接是否对新连接请求有效时似乎忽略了凭据 - 它严格查看路由。所以第一次调用远程服务效果很好。第二次调用返回 "invalid credentials"。检查日志显示这两个调用使用相同的身份验证 headers.

关于如何处理这个问题有什么建议吗?我曾希望 PoolingHttpClientConnectionManager 能够支持命名池​​,有效地允许使用用户名作为池名称。事实似乎并非如此。我尝试使用多个 PoolingHttpClientConnectionManager objects,但实际的连接池是共享的。

所以 10 个月后回到这个问题,因为谁喜欢没有答案的问题?

我们最终为每组可能的凭据创建了一个单独的 PoolingHttpClientConnectionManager。不是一个漂亮的技术解决方案,但它奏效了。