2009年7月16日木曜日

JSF で クライアントとサーバの IP アドレスを取得

JSF で サーバとアクセスしてきたクライアントの IP アドレスをとる方法でちょっと悩んだので、メモとして残します。
IP アドレスをとることよりも、 ServletRequest をとる方法がわからなかった・・・以下のコードでとることができました。
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;

public class JSFGetIpAddress {

   HttpServletRequest servletRequest = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
   private String serverIP = "unknown";    // サーバ IP アドレス
   private String clientIP = "unknown";    // クライアント IP アドレス

   public String getClientIP() {
       clientIP = servletRequest.getRemoteAddr();
       return clientIP;
   }

   public String getServerIP() {
       serverIP = servletRequest.getLocalAddr();
       return serverIP;
   }

}


なお、サーバ側 IP アドレスが 127.0.0.1 で表示される場合(私が CentOS で試した時そうなりました。)、 hosts の設定で 127.0.0.1 の前に割り当てる IP アドレスを記入したらちゃんと返してくれるようになりました。

もっと良い方法がありましたら、コメントで教えてください。

0 件のコメント :

コメントを投稿