java.lang.Object
java.net.spi.InetAddressResolverProvider
InetAddress解析器的服务提供程序类。
解析器提供程序是InetAddress解析器的自定义实现的工厂。解析器定义了查找(解析)主机名和IP地址的操作。
解析器提供程序是这个类的具体子类,具有零参数构造函数,并实现下面指定的抽象方法。
Java虚拟机的每次调用维护一个单一的系统范围解析器实例,该实例由InetAddress使用。它在VM完全初始化后设置,并且当InetAddress
类中的方法调用引发第一次查找操作时使用。
解析器提供程序通过以下方式被InetAddress
定位和加载以创建系统范围解析器:
- 使用
ServiceLoader
机制使用系统类加载器定位InetAddressResolverProvider
。定位提供程序的顺序是特定于实现的。找到的第一个提供程序将用于通过调用get(InetAddressResolverProvider.Configuration)
方法实例化InetAddressResolver
。返回的InetAddressResolver
将被设置为系统范围解析器。 - 如果前一步未找到任何解析器提供程序,则将内置解析器设置为系统范围解析器。
如果从步骤1中发现的提供程序实例化自定义解析器时抛出错误或异常,则不会设置系统范围解析器,并且错误或异常将传播到触发查找操作的方法的调用者。否则,任何查找操作将使用系统范围解析器。
- 实现注意事项:
-
InetAddress
将在VM完全启动之前发生的任何查找操作使用内置解析器。 - 自Java版本:
- 18
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interface
在设置系统范围解析器时,get(Configuration)
方法会提供一个Configuration
对象。 -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
创建一个新的InetAddressResolverProvider
实例。 -
Method Summary
Modifier and TypeMethodDescriptionabstract InetAddressResolver
get
(InetAddressResolverProvider.Configuration configuration) 初始化并返回此提供程序提供的InetAddressResolver
。abstract String
name()
返回此提供程序的名称,如果未命名则返回null
。
-
Constructor Details
-
InetAddressResolverProvider
protected InetAddressResolverProvider()创建一个新的InetAddressResolverProvider
实例。- 实现注意事项:
- 建议InetAddressResolverProvider服务实现初始化尽可能简单,以避免在实例化服务提供程序期间发生死锁或类加载循环的可能风险。
- 抛出:
-
SecurityException
- 如果存在安全管理器并且其checkPermission
方法不允许RuntimePermission("inetAddressResolverProvider")
。
-
-
Method Details
-
get
初始化并返回此提供程序提供的InetAddressResolver
。此方法由InetAddress
在安装系统范围解析器实现时调用。此方法抛出的任何错误或异常都被视为
InetAddressResolver
实例化失败,并将传播到触发查找操作的方法的调用者。- 参数:
-
configuration
- 包含平台内置地址解析配置的InetAddressResolverProvider.Configuration
实例。 - 返回:
- 此提供程序提供的解析器
-
name
返回此提供程序的名称,如果未命名则返回null
。- 返回:
-
此提供程序的名称,如果未命名则返回
null
-