ネットワークのプロパティー


Java のプロパティー

java.net.preferIPv4Stack (デフォルト: false)
IPv6 を利用可能なオペレーティングシステムでは、ベースとなるネイティブソケットは IPv6 ソケットです。このため、Java(TM) アプリケーションは、IPv4 ホストと IPv6 ホストの両方に接続したり、その両方のホストからの接続を受け入れたりできます。

IPv4 ソケットだけを使用するよう設定されているアプリケーションでは、このプロパティーを true に設定できます。つまり、そのアプリケーションは IPv6 ホストと通信できないということです。


java.net.preferIPv6Addresses (デフォルト: false)
IPv6 を利用可能なオペレーティングシステムでは、デフォルトの設定として、IPv4 マップのアドレスを IPv6 アドレスよりも優先するようになっています。これは、下位互換性の理由によります。たとえば、IPv4 だけのサービスへのアクセスに依存するアプリケーションや、%d.%d.%d.%d の形式で表現された IP アドレスに依存するアプリケーションとの互換性のためです。IPv6 アドレスを IPv4 アドレスよりも優先する設定への変更を試してみるには、このプロパティーを true に設定します。そうすれば、アプリケーションが IPv6 サービスに接続されると予想される環境でアプリケーションをテストし、そのような環境にアプリケーションを配置することができます。

networkaddress.cache.ttl
java.security で指定して、ネームサービスからの名前の検索に成功した場合のキャッシングポリシーを示します。指定する値は、成功した検索結果をキャッシュする秒数を示す整数です。

-1 の値は、「ずっとキャッシュする」という意味です。デフォルトでは、セキュリティーマネージャーがインストールされている場合はずっとキャッシュし、セキュリティーマネージャーがインストールされていない場合は実装固有の期間キャッシュします。


networkaddress.cache.negative.ttl (デフォルト: 10)
java.security で指定して、ネームサービスからの名前の検索に失敗した場合のキャッシングポリシーを示します。指定する値は、失敗した検索結果をキャッシュする秒数を示す整数です。

0 の値は、「キャッシュしない」という意味です。-1 の値は、「ずっとキャッシュする」という意味です。


http.proxyHost (デフォルト:<なし>)
http.proxyPort (デフォルト: http.proxyHost が指定されている場合は 80)
http.nonProxyHosts (デフォルト: <なし>)

ftp.proxyHost (デフォルト: <なし>)
ftp.proxyPort (デフォルト: ftp.proxyHost が指定されている場合は 80)
ftp.nonProxyHosts (デフォルト: <なし>)
http.proxyHost と http.proxyPort は、HTTP プロトコルハンドラが使用するプロキシサーバーとポートを示します。

http.nonProxyHosts は、プロキシサーバー経由ではなく、直接接続すべきホストを示します。ホストのリストを指定することもできます。その場合は、それぞれのホストを「|」で区切ります。また、ワイルドカード文字 (*) によるマッチングも指定できます。たとえば、-Dhttp.nonProxyHosts="*.example.com|localhost" です。

ftp.proxyHost と ftp.proxyPort は、HTTP プロトコルハンドラが使用するプロキシサーバーとポートを示します。ftp.nonProxyHosts は、http.nonProxyHosts と同様、プロキシサーバー経由ではなく、直接接続すべきホストを示します。


http.agent (デフォルト: Java1.4.0)
HTTP 要求に入れて送信される User-Agent 要求ヘッダーを示します。

http.auth.digest.validateServer (デフォルト: false)
http.auth.digest.validateProxy (デフォルト: false)
http.auth.digest.cnonceRepeat (デフォルト: 5)
これらのシステムプロパティーは、HTTP ダイジェスト認証メカニズムの動作を変更します。ダイジェスト認証は、サーバーがユーザーパスワードを認識していることをクライアントに証明することによって、サーバー自体をクライアントに認証させるための限定された機能をサーバーに提供します。しかし、すべてのサーバーがこの機能をサポートするわけではありません。また、デフォルトではこのチェックはオフに設定されています。上記の最初の 2 つのプロパティーを true に設定して、オリジンサーバーまたはプロキシサーバーを使用した認証で、このチェック機能を使用することができます。

通常は、3 つ目のプロパティー (http.auth.digest.cnonceRepeat) を設定する必要はありません。このプロパティーは、cnonce 値を再使用する回数を決定します。このプロパティーは、MD5-sess アルゴリズムを使用する場合に役に立ちます。この値を増やすと、各 HTTP 要求のためにハッシュしなければならない情報の量が減るので、クライアントとサーバーの両方で計算のオーバーヘッドが減少します。


http.auth.ntlm.domain:
ほかの HTTP 認証スキームと同様に、NTLM では java.net.Authenticator クラスを使用して、ユーザー名とパスワードを必要時に入手します。しかし、NTLM の場合は NT ドメイン名も必要です。ドメインを指定するには、次の 3 つのオプションがあります。
  1. ドメインを指定しない。環境によっては、ドメインを実際に必要とせず、アプリケーションで指定する必要がない。
  2. ユーザー名の前にドメイン名 + バックスラッシュ「\」を付けることで、ドメイン名をユーザー名内にエンコードする。この方法では、ユーザーがこの表記方法を使用しなければならないということを意識すれば、Authenticator クラスを使用する既存のアプリケーションを変更する必要がない。
  3. ドメイン名を方法 2) で指定せず、システムプロパティー「http.auth.ntlm.domain」が定義されている場合、このプロパティーの値がドメイン名として使用される。

http.keepAlive (デフォルト: true)
キープアライブ (持続) 接続をサポートすべきかどうかを示します。持続接続を使用すると、複数の HTTP 要求に対して再利用されるベースとなるのソケット接続を許可することによって、パフォーマンスが改善されます。

デフォルトは true で、HTTP 1.1 サーバーで持続接続が使用されます。持続接続の使用を無効にするには、「false」を設定します。


http.maxConnections (デフォルト: 5)
HTTP キープアライブが有効な場合、この値は、宛先ごとに同時にキープアライブされるアイドル接続の数になります。

SOCKS プロトコルサポートの設定

SOCKS ユーザー名およびパスワードは次の方法で取得します。まず、アプリケーションが java.net.Authenticator のデフォルトインスタンスを登録している場合、文字列「SOCKS5」に設定されたプロトコルと、文字列「SOCKS authentication」に設定されたプロンプトで、デフォルトインスタンスがクエリーされます。オーセンティケータがユーザー名/パスワードを返さない場合や、オーセンティケータが登録されていない場合は、システムによってユーザー設定「java.net.socks.username」と「java.net.socks.password」が確認されます。これらの設定が存在しない場合は、システムプロパティー「user.name」でユーザー名が確認されます。この場合、パスワードは指定されません。
socksProxyHost

socksProxyPort (デフォルト: 1080)
SOCKS プロトコル層で使用される SOCKS プロキシサーバーの名前とポート番号を示します。socksProxyHost を指定した場合、すべての TCP ソケットは、接続を確立したり受け入れたりする際に SOCKS プロキシサーバーを使用します。SOCKS プロキシサーバーとしては SOCKS v4 または v5 サーバーのどちらも使用可能で、認証されない接続も可能である必要があります。
socksProxyVersion (デフォルト: 5)
サーバーでサポートされている SOCKS プロトコルのバージョン。デフォルトは SOCKS V5 を示す 5 ですが、SOCKS V4 を表す 4 も指定できます。これら以外の値にプロパティーを設定すると、未指定の動作が発生します。

Sun の実装に固有のプロパティー

ここに列挙するプロパティーは、将来のリリースでサポートされなくなる可能性があります。
sun.net.inetaddr.ttl
これは、Sun に固有のシステムプロパティーで、networkaddress.cache.ttl に対応します。プロパティーの値と意味は同じですが、コマンド行オプションとして設定できる点が異なります。ただし、望ましいのは、前述の説明にあるセキュリティープロパティーを使用する方法です。

sun.net.inetaddr.negative.ttl
これは、Sun に固有のシステムプロパティーで、networkaddress.cache.negative.ttl に対応します。プロパティーの値と意味は同じですが、コマンド行オプションとして設定できる点が異なります。ただし、望ましいのは、前述の説明にあるセキュリティープロパティーを使用する方法です。

sun.net.client.defaultConnectTimeout (デフォルト: -1)
sun.net.client.defaultReadTimeout (デフォルト: -1)
これらのプロパティーでは、java.net.URLConnection で使用されるプロトコルハンドラに対して、デフォルトの接続および読み取りタイムアウト (応答) を指定します。

sun.net.client.defaultConnectTimeout は、ホストへの接続を確立する際のタイムアウト (ミリ秒) を指定します。たとえば、HTTP 接続の場合は、HTTP サーバーへの接続を確立する際のタイムアウトのことです。FTP 接続の場合は、FTP サーバーへの接続を確立する際のタイムアウトのことです。

sun.net.client.defaultReadTimeout は、リソースへの接続が確立されているときの、入力ストリームから読み取る際のタイムアウト (ミリ秒) を指定します。


sun.net.http.retryPost (デフォルト: true)
成功しなかった HTTP POST 要求がサーバーに自動的に再送信されるかどうかを決定します。この場合、「成功しなかった」とは、サーバーが有効な HTTP 要求または発生した IOException を送信しなかったことを意味します。

JNDI DNS サービスプロバイダの設定

ここに列挙するプロパティーは、将来のリリースでサポートされなくなる可能性があります。
sun.net.spi.nameservice.provider.<n>=<default|dns,sun|...>
使用できるネームサービスプロバイダを指定します。デフォルトでは、Java は、システムに構成された名前検索メカニズムを使用します (file、nis など)。このオプションを設定すると、独自のものを指定できます。<n> には、正の数値を指定します。この数値は優先順位を示しており、小さい値ほど優先順位が高くなります。デフォルトのプロバイダとは別に、JDK には「dns,sun」という名前の DNS プロバイダが含まれています。

JDK 7 より前は、正常にロードされた最初のプロバイダが使用されていました。JDK 7 では、プロバイダは連鎖しています。これは、プロバイダでの検索が失敗した場合に、リスト内の次のプロバイダが名前を解決するために参照されることを意味します。


sun.net.spi.nameservice.nameservers=<server1_ipaddr,server2_ipaddr ...>
使用する DNS サーバーを指す IP アドレスを、コンマで区切ったリストとして指定できます。sun.net.spi.nameservice.nameservers プロパティーが定義されていない場合、プロバイダでは、プラットフォームの DNS 構成で構成済みのネームサーバーを使用します。

sun.net.spi.nameservice.domain=<domainname>
このプロパティーでは、デフォルトの DNS ドメイン名 (たとえば、eng.example.com) を指定します。sun.net.spi.nameservice.domain property プロパティーが定義されていない場合、プロバイダでは、プラットフォームの DNS 構成で構成済みのドメインまたはドメイン検索リストが使用されます。

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