J2EEアプリでIPアドレスを取得する方法

通常J2EEアプリにてアクセス元のIPアドレスを取得するにはHttpServletRequest#getRemoteAddrで取得できるのだが、環境によっては「0:0:0:0:0:0:0:1」のような IPv6 形式になってしまいます。

これはIPV6が優先して表示されているからだそうで、IPv4 を優先させるには、システムプロパティに java.net.preferIPv4Stack=true を設定する必要があります。

Linuxサーバーで動かしている場合

環境変数に以下を追加

export JAVA_OPTS='-Djava.net.preferIPv4Stack=true'
Eclipseの場合

1.メニューから「Run」-「Run Configurations...」をクリックします。
2.「Run Configurations」ダイアログから、対象となる「Apache Tomcat」の起動設定をクリックします。
3.「Arguments」タブを選択し、「VM arguments」の末尾に-Djava.net.preferIPv4Stack=true を追加します。
4.「Apply」ボタンをクリックします。


http://www.failuresoft.com/report/java_ee/servlet_remoteaddr_ipv4