操纵UriInfo的中心点

时间:2011-03-10 06:55:11

标签: jax-rs resteasy

我目前正在使用由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重写来实现这一目标,但遗憾的是我没有对我们的负载均衡器进行任何控制或访问,也不知道他们是否支持它,或者是否有可能在回复的主体。

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

1 个答案:

答案 0 :(得分:0)

我找到了构建UriInfo的地方。该信息从HttpServletRequest收集。不幸的是,除了改变RestEasy代码之外别无他法操作它。

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