Fessのクローラーライブラリであるfess-crawlerに、Apache HttpComponents 5.x のサポートを追加しました。
これまでfess-crawlerでは Apache HttpComponents 4.x を使用していましたが、5.x系ではHTTP/2のサポートやパフォーマンスの改善など、多くの機能強化が行われています。今回の対応により、fess-crawlerでも最新のHttpClientを利用できるようになりました。
主な変更点
新しいHTTPクライアント実装
- Hc5HttpClient – Apache HttpComponents 5.x を使用した新しいHTTPクライアント実装
- Hc4HttpClient – 既存の4.x系実装(後方互換性のために維持)
デフォルトの切り替え
Fess 15.5からは、問題がなければHttpClient 5系をデフォルトとして使用する予定です。
後方互換性
以前のHttpClient 4系を利用したい場合は、fess_config.propertiesのクローラーオプションに以下の設定を追加することで切り替えられます。
jvm.crawler.options=\
-Dfess.crawler.http.client=hc4\n\
...
技術的な詳細
今回の実装では、既存のHcHttpClientを抽象クラスとしてリファクタリングし、共通ロジックを共有する形でHc4HttpClientとHc5HttpClientを実装しています。これにより、両方のバージョンを同じインターフェースで利用でき、切り替えも容易になっています。
また、以下の機能もHttpClient 5.x向けに実装されています。
- 認証機能(Basic、Digest、NTLM、SPNEGO)
- フォームベース認証
- コネクションプール監視
- 国際化ドメイン名(IDN)対応のDNSリゾルバ