読者です 読者をやめる 読者になる 読者になる

Challenge Java EE !

Java EEを中心に趣味や仕事における開発メモを書いています。

JSFでクライアントIPアドレスの取得

IPアドレス ロギング NetBeans

ログでアクセス元のクライアントIPアドレスを残す必要が出ました。
JSF、というか、CDI管理Beanで以下のようにして普通に取得できますが、サーバ自身からアクセスすると「0:0:0:0:0:0:0:1」となります。。これはIPv6ループバックアドレスらしい(IPv4でいう127.0.0.1)ですが、なぜここだけIPv6になるんだ…。

private String getRemoteIpAddr(){
    ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
    HttpServletRequest request = (HttpServletRequest)externalContext.getRequest();
    return request.getRemoteAddr();
}

別マシンからアクセス(社内LAN)すると、ちゃんと「10.25.255.XXX」のように出ました。一安心。
うーむ、しかしなぜ127.0.0.1にならないんでしょうか。

この作業していて一番驚いたのは、別マシンからアクセスしたとき、たまたまサーバ側のNetBeansでブレイクポイントを置いていたのですが、そこに止まったこと。こんな簡単にリモートデバッグできるのか。
VisualStudioは確かこれができなくて(設定が悪かったのかもしれないけど)困ったことがあったので、かなり嬉しいです。
おそるべしNetBeans

にほんブログ村 IT技術ブログへ
にほんブログ村
にほんブログ村 IT技術ブログ Javaへ
にほんブログ村