如何使用具有连接池和基本身份验证的REST客户端?

时间:2012-06-13 15:03:27

标签: rest client jersey connection-pooling basic-authentication

我目前有:

  • 作为单独应用程序运行的REST API(Jersey)
  • 作为REST API客户端的GUI应用程序(JSF)

我想知道从GUI应用程序与REST API交流的最佳方式是什么。 REST API是无状态的,但GUI应用程序是有状态的,必须通过每个休息请求的身份验证信息(基本身份验证)。由于我们必须支持数百个并发用户,因此我们希望为连接池配置Jersey客户端。

我们可以通过使用Apache的HTTP客户端配置Jersey客户端来处理连接池。可以使用HTTPBasicAuthFilter处理身份验证,HTTPBasicAuthFilter将自动为每个请求发送相同的凭据。

但是,我不确定最好为整个GUI应用程序配置1个客户端,还是每个会话创建一个新客户端。

使用1个应用程序客户端,连接池是有意义的,但是我必须找到一种方法来为每个请求设置正确的身份验证信息。 HTTPBasicAuthFilter假设凭证永远不会改变,这不是我们的应用程序。

如果我每个会话使用新的HTTPBasicAuthFilter创建一个客户端,那么身份验证很简单,但我不会从连接池中获得任何好处,因为每个客户端都有自己的池。

我怀疑我是第一个遇到这种情况的人,所以我很好奇其他人是如何解决这个问题的。

亲切的问候,

格伦

1 个答案:

答案 0 :(得分:1)

您可以在WebResource级别附加客户端过滤器。因此,您可以将HTTPBasicAuthFilter附加到单个共享客户端和每会话WebResource对象。