@ThreadSafety(level=COMPLETELY_THREADSAFE) public final class CachingNameResolver extends NameResolver
NameResolver
that will
cache lookups to potentially improve performance and provide a degree of
resiliency against name service outages.Constructor and Description |
---|
CachingNameResolver()
Creates a new instance of this caching name resolver that will use a
default timeout.
|
CachingNameResolver(int timeoutMillis)
Creates a new instance of this caching name resolver that will use the
specified timeout.
|
Modifier and Type | Method and Description |
---|---|
void |
clearCache()
Clears all information from the name resolver cache.
|
java.net.InetAddress[] |
getAllByName(java.lang.String host)
Retrieves an array of
InetAddress objects that encapsulate all
known IP addresses associated with the provided host name. |
java.net.InetAddress[] |
getAllByNameInternal(java.lang.String host)
Retrieves an array of
InetAddress objects that encapsulate all
known IP addresses associated with the provided host name. |
java.net.InetAddress |
getByName(java.lang.String host)
Retrieves an
InetAddress that encapsulates an IP address associated
with the provided host name. |
java.lang.String |
getCanonicalHostName(java.net.InetAddress inetAddress)
Retrieves the canonical host name for the provided
InetAddress
object. |
java.lang.String |
getHostName(java.net.InetAddress inetAddress)
Retrieves the host name for the provided
InetAddress object. |
java.net.InetAddress |
getLocalHost()
Retrieves the address of the local host.
|
java.net.InetAddress |
getLoopbackAddress()
Retrieves the loopback address for the system.
|
int |
getTimeoutMillis()
Retrieves the length of time, in milliseconds, that cache records should
be considered valid.
|
void |
toString(java.lang.StringBuilder buffer)
Appends a string representation of this name resolver to the provided
buffer.
|
setJVMSuccessfulLookupCacheTTLSeconds, setJVMUnsuccessfulLookupCacheTTLSeconds, toString
public CachingNameResolver()
public CachingNameResolver(int timeoutMillis)
timeoutMillis
- The length of time, in milliseconds, that cache
records should be considered valid. It must be
greater than zero. If a record has been in the
cache for less than this period of time, then the
cached record will be used instead of making a name
service call. If a record has been in the cache
for longer than this period of time, then the
cached record will only be used if it is not
possible to get an updated version of the record
from the name service.public int getTimeoutMillis()
@NotNull public java.net.InetAddress getByName(@Nullable java.lang.String host) throws java.net.UnknownHostException, java.lang.SecurityException
InetAddress
that encapsulates an IP address associated
with the provided host name.getByName
in class NameResolver
host
- The host name for which to retrieve a corresponding
InetAddress
object. It can be a resolvable name or
a textual representation of an IP address. If the provided
name is the textual representation of an IPv6 address, then
it can use either the form described in RFC 2373 or RFC 2732,
or it can be an IPv6 scoped address. If it is null
,
then the returned address should represent an address of the
loopback interface.InetAddress
that encapsulates an IP address associated
with the provided host name.java.net.UnknownHostException
- If the provided name cannot be resolved to
its corresponding IP addresses.java.lang.SecurityException
- If a security manager prevents the name
resolution attempt.@NotNull public java.net.InetAddress[] getAllByName(@Nullable java.lang.String host) throws java.net.UnknownHostException, java.lang.SecurityException
InetAddress
objects that encapsulate all
known IP addresses associated with the provided host name.getAllByName
in class NameResolver
host
- The host name for which to retrieve the corresponding
InetAddress
objects. It can be a resolvable name or
a textual representation of an IP address. If the provided
name is the textual representation of an IPv6 address, then
it can use either the form described in RFC 2373 or RFC 2732,
or it can be an IPv6 scoped address. If it is null
,
then the returned address should represent an address of the
loopback interface.InetAddress
objects that encapsulate all known
IP addresses associated with the provided host name.java.net.UnknownHostException
- If the provided name cannot be resolved to
its corresponding IP addresses.java.lang.SecurityException
- If a security manager prevents the name
resolution attempt.@NotNull public java.net.InetAddress[] getAllByNameInternal(@Nullable java.lang.String host) throws java.net.UnknownHostException, java.lang.SecurityException
InetAddress
objects that encapsulate all
known IP addresses associated with the provided host name.host
- The host name for which to retrieve the corresponding
InetAddress
objects. It can be a resolvable name or
a textual representation of an IP address. If the provided
name is the textual representation of an IPv6 address, then
it can use either the form described in RFC 2373 or RFC 2732,
or it can be an IPv6 scoped address. If it is null
,
then the returned address should represent an address of the
loopback interface.InetAddress
objects that encapsulate all known
IP addresses associated with the provided host name.java.net.UnknownHostException
- If the provided name cannot be resolved to
its corresponding IP addresses.java.lang.SecurityException
- If a security manager prevents the name
resolution attempt.@NotNull public java.lang.String getHostName(@NotNull java.net.InetAddress inetAddress)
InetAddress
object.getHostName
in class NameResolver
inetAddress
- The address for which to retrieve the host name. It
must not be null
.InetAddress
object, or a
textual representation of the IP address if the name cannot be
determined.@NotNull public java.lang.String getCanonicalHostName(@NotNull java.net.InetAddress inetAddress)
InetAddress
object.getCanonicalHostName
in class NameResolver
inetAddress
- The address for which to retrieve the canonical host
name. It must not be null
.InetAddress
object, or a textual representation of the IP address if the name
cannot be determined.@NotNull public java.net.InetAddress getLocalHost() throws java.net.UnknownHostException, java.lang.SecurityException
InetAddress
.getLocalHost
in class NameResolver
java.net.UnknownHostException
- If the local host name cannot be resolved.java.lang.SecurityException
- If a security manager prevents the name
resolution attempt.@NotNull public java.net.InetAddress getLoopbackAddress()
getLoopbackAddress
in class NameResolver
public void clearCache()
public void toString(@NotNull java.lang.StringBuilder buffer)
toString
in class NameResolver
buffer
- A buffer to which the string representation should be
appended.