Java

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

ドキュメントの目次

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 (デフォルト: -1)
java.security で指定して、ネームサービスからの名前の検索に成功した場合のキャッシングポリシーを示します。指定する値は、成功した検索結果をキャッシュする秒数を示す整数です。

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


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

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


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

ftp.proxyHost (デフォルト: <なし>)
ftp.proxyPort (デフォルト: 80 (ftp.proxyHost が指定された場合))
ftp.nonProxyHosts (デフォルト: <なし>)

http.proxyHost と http.proxyPort は、HTTP プロトコルハンドラが使用するプロキシサーバとポートを示します。

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

ftp.proxyHost と ftp.proxyPort は、FTP プロトコルハンドラが使用するプロキシサーバとポートを示します。 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:
NTLM 認証は、ライセンス上の制約から、Windows プラットフォームだけでサポートされています。ほかの 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 サーバのどちらも使用可能で、認証されない接続も可能である必要があります


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 は、リソースへの接続が確立されているときの、入力ストリームから読み取る際のタイムアウト (ミリ秒) を指定します。


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

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


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.sun.com) を指定します。sun.net.spi.nameservice.domain プロパティが定義されていない場合、プロバイダでは、プラットフォームの DNS 設定で構成済みのドメインまたはドメイン検索リストを使用します。


Copyright © 2002 Sun Microsystems, Inc. All Rights Reserved.

 Sun Microsystems, Inc