JBoss AS 7, Java EE 6 как получить клиенты IP? - PullRequest
0 голосов
/ 20 марта 2012

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

Я хочу получитьIP-адрес клиента, когда он регистрируется в моем приложении ...

я нашел что-то вроде этого:

    @ManagedBean(name="testController")
    @SessionScoped
    public class TestController implements Serializable {

        private static final long serialVersionUID = -3244711761400747261L;
        protected final HttpServletRequest req;

        public TestController(HttpServletRequest req) {
            this.req = req;
            System.out.println(this.req.getRemoteAddr().toString());
        }
    }

, но у меня нет HttpServletRequest в конструкторе ...или я не знаю, как его использовать, все, что я получаю, это ошибки ....

Ответы [ 2 ]

4 голосов
/ 23 марта 2012

Доступно для ExternalContext#getRequest().

public TestController() {
    HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
    System.out.println(request.getRemoteAddr());
}

Обратите внимание, что вы совершаете одну серьезную концептуальную ошибку в своей первоначальной попытке. Вы пытаетесь назначить текущий HTTP-запрос как свойство управляемого * bean-объекта session . Экземпляр HTTP-запроса истечет к концу текущего HTTP-ответа и, следовательно, больше не будет действительным и будет выдавать исключения всех цветов при попытке доступа к его методам в последующих запросах, следующих за первоначальным запросом, когда был создан bean-объект сессионной области.

1 голос
/ 20 марта 2012

Я бы пошел по другому подходу, также используемому в проекте Seam Solder: создайте фильтр сервлета, который захватывает запрос сервлета и делает его доступным через производителя области приложения.См. Соответствующий исходный код проекта припоя .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...