Класс InetAddressResolverProvider
public abstract class InetAddressResolverProvider extends Object
Провайдер разрешителя — фабрика для пользовательских реализаций разрешителей адресов InetAddress. Разрешитель определяет операции по поиску (разрешению) имён хостов и IP-адресов.
Провайдер разрешителя — конкретный подкласс этого класса, имеющий конструктор без аргументов и реализующий абстрактные методы, указанные ниже.
В данной инстанциации виртуальной машины Java поддерживается единственный системный экземпляр разрешителя, используемый классом InetAddress. Он устанавливается после полной инициализации виртуальной машины и при вызове метода в классе InetAddress, который инициирует первую операцию поиска.
Провайдер разрешителя находится и загружается классом InetAddress, чтобы создать системный разрешитель следующим образом:
- Используется механизм
ServiceLoader, чтобы найтиInetAddressResolverProviderс помощью системного загрузчика классов. Порядок, в котором провайдеры обнаруживаются, является специфичным для реализации. Первый найденный провайдер будет использован для созданияInetAddressResolver, вызывая методget(InetAddressResolverProvider.Configuration). ВозвращённыйInetAddressResolverбудет установлен как системный разрешитель. - Если на предыдущем шаге не удалось найти провайдера разрешителя, системным разрешителем будет установлен встроенный разрешитель.
Если создание пользовательского разрешителя из провайдера, обнаруженного на шаге 1, вызовет ошибку или исключение, системный разрешитель не будет установлен, и ошибка или исключение будут переданы вызывающему методу, который инициировал операцию поиска. В противном случае любая операция поиска будет выполняться с использованием системного разрешителя.
- Замечание по реализации:
-
InetAddressбудет использовать встроенный разрешитель для любых операций поиска, которые могут произойти до полной загрузки виртуальной машины. - С тех пор:
- 18
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static interface |
InetAddressResolverProvider.Configuration |
Объект Configuration предоставляется методу get(Configuration) при установке системного разрешителя. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создаёт новый экземпляр InetAddressResolverProvider. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract InetAddressResolver |
get |
Инициализирует и возвращает InetAddressResolver, предоставляемый этим провайдером. |
abstract String |
name() |
Возвращает имя этого провайдера или null, если имя не задано. |
Подробное описание конструкторов
InetAddressResolverProvider
protected InetAddressResolverProvider()
InetAddressResolverProvider.- Замечание по реализации:
- Рекомендуется, чтобы инициализация реализации службы
InetAddressResolverProviderбыла максимально простой, чтобы избежать возможных рисков тупика или циклов загрузки классов во время создания провайдера службы. - Исключения:
-
SecurityException- если присутствует менеджер безопасности, и его методcheckPermissionне разрешаетRuntimePermission("inetAddressResolverProvider").
Подробное описание методов
get
public abstract InetAddressResolver get(InetAddressResolverProvider.Configuration configuration)
InetAddressResolver, предоставляемый этим провайдером. Этот метод вызывается классом InetAddress при установке реализации системного разрешителя. Любая ошибка или исключение, выброшенные этим методом, рассматривается как сбой инициализации InetAddressResolver и будет передана вызывающему методу, который инициировал операцию поиска.
- Параметры:
-
configuration- экземплярInetAddressResolverProvider.Configuration, содержащий конфигурацию платформенного встроенного разрешения адресов. - Возвращает:
- разрешитель, предоставляемый этим провайдером
name
public abstract String name()
null, если имя не задано.- Возвращает:
- имя этого провайдера или
null, если имя не задано
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/net/spi/InetAddressResolverProvider.html