LdapDnsProvider (Java SE 26 & JDK 26)
Description: declaration: module: java.naming, package: javax.naming.ldap.spi, class: LdapDnsProvider
Keywords: javax.naming.ldap.spi.LdapDnsProvider class

# Class LdapDnsProvider

java.lang.Object
javax.naming.ldap.spi.LdapDnsProvider

public abstract class LdapDnsProvider extends Object
Service-provider class for DNS lookups when performing LDAP operations.

An LDAP DNS provider is a concrete subclass of this class that has a zero-argument constructor. LDAP DNS providers are located using the ServiceLoader facility, as specified by InitialDirectContext. The `ServiceLoader` is used to create and register implementations of `LdapDnsProvider`.

An LDAP DNS provider can be used in environments where the default DNS resolution mechanism is not sufficient to accurately pinpoint the correct LDAP servers needed to perform LDAP operations. For example, in an environment containing a mix of `ldap` and `ldaps` servers you may want the LdapContext to query `ldaps` servers only.

Since:
  12

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `LdapDnsProvider()`
  Creates a new instance of `LdapDnsProvider`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `abstract Optional<LdapDnsProviderResult>`
  `lookupEndpoints(String url, Map<?,?> env)`
  Lookup the endpoints and domain name for the given `Context` `provider URL` and environment.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `int`
  `hashCode()`
  Returns a hash code value for this object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `String`
  `toString()`
  Returns a string representation of the object.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

- ## Constructor Details

  - ### LdapDnsProvider

    protected LdapDnsProvider()
    Creates a new instance of `LdapDnsProvider`.

- ## Method Details

  - ### lookupEndpoints

    public abstract Optional<LdapDnsProviderResult> lookupEndpoints(String url, Map<?,?> env) throws NamingException
    Lookup the endpoints and domain name for the given `Context` `provider URL` and environment. The resolved endpoints and domain name are returned as an `LdapDnsProviderResult`.

    An endpoint is a `String` representation of an LDAP URL which points to an LDAP server to be used for LDAP operations. The syntax of an LDAP URL is defined by RFC 2255: The LDAP URL Format.

    Parameters:
      `url` - The `Context` `provider URL`
      `env` - The `Context` environment.
    Returns:
      an `LdapDnsProviderResult` or empty `Optional` if the lookup fails.
    Throws:
      `NamingException` - if the `url` is not valid or an error occurred while performing the lookup.
      `NullPointerException` - if either `url` or `env` are `null`.