※この記事のまとめは Twitter4JのSPDY対応について – TwitPane をご参照ください。
昨日の記事でTwitter4J+SPDYがSPDY通信しているか確認できると書いたのですが、非Android環境というか、Eclipseやコンソール上のjavaコマンドから実行するとどうにもSPDY通信してくれないので困っていました。
その後いろいろと調査した結果、どうやらJVMにnpn-bootというものが必要らしいです。
Jetty/Feature/NPN - Eclipsepedia
To enable NPN support, you need to start the JVM with:
java -Xbootclasspath/p:
...
肝心の npn_boot_jar も上記リンクからダウンロードできます(「もうjettyのバージョンに合わせてないのでファイル名のバージョンではなく日付に注目してね」って書いてあるので注意)。
NPNの仕組みはJVMが標準でサポートしていないということなのかな。
むしろAndroid/Dalvik VM*1が標準でサポートしているところがさすがGoogle製といったところですかね。
D:\(略)>java -version java version "1.7.0_04" Java(TM) SE Runtime Environment (build 1.7.0_04-b20) Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode) D:\(略)>"C:\Program Files\Java\jdk1.7.0_04\bin\java" -Xms30m -Xmx30m -Xbootclasspath/p:..\npn-boot-8.1.2.v20120308.jar -classpath (中略) twitter4j.examples.tweets.ShowStatusBenchmark start [1357ms] [160ms] [176ms] average:[564ms] rate limit:[159/180], [687sec] SPDY : [1/1]
たぶん java で SPDY やってる人には常識なんでしょうけど、ググラビリティが低くて2時間も悩んでしまったのでどなたかの参考になれば。
*1:4.1以降