2008年3月22日土曜日

VistaでTomcatを動かすとIPアドレスがv6扱いになってる

スズキです。

携帯コンテンツ自動変換フィルター(Java)である
Durianをセッティングしているときに、表記の問題ではまりました。
http://durian.symmetric.jp/dev/

現象は、Durianフィルターを設定("/*"に対し)すると、
どのコンテンツも403エラーになってしまう、というものです。

いろいろ調べたところ、Tomcatのアクセスログが、

0:0:0:0:0:0:0:1 - - [22/Mar/2008:01:20:35 +0900] "GET
/durian/index.html HTTP/1.1" 403 947

となっていることに気づきました。0:0:0:0:0:0:0:1ってIPv6じゃん!
ってことです。

なのでまずは、IPv6をIPv4にもどしてみようと、いろいろググると、
下記のような情報が出てきました。

▼Windows Vista + Tomcat Tips
http://sbirobo.com/2008/01/tips-regarding-windows-vista-with-tomcat.html
▼HttpServletRequest#getRemoteAddr()とIPv6
http://d.hatena.ne.jp/Kazzz/20070129/p1

つまり、java起動オプションに"-Djava.net.preferIPv4Stack=true"
を追加すればいけそうです。

実際、set JAVA_OPTS="-Djava.net.preferIPv4Stack=true"
として、Tomcatを起動して、Durianフィルターをかけているコンテンツに
アクセスすると、無事、変換後のコンテンツが表示されました。

念のため、再度アクセスログを確認すると、

127.0.0.1 - - [22/Mar/2008:01:22:56 +0900] "GET /durian/index.html
HTTP/1.1" 200 371

と、ちゃんとIPv4に戻っています。

ただ、開発はEclipseのWTPで行っているので、実際は
set JAVA_OPTS="-Djava.net.preferIPv4Stack=true"
というわけにはいきません。

こちらに関しては、Eclipseの上部メニューの
[ウィンドウ] > [設定] > 適当なJREを選択して[編集]
で出現するJREの編集パネルの"デフォルトのVM引数"
に"-Djava.net.preferIPv4Stack=true"を設定することで
同様のことが実現できました。

これで、Windows(Vista)上のEclipse(WTP)での
Durianを前提にした開発の準備ができました。

次は、絵文字まわりかな。

--

http://suz-lab.blogspot.com/

0 コメント: