ValidatorActionは、状態を管理するオブジェクトはメソッド引数で渡されている。基本的にはスレッドセーフを目指して作られていると思うのだが、初期化処理部分でスレッドセーフじゃない部分を発見。
Strutsとかだとキャッシュされているので、同じValidatorActionに同時にアクセスするとNG。もっとも初期化処理が終わっていれば問題無いので、余り世の中では気づかれていないっぽい。
一応Bugzillaに登録しておきました。気が向いたらVoteしてください。
結構使われているライブラリなのに、意外っちゃ意外。マルチスレッドでテストケース流してなんてしていないんだろうし、探したらもっとあるかも。
HttpClientをばらして、独自のクライアントなりサーバなりを作りやすくしたものだそうな。面白い。将来的には、このHttpCoreを元にHttpClientが作り変えられる予定らしい。
マルチスレッドは大変ですね。とはいえ、マルチスレッドとか、マルチベンダーとか、マルチ商法とか、マルチがつくとろくなことがないなぁ。ぐはぁ。
HttpClient3.0つかったらよー サーバが返すCookieがRFC違反だとかいって拒食しやがって(その場面では)使い物にならんかった。ブラウザだったら文句言わずに食べるのに……。HttpCoreはどうなんだろう?
できたできた。getMethod.getParam().setCookiePolicy(BROWSER_COMPATIBILITY);