2

我目前有:

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

我想知道从 GUI 应用程序与 REST API 对话的最佳方式是什么。REST API 是无状态的,但 GUI 应用程序是有状态的,并且必须通过每个 REST 请求传递身份验证信息(基本身份验证)。因为我们必须同时支持数百个用户,所以我们想配置我们的 Jersey 客户端以进行连接池

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

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

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

如果我为每个会话创建一个带有新 HTTPBasicAuthFilter 的客户端,那么身份验证是微不足道的,但我没有从连接池中获得任何好处,因为每个客户端都有自己的池。

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

亲切的问候,

格伦

4

1 回答 1

1

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

于 2012-06-13T15:47:31.917 回答