Class JndiDnsResolver
- java.lang.Object
-
- org.springframework.security.remoting.dns.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 domainjava.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.void
setCtxFactory(InitialContextFactory ctxFactory)
Allows to inject an own JNDI context factory.
-
-
-
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 interfaceDnsResolver
- 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 interfaceDnsResolver
- 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
-
resolveServiceIpAddress
public java.lang.String resolveServiceIpAddress(java.lang.String serviceType, java.lang.String domain)
Description copied from interface:DnsResolver
Resolves the host name for the specified service and then the IP Address for this host in one call.- Specified by:
resolveServiceIpAddress
in interfaceDnsResolver
- 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 of the service
- See Also:
DnsResolver.resolveServiceEntry(String, String)
,DnsResolver.resolveIpAddress(String)
-
-