Java: Eclipse 3.5.2 (Galileo SR2) はデフォルトのままで NTLM 認証をパスできるようになった

以前の記事で、Eclipse 3.5 (Galileo) で NTLM 認証の必要なプロキシを通過できない現象について説明した。
今月リリースされた Eclipse 3.5.2 (Galileo SR2) では、デフォルトでも NTLM 認証をパスできるようになったようだ。

しくみ

前の記事でも少し触れたが、Eclipse 3.5 (Galileo) では、HTTP での通信にあたって

  • Java 標準 API に含まれている機能 (java.net.HttpURLConnection) を使う
  • Apache HttpClient を使う

という 2 つの選択肢が用意されている。java.net.HttpURLConnection は NTLM 認証の必要なプロキシも通過可能だが、Apache HttpClient はライセンス上の理由から NTLM 認証に対応していない。Eclipse 3.5 (Galileo) のデフォルトでは後者の Apache HttpClient が使用されるようになったため、NTLM 認証の必要な環境ではインターネットに接続できず、Eclipse のアップデート等が行えなかった。そこで前の記事では、「設定を変更して、java.net.HttpURLConnection が使われるようにする」という手順があることを紹介した。
Eclipse 3.5.2 (Galileo SR2) でも、デフォルトが Apache HttpClient であるのは変わらない。しかし、NTLM が必要かどうかを自動的に検出し、必要であるとわかった場合には HttpClient を使わないようにする機能が追加された。言ってみれば、上記の「インターネットに接続できなかったので、設定を変更して、java.net.HttpURLConnection が使われるようにする」という手順が Eclipse 自体に組み込まれたわけだ。

プラグイン開発するなら ECF

さて、Eclipse では HTTP 通信に複数の選択肢を用意して、自由に切り替えられるようになっているわけだが、こういった柔軟な仕組みを提供しているのが Eclipse Communication Frameword (ECF) と呼ばれるフレームワークだ。
ECF では、HTTP に限らず様々な通信方法を「プロバイダ」として追加することが可能で、実際に BitTorrentIRC など各種プロトコルでの通信を行うプロバイダが存在している。ECF の概要については、少し古いが次の記事が参考になりそうだ。

IBM developerWorks - ECF(Eclipse Communication Framework)入門
http://www.ibm.com/developerworks/jp/opensource/library/os-ecl-commfwk/index.html

Eclipse 用のプラグインを自作して、その中で何らかの通信を行うような場合は、ECF を利用するとよさそうだ。例えば、今後「ECF に新たな HTTP プロバイダが用意され、大幅に性能アップ!」なんてことになった場合、ECF を利用しているプラグインすべてが恩恵を受けることができる。逆に独自のプロトコルでの通信を考えている場合も、ECF のプロバイダとして実装することで、他のプラグインからもそのプロトコルを利用できるようになり、活用の幅が広がるだろう。