Class JndiDnsResolver

  • All Implemented Interfaces:
    DnsResolver

    public class JndiDnsResolver
    extends java.lang.Object
    implements DnsResolver
    Implementation of DnsResolver which uses JNDI for the DNS queries. Uses an InitialContextFactory to get the JNDI DirContext. The default implementation will just create a new Context with the context factory com.sun.jndi.dns.DnsContextFactory
    Since:
    3.0
    See Also:
    DnsResolver, InitialContextFactory
    • Constructor Summary

      Constructors 
      Constructor Description
      JndiDnsResolver()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.String resolveIpAddress​(java.lang.String hostname)
      Resolves the IP Address (A record) to the specified host name.
      java.lang.String resolveServiceEntry​(java.lang.String serviceType, java.lang.String domain)
      Resolves the host name for the specified service in the specified domain
      java.lang.String resolveServiceIpAddress​(java.lang.String serviceType, java.lang.String domain)
      Resolves the host name for the specified service and then the IP Address for this host in one call.
      java.lang.String resolveServiceIpAddressAndPort​(java.lang.String serviceType, java.lang.String domain)
      Resolves the host name for the specified service and then the IP Address and port for this host in one call.
      void setCtxFactory​(InitialContextFactory ctxFactory)
      Allows to inject an own JNDI context factory.
      • Methods inherited from class java.lang.Object

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

      • JndiDnsResolver

        public JndiDnsResolver()
    • Method Detail

      • setCtxFactory

        public void setCtxFactory​(InitialContextFactory ctxFactory)
        Allows to inject an own JNDI context factory.
        Parameters:
        ctxFactory - factory to use, when a DirContext is needed
        See Also:
        InitialDirContext, DirContext
      • resolveIpAddress

        public java.lang.String resolveIpAddress​(java.lang.String hostname)
        Description copied from interface: DnsResolver
        Resolves the IP Address (A record) to the specified host name. Throws DnsEntryNotFoundException if there is no record.
        Specified by:
        resolveIpAddress in interface DnsResolver
        Parameters:
        hostname - The hostname for which you need the IP Address
        Returns:
        IP Address as a String
      • resolveServiceEntry

        public java.lang.String resolveServiceEntry​(java.lang.String serviceType,
                                                    java.lang.String domain)
        Description copied from interface: DnsResolver

        Resolves the host name for the specified service in the specified domain

        For example, if you need the host name for an LDAP server running in the domain springsource.com, you would call resolveServiceEntry("ldap", "springsource.com").

        The DNS server needs to provide the service records for this, in the example above, it would look like this:

         _ldap._tcp.springsource.com IN SRV 10 0 88 ldap.springsource.com.
         
        The method will return the record with highest priority (which means the lowest number in the DNS record) and if there are more than one records with the same priority, it will return the one with the highest weight. You will find more informatione about DNS service records at Wikipedia.
        Specified by:
        resolveServiceEntry in interface DnsResolver
        Parameters:
        serviceType - The service type you are searching for, e.g. ldap, kerberos, ...
        domain - The domain, in which you are searching for the service
        Returns:
        The hostname of the service
      • resolveServiceIpAddressAndPort

        public java.lang.String resolveServiceIpAddressAndPort​(java.lang.String serviceType,
                                                               java.lang.String domain)
        Resolves the host name for the specified service and then the IP Address and port for this host in one call.
        Parameters:
        serviceType - The service type you are searching for, e.g. ldap, kerberos, ...
        domain - The domain, in which you are searching for the service
        Returns:
        IP address and port of the service, formatted [ip_address]:[port]
        Throws:
        DnsEntryNotFoundException - No record found
        DnsLookupException - Unknown DNS error
        Since:
        5.6
        See Also:
        resolveServiceEntry(String, String), resolveServiceIpAddress(String, String)