Wie kann man die aufrufende ip-Adresse auf ein ejb-Aufruf?
Wenn ein java-client ruft eine remote EJB auf einem anderen server, wie kann man die client-IP-Adresse? Beachten Sie, dass es wichtig ist, um es von dem server, da der client ist wahrscheinlich, die hinter einer NAT-firewall, und in diesem Fall brauchen wir die öffentliche IP-Adresse.
HINWEIS: Obwohl es sich vorzugsweise um eine generische Lösung, die zumindest ich konnte verwenden Sie eine, die ruft die IP-Adresse von einem EJB2 Anruf auf JBoss 4.2.2
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser Artikel auf dem JBoss-community-wiki befasst sich genau mit deinem Problem. Vor JBoss 5 die IP-Adresse anscheinend muss analysiert werden, von der thread-name. Und das scheint der einzige Weg, es zu tun, die auf früheren Versionen. Dies ist der code-snippet, es zu tun (kopiert aus dem link oben):
Haben Sie versucht: java.rmi.server.RemoteServer.getClientHost() ?
http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/server/RemoteServer.html#getClientHost()
Ich glaube, dass der name des aktuellen worker-thread enthält eine IP-Adresse des Servers, nicht aber die client-IP-da threads zusammengelegt werden, ergibt sich vielmehr als erstellt für jeden Aufruf. In JBoss 4, kann man verwenden Sie die folgende Problemumgehung zum abrufen einer IP-Adresse des client:
Dank MicSim, erfuhr ich, dass der thread-name speichert die IP-Adresse. In JBoss 4.2.2 der thread name für EJB2-Elemente wie folgt Aussehen:
(Ich nehme an, das http ist optional, je nach Protokoll tatsächlich verwendet).
Diese können dann analysiert werden, mit einem regulären Ausdruck so: