ログでアクセス元のクライアント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。