我目前正在使用由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的中心点?
答案 0 :(得分:0)
我找到了构建UriInfo的地方。该信息从HttpServletRequest收集。不幸的是,除了改变RestEasy代码之外别无他法操作它。
因此,我将使用Servlet过滤器在请求到达框架之前对其进行操作。