A suggestion, if I may ... Consider using the term “resolver” instead of “name service,” especially in the names of the SPI classes and interfaces.
That would avoid confusing the service of looking up names and addresses with the service of providing a service to look up names and addresses. That is, the service you’re defining is a provider of name services, i.e., a name service service. This can lead to many annoying questions. Is an instance of the SPI class `InetNameService` a name service, or a name service service provider? Why isn’t the SPI class `InetNameServiceProvider` named `InetNameServiceServiceProvider`? Using “resolver” would let you talk more simply about a “resolver service,” and have clear and concise class and interface names (e.g., `InetResolverProvider` and `InetResolver`). - Mark