В настоящее время я использую UriInfo, внедренный инфраструктурой jax-rs (в настоящее время RestEasy), для создания URI, который я использую в заголовке Location. URL-адрес, созданный из UriInfo, также используется в ответе xml/json.
Итак, вкратце это выглядит примерно так:
public class ResourceBean {
@Context
private UriInfo uriInfo
public Response mappedMethod(){
...
UriBuilder builder = uriInfo.getBaseUriBuilder().path(...);
...
}
}
Проблема в том, что мы используем балансировщики нагрузки перед серверами приложений, и если пользователь/система должны перейти по одной из ссылок, ему нужно пройти через балансировщики нагрузки, а не напрямую на эту машину. uriInfo.getBaseUriBuilder()
возвращает базовый URL-адрес текущего компьютера, а не балансировщиков нагрузки.
Я понимаю, что некоторые балансировщики нагрузки могут переписывать URL-адреса для достижения этой цели, но, к сожалению, у меня нет никакого контроля или доступа к нашим балансировщикам нагрузки, и я не знаю, поддерживают ли они это, и возможно ли это вообще в теле html-ответ.
Существует ли центральная точка, где UriInfo можно манипулировать или сконструировать так, чтобы он содержал базовый URI балансировщика нагрузки?
1 ответ
Я нашел, где построен UriInfo. Информация собирается из HttpServletRequest. К сожалению, нет другого способа, кроме как изменить код RestEasy, чтобы манипулировать им.
Поэтому я собираюсь использовать фильтр сервлетов, чтобы манипулировать запросом до того, как он попадет во фреймворк.
Похожие вопросы
Новые вопросы
jax-rs
JAX-RS: Java API для веб-сервисов RESTful. Это API, который обеспечивает поддержку в создании веб-сервисов в соответствии с архитектурным стилем REST.