# Client IP ermitteln



## TSH (17. Feb 2012)

Hallo,

in meiner kleinen JSF2 Anwendung habe ich ein User Bean. Vereinfacht sieht es so aus:

```
@Named
@SessionScoped
public class User implements Serializable {
   
  final String IP_ADDR = "1.2.3.4";
}
```

Jetzt würde ich gerne möglichst einfach die Bean mit der aktuellen IP des Nutzers initialisieren. Gibt es da einen einfachen Weg? Freue mich über jeden Tipp! IP_ADDR sollte wahrscheinlich auch kein String sein.


----------



## JimPanse (18. Feb 2012)

In der Servlet API gibt es eine Möglichkeit die IP aus dem Request auszulesen.


```
FacesContext ctx = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest) ctx.getExternalContext().getRequest();


String addr = request.getRemoteAddr();
String host = request.getRemoteHost();
InetAddress remoteInetAddress = InetAddress.getByName(addr);

LOG.info(" addr " + addr + " host " + host + " remoteInetAddress: " + remoteInetAddress);
```


----------



## TSH (18. Feb 2012)

Danke, aber das ergibt bei mir die IP des hosts der Anwendung, nicht des Clients. Zugegebenermaßen greife ich lokal auf die Anwendung zu. Würde sich das bei extern gehosteter Anwendung ändern?


----------



## JimPanse (18. Feb 2012)

TSH hat gesagt.:


> Danke, aber das ergibt bei mir die IP des hosts der Anwendung, nicht des Clients.



du greifst lokal drauf zu d.h. localhost - was soll denn da sonst stehen? 




TSH hat gesagt.:


> Würde sich das bei extern gehosteter Anwendung ändern?



[JAPI]http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html[/JAPI]



> getRemoteAddr()
> Returns the Internet Protocol (IP) address of the client or last proxy that sent the request.



d.h. es wird die IP ausgelesen von dem Client der einen request gesendet hat.


----------

