EJB의 세션 빈 메소드에서 클라이언트가 메소드를 호출 한 IP 주소를 알아야합니다. JBoss 4.2.3에서이 정보를 얻을 수 있습니까?JBoss 4.2.3에서 EJB 메소드 호출자의 IP 주소 얻기
답변
내가 제안하는 것은 순수한 해킹이지만 작동 할 수도 있습니다.
이러한 원격 클라이언트를 활성화 한 상태에서 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의 표준 또는 이상적인 방법이 아니라는 점에 동의한다. 그러나 OP와 그것을 공유하는 더 좋은 방법이 있다면 언급했듯이. – uaarkoti
BTW, 내가 제안한 것을 정확히 사용하는 공식 Wiki가 있습니다. https://community.jboss.org/wiki/HowtogettheClientipaddressinEJB3Interceptor – uaarkoti
- 1. JBoss 바인딩 IP 주소
- 2. JBoss 4.2.3에서 파일 검색?
- 3. 로컬 IP 주소 얻기
- 4. 사용자의 IP 주소 얻기
- 5. jboss 7.1 jboss 4.2에 대한 ejb 호출
- 6. 큐를 JBoss 4.2.3에서 JBoss 5.1로 마이그레이션합니다.
- 7. IP 주소 C#, asp.net 주소 얻기
- 8. 모델에서 사용자의 IP 주소 얻기
- 9. IP 주소 부분 문자열 얻기
- 10. Jboss 7.1.1 트랜잭션, 계단식 EJB 메소드
- 11. 두 IP 주소 사이의 IP 주소 목록 얻기
- 12. JBoss 웹 서비스에서 IP 주소 받기
- 13. JBoss 4.2.3에서 실행할 때 MySQL 데이터베이스 지우기
- 14. Ruby - 내부에서 클라이언트 IP 주소 얻기
- 15. 콘솔 응용 프로그램에서 IP 주소 얻기
- 16. POSIX C에서 자체 외부 IP 주소 얻기
- 17. 원격 소켓 종단점의 IP 주소 얻기
- 18. Django : settings.py 내의 원격 IP 주소 얻기
- 19. NCAT를 사용하여 클라이언트의 IP 주소 얻기
- 20. 호스트의 모든 외부 IP 주소 얻기
- 21. 이름과 이메일에서 someones ip 주소 얻기
- 22. java를 사용하여 클라이언트 컴퓨터의 IP 주소 얻기
- 23. 클라이언트의 IP 주소 얻기 웹 서비스의 경우
- 24. 호스트 이름에서 서버 IP 주소 얻기
- 25. socket.io를 사용하여 클라이언트 측 IP 주소 얻기
- 26. 요청한 클라이언트의 IP 주소 얻기 (SOAP 메시지)
- 27. JBoss 원격 EJB 호출에서 클라이언트 IP 주소를 얻는 방법은 무엇입니까?
- 28. MAC 주소 (IP 주소 :
- 29. 프록시 IP 주소 뒤의 추적 IP 주소
- 30. JBoss 시동시 EJB의 메소드 호출
이 이미 전에 stakcoverflow에 물었다 질문 : http://stackoverflow.com/questions/1014358/how-can-you-get-the-calling-ip-address- on-an-ejb-call – Ben
그것은 작동하지 않습니다 –
그리고 그것은 V4.2.2입니다 –