как получить IP-адрес клиента для разных типов клиентов

#glassfish #client #ejb #ip #java-ee-5

#glassfish #клиент #ejb #ip #java-ee-5

Вопрос:

Как я могу получить IP-адрес клиента в перехватчике ejb? Мое приложение основано на javaee5 и развернуто на glassfish, и у него разные типы клиентов (веб-сервисы ejb / MDB / jax-ws), И у меня есть перехватчик по умолчанию, который отвечает за регистрацию IP-адреса клиента и т. Д. Могу ли я использовать java.rmi.server.RemoteServer? Я тестирую это, но получаю эту ошибку :

ServerNotActiveException: not in a remote call

Есть идеи?

Комментарии:

1. Не уверен, что это возможно. Я не думаю, что контейнер EJB имеет доступ даже к HTTP-запросу, поэтому я считаю, что может быть невозможно получить IP-адрес клиента

2. Даже если я использую обработчик soap и помещаю значение в контекст сообщения и получаю его в перехватчике? Могу ли я получить доступ к IP-адресу клиента в обработчике soap?

3. Если вы предоставляете свой EJB как веб-сервис — как я понял из вашего ответа — вы можете получить IP-адрес в самой службе, введя @Resource WebServiceContext . Это дает вам доступ к запросу сервлета, который содержит метод getRemoteAddr(), который возвращает IP-адрес клиента. Тогда нет необходимости использовать обработчик soap.