BLOGTIMES
2012/04/17

Java からインターネットオプションで指定された Proxy を使う

  java  networking 
このエントリーをはてなブックマークに追加

ある Java で書かれたアプリを使っていたら、そのアプリがインターネットオプションで指定されたプロキシにあわせて、設定が自動的に切り替わっているようだったので、どういう実装になっているのかと調べてみたのですが単に java.net.HttpURLConnection が使ってあるだけでした。普段、アプリを開発するときに Proxy を使うことを考慮したことがなかったので、ちょっと Java のネットワークプログラミングで Proxy を扱う方法を調べてみました。

Java ネットワークとプロキシ

最近の Windows システムや Gnome 2.x プラットフォームでは、デフォルトの ProxySelector に対してシステムのプロキシ設定の使用を指示できます (最近のバージョンの Windows および Gnome 2.x では、ユーザーインタフェースからプロキシをグローバルに設定することが可能)。システムプロパティー java.net.useSystemProxies が true に設定されている場合 (デフォルトでは互換性維持の目的で false に設定されている)、デフォルトの ProxySelector はこれらの設定の使用を試みます。このシステムプロパティーは、コマンド行で設定することも、JRE インストールファイル lib/net.properties を編集して設定することもできます。このような方法で、所定のシステムでシステムプロパティーを一度だけ変更する必要があります。

上記のドキュメントによると java.net.useSystemProxies を設定することにより、インターネットオプションに指定されている Proxy を使うことができるようです。確かにプログラム中には下記のようなプロパティの設定をしている部分が存在していました。

System.setProperty("java.net.useSystemProxies","true");

プログラム中でこの指定がなされていなくても、例えば下記のようにプログラム起動時にコマンドラインから指定することもできるようです。

java -Djava.net.useSystemProxies=true -jar hoge.jar

    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/4902
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン