簡體   English   中英

在JBoss 4.2.3中獲取EJB方法的調用者的IP地址

[英]Obtaining the IP address of the caller of an EJB method in JBoss 4.2.3

在EJB的會話bean方法中,我需要知道客戶端用來調用該方法的IP地址。 是否可以在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM