注: この Java 配備ガイドでは、Java SE 6 update 10 リリースより前にリリースされた機能について説明します。最新情報については、Java Rich Internet Application の開発および配備を参照してください。

プロキシ構成

「プロキシ構成」では、次のトピックについて説明します。

はじめに

企業カスタマにとって、企業内でセキュアなコンピューティング環境を設定することは重要であり、プロキシ構成は、セキュリティー保護されたコンピューティング環境の必須要素です。プロキシ構成は、セキュリティーを保護する防壁として機能し、プロキシサーバーによって、インターネットとイントラネット間のすべてのトラフィックが監視されることを保証します。これは、通常、イントラネット内部の企業ファイアウォールにより施行されるセキュリティー保護の不可欠な部分です。イントラネット Web ページで、アプレットを配備するのに Java Plug-in を使用したり、アプリケーションを実行するのに Java Web Start を使用したりすることを望む企業カスタマは、プロキシサポートも設定することができます。このサポートは、Java Plug-in や Java Web Start がイントラネット環境で機能するために必要なもので、Java コントロールパネルを介して設定できます。

Java コントロールパネル

Java コントロールパネルでは、「ネットワーク設定」サブパネルに次の 4 つのプロキシオプションがあります。

「ブラウザの設定を使用」

「ブラウザの設定を使用」を選択した場合、プロキシ情報は完全にブラウザを介して入力されます。Internet Explorer の場合は、「ツール」>「インターネット オプション」で「接続」タブを開き、「ローカル エリア ネットワーク (LAN) の設定」を選択します。Netscape の場合は、「編集」>「設定」で「カテゴリ」の下の「詳細」を選択して、「プロキシ」を選択します。この機能方法と、ブラウザを介して設定される 3 つのタイプの接続 (直接、手動、および自動) については、以降のセクションで説明します。

「プロキシ・サーバーを使用」

Java コントロールパネルで「プロキシ・サーバーを使用」を選択した場合、2 つの選択肢があります。

  1. プロキシサーバーの「アドレス」と「ポート」を設定し、ローカルアドレスに対してはプロキシサーバーをバイパスするオプションを選択する。
  2. 「HTTP」、「Secure」、「FTP」、「Socks」の各接続に対して、個別にプロキシサーバーを設定する。プロキシサーバーを使用しないようにするアドレスの一覧を指定できる。

「自動プロキシ構成スクリプトを使用」

「自動プロキシ構成スクリプトを使用」を選択した場合、FindProxyForURL(URL url) という名前の JavaScript の位置を示す URL を入力しなければなりません。この JavaScript によって返されるプロキシサーバーが URL に使用されます。このスクリプトに対するサポートは、次の「自動プロキシ構成」で説明する内容と同じです。

「直接接続」

直接接続ではプロキシを使用しません。モバイルユーザーがモデムを介して会社に接続するような特定の状況では、イントラネット環境への直接接続が必要になります。これらの場合には、プロキシは使用すべきではありません。

Java Plug-in と Java Web Start でブラウザからプロキシ情報を取得する方法

ブラウザのプラットフォームが異なると、プロキシ情報を格納する方法も異なるため、プロキシ情報を取得するジェネリックなメカニズムはありません。ブラウザとプラットフォームの組み合わせ 2 種類によって、プロキシ情報を取得する方法を説明します。

Microsoft Internet Explorer: Internet Explorer では、プロキシ情報は Windows レジストリの同じキーセット内に格納されます。Java Plug-in と Java Web Start では、この情報をレジストリから直接抽出します。

Mozilla: Mozilla では、プロキシ情報をローカルマシンのユーザープロファイルディレクトリ内の設定ファイルに格納します。また、プロキシ情報を特定するための公開 API を利用できます。Java Plug-in では Mozilla の公開 API を使用し、Java Web Start では設定ファイルを読み取って解析し、プロキシ情報を取得します。

Netscape Navigator: Navigator では、プロキシ情報をローカルマシンのユーザープロファイルディレクトリ内の設定ファイルに格納します。Java Plug-in と Java Web Start では、このファイルを読み取って解析し、プロキシ情報を取得します。

Java Plug-in と Java Web Start では、プロキシ情報を起動時に取得します。Java Plug-in または Java Web Start の起動後にプロキシ設定を変更した場合、Java コンソールの p オプションを使用して、プロキシ情報を強制的に再ロードします。Java Web Start はアプリケーションごとに再起動するため、以後の起動時には自動的に新しいプロキシ情報が使用されます。

手動プロキシ構成

Internet Explorer、Mozilla、および Netscape Navigator では手動プロキシ構成がサポートされます。ユーザーは各プロトコルについてプロキシサーバーとポートを指定することができます。また、ユーザーは、1 つのプロキシサーバーおよびすべてのプロトコル用のポートを指定することもできます。イントラネット環境内で 2 つのマシンを接続する場合に、プロキシサーバーの負荷を最小限に抑えるため、プロキシサーバーを完全に無視するサイトがあります。これを行う場合、ネットワーク管理者およびユーザーは、ブラウザのプロキシ設定でプロキシサーバーのバイパスリストを指定します。

Internet Explorer: Java Plug-in と Java Web Start では、このプロトコルに関連付けられたプロキシサーバーおよびポート設定を認識およびサポートします。IE は、プロキシサーバーバイパスリスト内のさまざまな構文をサポートします。次にその構文を示します。

たとえば、プロキシサーバーバイパスリストに "203.0.113.0;*.eng;http://*.com" を指定すると、次の場合、常にブラウザはプロキシをバイパスします。

現在のところ、Java Plug-in と Java Web Start でサポートするのは、IE のプロキシサーバーバイパスリストの最初の 2 つの構文です。さらに、IE では、プロキシサーバーバイパスリストを使用しない、ローカル (イントラネット) アドレス用プロキシサーバーのバイパスもサポートされます。Java Plug-in と Java Web Start では、URL ホスト名がプレーンな (つまり、ホスト名に「.」が含まれない) 場合、プロキシサーバーをバイパスすることにより、このオプションをサポートします。

Mozilla と Netscape Navigator: Java Plug-in と Java Web Start では、このプロトコルに関連付けられたプロキシサーバーおよびポート設定を認識およびサポートします。たとえば、Mozilla のプロキシサーバーパイパスリストに ".eng,.sun.com" を指定すると、URL ホスト名が ".eng" または ".sun.com" で終わる場合、常にプロキシがバイパスされます。Java Plug-in と Java Web Start では、Mozilla と Navigator のプロキシサーバーバイパスリスト内で、この構文をフルサポートします。

使用するブラウザでの手動プロキシ構成の詳細は、ブラウザのユーザーガイドを参照してください。

自動プロキシ構成

自動プロキシ構成はブラウザ内で、拡張子が .pac または .js の JavaScript ファイルを含む特定の URL を設定することでサポートされます。このファイルには、FindProxyForURL という関数が含まれます。この関数には、ブラウザが接続要求を受信するとき、どのプロキシサーバーを使用するかを決定するロジックが含まれます。この関数は、特定のイントラネット環境で、システム管理者により記述されます。ブラウザは、起動時に JavaScript ファイルの URL を認識し、直接接続を使用してローカルマシンにダウンロードします。その後、新規接続を確立する必要がある場合、ブラウザは常に JavaScript ファイル内の FindProxyForURL JavaScript 関数を実行してプロキシ情報を取得し、接続を設定します。

Java Plug-in:

Internet Explorer: 起動時に、Java Plug-in は、直接接続を使用して JavaScript ファイルをローカルマシンにダウンロードします。その後、接続の新規確立が必要になるたびに、FindProxyForURL 関数が実行され、Internet Explorer の JavaScript エンジンを使用してプロキシ情報が取得されます。

Mozilla/Netscape Navigator: 起動時に、Java Plug-in は、直接接続を使用して JavaScript ファイルをローカルマシンにダウンロードします。その後、接続の新規確立が必要になるたびに、FindProxyForURL 関数が実行され、Mozilla や Navigator の JavaScript エンジンを使用してプロキシ情報の取得が行われます。

Java Web Start:

Windows: 起動時に、Java Web Start は、直接接続を使用して JavaScript ファイルをローカルマシンにダウンロードします。その後、接続の新規確立が必要になるたびに、FindProxyForURL 関数が実行され、Internet Explorer の JavaScript エンジンを使用してプロキシ情報が取得されます。

Linux/Solaris: 起動時に、Java Web Start は、直接接続を使用して JavaScript ファイルをローカルマシンにダウンロードします。その後、接続の新規確立が必要になるたびに、FindProxyForURL 関数が解析され、もっとも適切な情報が推測されて、プロキシ情報の取得が行われます。

FindProxyForURL について

JavaScript エンジンについて、すべてのプラットフォームの Java Plug-in と、Windows 上の Java Web Start に対して、次の事項が当てはまります。

  1. JavaScript 関数 FindProxyForURL から呼び出し可能な、JavaScript ヘルパー関数が多数存在します。Java Plug-in と Java Web Start は、これらの関数の独自実装を提供して、自動プロキシ構成を完全にエミュレートします。これらのヘルパー関数の実装については、次の事柄に注意してください。
    • dnsResolve 関数は、ホストが IP アドレスでない場合、常に空の文字列を返す。
    • isResolvable 関数は、ホストが IP アドレスでない場合、常に false を返す。
    • isInNet 関数は、ホストが IP アドレスでない場合、常に false を返す。
  2. FindProxyForURL 関数を実行する場合、プロキシ情報が常に文字列として返されます。Java Plug-in と Java Web Start では、次の方法で設定を抽出します。
    • 文字列に "DIRECT" が含まれる場合、Java Plug-in と Java Web Start は直接接続とみなす。
    • 文字列に "PROXY" が含まれる場合、最初のプロキシ設定を接続に使用する。
    • 文字列に "SOCKS" が含まれる場合、SOCKS バージョン 4 を接続に使用する。
    • それ以外の場合、文字列内のプロキシ情報は不正である。この場合、Java Plug-in と Java Web Start は直接接続とみなす。

使用するブラウザでの自動プロキシ構成の詳細は、ブラウザのユーザーガイドを参照してください。

J2SE 5.0 における java.net.ProxySelector API

指定されたホストのプロキシ構成を特定しなければならないことがあります。プロキシ構成を調べることで、適切なプロキシサーバーを通じてホストに接続するためのコードをより適切に記述することができます。J2SE 5.0 では、プロキシ構成をサポートする新しい API として java.net.ProxySelector があります。次は簡単なコードの例です。

private Proxy findProxy(URI uri)
{

     try
     {
          ProxySelector selector = ProxySelector.getDefault();
          List<Proxy> proxyList = selector.select(uri);

          if (proxyList.size() > 1)
               return proxyList.get(0);
     }
     catch (IllegalArgumentException e)
     {
     }

     return Proxy.NO_PROXY;
}


Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.