1

我目前正在使用由 jax-rs 框架(当前为 RestEasy)注入的 UriInfo 来构建我在 Location 标头中使用的 URI。从 UriInfo 创建的 url 也用于响应 xml/json。

所以简而言之,它看起来像:


public class ResourceBean {
  @Context
  private UriInfo uriInfo
  public Response mappedMethod(){
    ...
    UriBuilder builder = uriInfo.getBaseUriBuilder().path(...);
    ...
  }
}

问题是我们在应用程序服务器前面使用负载平衡器,如果用户/系统要遵循其中一个链接,它需要通过负载平衡器而不是直接连接到这台机器。uriInfo.getBaseUriBuilder()返回当前机器的基本 URL,而不是负载均衡器的基本 URL。

我知道一些负载均衡器可以进行 url 重写来实现这一点,但不幸的是,我对我们的负载均衡器没有任何控制或访问权限,也不知道他们是否支持它,或者它是否可能在html响应。

是否存在可以操作或构造 UriInfo 以包含负载均衡器的基本 URI 的中心点?

4

1 回答 1

0

我找到了 UriInfo 的构造位置。信息是从 HttpServletRequest 收集的。不幸的是,除了更改 RestEasy 代码来操作它之外,别无他法。

因此,我将使用 Servlet 过滤器在请求到达框架之前对其进行操作。

于 2011-03-11T13:19:45.370 回答