Получить удаленный адрес при использовании трикотажа со встроенным гризли

Я безуспешно искал решение этой проблемы. Последние сообщения, которые я нашел, относятся к 2010 году. Я использую майку 1.12 со встроенным гризли 2.2.1.

Если я правильно понял, если я не разверну свои ресурсы трикотажа в контейнере сервлетов, я не смогу внедрить в них HttpServletRequest. Есть ли обходной путь?


person sina    schedule 28.07.2012    source источник
comment
jroller.com/iangreen/entry/getting_remote_host_using_jersey кажется той публикацией, на которую вы ссылаетесь   -  person Wolfgang Fahl    schedule 21.08.2013
comment
stackoverflow.com/questions/17233960/ есть некоторый код, который может работать   -  person Wolfgang Fahl    schedule 28.08.2013


Ответы (2)


Используйте следующее:

@Context org.glassfish.grizzly.http.server.Request req

Пример использования:

@Path("/example")
public class SomeResource {

  @POST
  @Consumes("application/x-www-form-urlencoded")
  public void someMethod(@Context Request req) {
    System.out.println(req.getRemoteAddr());
  }
}
person Dan    schedule 15.03.2014

В моем случае у нас был автономный кластер Jersey, работающий за nginx в качестве балансировщика нагрузки. Таким образом, обходной путь состоял в том, чтобы передать удаленный адрес в качестве заголовка запроса, который также легко доступен из Джерси:

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
person Ivan    schedule 28.09.2012