モジュール java.base
パッケージ java.net.spi

クラスInetAddressResolverProvider

java.lang.Object
java.net.spi.InetAddressResolverProvider

public abstract class InetAddressResolverProvider extends Object
「InetAddressリゾルバ」のサービス・プロバイダ・クラス。

リゾルバ・プロバイダは、「InetAddressリゾルバ」のカスタム実装のファクトリです。 リゾルバは、(解決)ホスト名およびIPアドレスを参照するための操作を定義します。

リゾルバ・プロバイダは、ゼロ引数コンストラクタを持つこのクラスの具体的なサブクラスで、次に示す抽象メソッドを実装します。

Java仮想マシンの特定の起動では、InetAddressで使用される単一のシステム全体のリゾルバ・インスタンスが保持されます。 これは、VMが完全に初期化された後に設定され、InetAddressクラスでメソッドを呼び出すと最初のルックアップ操作がトリガーされます。

リゾルバ・プロバイダは、次のようにInetAddressによって配置およびロードされ、システム全体のリゾルバを作成します:

  1. ServiceLoaderメカニズムは、システム・クラス・ローダーを使用してInetAddressResolverProviderを特定するために使用されます。 プロバイダが配置される順序は、「実装固有」です。 検出された最初のプロバイダは、get(InetAddressResolverProvider.Configuration)メソッドを起動してInetAddressResolverをインスタンス化するために使用されます。 返されるInetAddressResolverは、システム全体のリゾルバとして設定されます。
  2. 前のステップでリゾルバ・プロバイダの検索に失敗した場合、「組込みリゾルバ」はシステム全体のリゾルバとして設定されます。

ステップ1で検出されたプロバイダからカスタム・リゾルバをインスタンス化すると、エラーまたは例外がスローされた場合、システム全体のリゾルバは設定されず、エラーまたは例外はルックアップ操作をトリガーしたメソッドのコール元に伝播されます。 それ以外の場合は、「システム全体のリゾルバ」を使用してルックアップ操作が実行されます。

実装上のノート:
InetAddressは、VMが完全にブートされる前に発生する可能性があるルックアップ操作に対して「組み込みリゾルバ」を使用します。
導入されたバージョン:
18
  • コンストラクタの詳細

    • InetAddressResolverProvider

      protected InetAddressResolverProvider()
      InetAddressResolverProviderの新しいインスタンスを作成します。
      実装上のノート:
      サービス・プロバイダのインスタンス化中にデッドロックまたはクラスのロード・サイクルのリスクを回避するために、InetAddressResolverProviderサービス実装の初期化を可能なかぎり単純にすることをお薦めします。
      例外:
      SecurityException - セキュリティ・マネージャが存在し、そのcheckPermissionメソッドがRuntimePermission("inetAddressResolverProvider")を許可しない場合。
  • メソッドの詳細

    • get

      このプロバイダが提供するInetAddressResolverを初期化して返します。 このメソッドは、システム全体のリゾルバ実装を「インストール中」するときにInetAddressによってコールされます。

      このメソッドによってスローされたエラーまたは例外は、InetAddressResolverインスタンス化の失敗とみなされ、ルックアップ操作をトリガーしたメソッドの呼出し元に伝播されます。

      パラメータ:
      configuration - プラットフォームの組込みアドレス解決構成を含むInetAddressResolverProvider.Configurationインスタンス。
      戻り値:
      このプロバイダが提供するリゾルバ
    • name

      public abstract String name()
      このプロバイダの名前を返します。名前がない場合はnullを返します。
      戻り値:
      このプロバイダの名前、名前のない場合はnull