@ExperimentalApi(value="https://github.com/grpc/grpc-java/issues/4159") public abstract class NameResolverProvider extends NameResolver.Factory
Implementations can be automatically discovered by gRPC via Java's SPI mechanism. For
automatic discovery, the implementation must have a zero-argument constructor and include
a resource named META-INF/services/io.grpc.NameResolverProvider
in their JAR. The
file's contents should be the implementation's class name. Implementations that need arguments in
their constructor can be manually registered by NameResolverRegistry.register(io.grpc.NameResolverProvider)
.
Implementations should not throw. If they do, it may interrupt class loading. If
exceptions may reasonably occur for implementation-specific reasons, implementations should
generally handle the exception gracefully and return false
from isAvailable()
.
Constructor and Description |
---|
NameResolverProvider() |
Modifier and Type | Method and Description |
---|---|
protected Collection<Class<? extends SocketAddress>> |
getProducedSocketAddressTypes()
Returns the
SocketAddress types this provider's name-resolver is capable of producing. |
protected String |
getScheme()
Returns the scheme associated with the provider.
|
protected abstract boolean |
isAvailable()
Whether this provider is available for use, taking the current environment into consideration.
|
protected abstract int |
priority()
A priority, from 0 to 10 that this provider should be used, taking the current environment into
consideration.
|
getDefaultScheme, newNameResolver
protected abstract boolean isAvailable()
false
, no other methods are safe to be called.protected abstract int priority()
protected String getScheme()
NameResolver
when target URI scheme matches the provider scheme. It temporarily
delegates to NameResolver.Factory.getDefaultScheme()
before NameResolver.Factory
is
deprecated in https://github.com/grpc/grpc-java/issues/7133.protected Collection<Class<? extends SocketAddress>> getProducedSocketAddressTypes()
SocketAddress
types this provider's name-resolver is capable of producing.
This enables selection of the appropriate ManagedChannelProvider
for a channel.SocketAddress
types this provider's name-resolver is capable of producing.