В сеансовом компоненте EJB мне нужно знать IP-адрес, с которым клиент вызвал метод. Возможно ли получить эту информацию в JBoss 4.2.3?Получение IP-адреса вызывающего объекта метода EJB в JBoss 4.2.3
ответ
Что я предлагаю, это чистый взлом, но он может работать.
Вы должны получить дамп потока JBoss 4.2.3, пока вы активируете эти удаленные клиенты. Свалка нить выглядит примерно так (пожалуйста, не берите эту тему дамп буквально, его просто образец для вас, чтобы получить представление о том, как нить свалка выглядит)
"Attach Listener" daemon prio=9 tid=7f8624000000 nid=0x10eeed000 waiting on condition [00000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
"ajp-127.0.0.1-8009-Acceptor-0" daemon prio=5 tid=7f863d9c5000 nid=0x119033000 runnable [119032000]
java.lang.Thread.State: RUNNABLE
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:408)
- locked <7b20d3d28> (a java.net.SocksSocketImpl)
at java.net.ServerSocket.implAccept(ServerSocket.java:462)
at java.net.ServerSocket.accept(ServerSocket.java:430)
at org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultServerSocketFactory.java:61)
at org.apache.tomcat.util.net.JIoEndpoint$Acceptor.run(JIoEndpoint.java:314)
at java.lang.Thread.run(Thread.java:680)
Locked ownable synchronizers:
- None
"http-127.0.0.1-8080-Acceptor-0" daemon prio=5 tid=7f8633b9f000 nid=0x1187ae000 runnable [1187ad000]
java.lang.Thread.State: RUNNABLE
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:408)
- locked <7b20d3f08> (a java.net.SocksSocketImpl)
at java.net.ServerSocket.implAccept(ServerSocket.java:462)
at java.net.ServerSocket.accept(ServerSocket.java:430)
at org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultServerSocketFactory.java:61)
at org.apache.tomcat.util.net.JIoEndpoint$Acceptor.run(JIoEndpoint.java:314)
at java.lang.Thread.run(Thread.java:680)
Как вы можете видеть, каждый поток имеет связанный протокол/IP-адрес и более подробную информацию о потоке. Для конкретных потоков RMI вы найдете имя потока, в котором также находится IP-адрес клиента (что-то вроде этого WorkerThread # 0 [192.168.0.108:55208]) Вы можете проанализировать поток «NAME» и извлечь клиентский IP-адрес.
Это довольно хак, потому что имена потоков могут меняться между различными версиями, но для конкретной версии это должно работать.
Настоящая официальная JBoss Wiki [1], которая объясняет пример кода.
Надеюсь, это поможет.
Удачи вам!
[1] https://community.jboss.org/wiki/HowtogettheClientipaddressinanEJB3Interceptor
OP запрашивает IP-адрес клиента, а не IP-адрес сервера. Более того, есть намного более чистые способы получить IP-адрес сервера. – BalusC
JBoss создает новый поток для каждого соединения RMI, и я понимаю, что IP-адрес клиента встроен в имя потока. Я согласен, что это НЕ стандартный или идеальный способ сделать это, НО, как вы упомянули, есть ли лучшие способы поделиться этим с OP. – uaarkoti
BTW, вот официальная Wiki, которая использует именно то, что я предложил. https://community.jboss.org/wiki/HowtogettheClientipaddressinanEJB3Interceptor – uaarkoti
- 1. Получение объекта, вызывающего метод
- 2. Получение имени вызывающего метода
- 3. Получение вызывающего метода в C#
- 4. Файл, обслуживающий JBoss 4.2.3?
- 5. Документация JBoss 4.2.3.GA
- 6. Получение userNo вызывающего или вызывающего объекта
- 7. Jboss-4.2.3 Кажется, что игнорируется jboss-web.xml
- 8. Получить имя метода вызывающего объекта моего метода
- 9. Как получить адрес вызывающего удаленного клиента метода EJB в JBoss AS7
- 10. Servlet Spec для Jboss 4.2.3
- 11. Развернутый EJB3 в Jboss 4.2.3. Как мы к нему обращаемся?
- 12. Не удается найти EJB3 из ServletContextListener в JBoss 4.2.3
- 13. Исключение EJB в Jboss
- 14. В расширении Быстрое получение фактического вызывающего объекта?
- 15. Как запустить JBoss 4.2.3 в режиме отладки?
- 16. Поддержка JBoss 4.23 и EJB 2
- 17. позвоночник пользовательских событий: получение объекта вызывающего абонента
- 18. JBoss 4.2.3 - UserTransaction не связан, не публикуется
- 19. jboss-4.2.3.GA-jdk6.zip стабилен?
- 20. Поддерживает ли Jboss 4.2.3.GA JDK 1.4.2?
- 21. Настройка кеша JBOss для запуска на сервере JBoss 4.2.3.GA
- 22. Cassandra debug logging in JBoss 4.2.3
- 23. Запуск JBoss 4.2.3 и JBoss 5.1 на том же сервере
- 24. Jboss EJB и Shiro
- 25. JBoss AS 4.2.3 Hot deploy Разделенные файлы
- 26. JBoss 6 EJB tutorial.jar
- 27. @ EJB в JBoss 5.1.0 GA?
- 28. получение исключения при инициализации объекта ejb
- 29. Jboss 4.2.3 Приложение с огромным количеством анонимных тем
- 30. JBoss 4.2.3 - как найти путь к банку файл
Это вопрос уже задавали в stakcoverflow раньше: http://stackoverflow.com/questions/1014358/how-can-you-get-the-calling-ip-address- on-an-ejb-call – Ben
Он не работает –
И он для V4.2.2 –