Package io.grpc

Class NameResolverProvider


  • @ExperimentalApi("https://github.com/grpc/grpc-java/issues/4159")
    public abstract class NameResolverProvider
    extends NameResolver.Factory
    Provider of name resolvers for name agnostic consumption.

    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().

    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      java.util.Collection<java.lang.Class<? extends java.net.SocketAddress>> getProducedSocketAddressTypes()
      Returns the SocketAddress types this provider's name-resolver is capable of producing.
      protected java.lang.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.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • NameResolverProvider

        public NameResolverProvider()
    • Method Detail

      • isAvailable

        protected abstract boolean isAvailable()
        Whether this provider is available for use, taking the current environment into consideration. If false, no other methods are safe to be called.
        Since:
        1.0.0
      • priority

        protected abstract int priority()
        A priority, from 0 to 10 that this provider should be used, taking the current environment into consideration. 5 should be considered the default, and then tweaked based on environment detection. A priority of 0 does not imply that the provider wouldn't work; just that it should be last in line.
        Since:
        1.0.0
      • getScheme

        protected java.lang.String getScheme()
        Returns the scheme associated with the provider. The provider normally should only create a 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.

        The scheme should be lower-case.

        Since:
        1.40.0
      • getProducedSocketAddressTypes

        public java.util.Collection<java.lang.Class<? extends java.net.SocketAddress>> getProducedSocketAddressTypes()
        Returns the SocketAddress types this provider's name-resolver is capable of producing. This enables selection of the appropriate ManagedChannelProvider for a channel.
        Returns:
        the SocketAddress types this provider's name-resolver is capable of producing.