Doge log

Abby CTO 雑賀 力王のオフィシャルサイトです

Mac OS Xでtomcat6のNIOを使う際の注意

こんにちは。abbyのMac担当です。
ちょっと野暮用でtomcat6を触ってたんだけどNIOはどうもそのままだとうまく動かない。
このネタはtomcatのMLにも流れてたけど。
tomcat6からはNIOのConnectorが使える。
いろんなところに書かれてるけど設定は簡単で

    <!-- original
    <Connector port="8080" protocol="HTTP/1.1" 
               maxThreads="150" connectionTimeout="20000" 
               redirectPort="8443" />
    -->
    
    <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" 
               maxThreads="150" connectionTimeout="20000" 
               redirectPort="8443" 
               />

のようにprotocolを変えるだけでいい。
これでCometProcessorを実装したServletを書いて・・・って進むわけなんだけどMacだとそのまま動きません。
なんかInvalid argumentとか言われるはずです。
回避するにはVMのoptionに

-Djava.net.preferIPv4Stack=true

こいつを追加する必要があります。
まあようはIPv4を優先してくれって設定なんだけどー。
Invalid argumentって出る場合はこのoptionを疑えみたいな話がどっかにあったかも知れないけど忘れた。
まあMacjavaなんて触るひとなんていないよね。キモイし。
うくく。