Skip navigation links

Oracle® Coherence Java API Reference
Release 3.7.0.0

E18683-01


com.tangosol.net
Class ConfigurableAddressProvider

java.lang.Object
  extended by java.util.AbstractCollection
      extended by java.util.AbstractSet
          extended by com.tangosol.net.ConfigurableAddressProvider

All Implemented Interfaces:
AddressProvider, java.lang.Iterable, java.util.Collection, java.util.Set

public class ConfigurableAddressProvider
extends java.util.AbstractSet
implements AddressProvider

ConfigurableAddressProvider is an implementation of the AddressProvider interface based on a static list of addresses configured in an XML element that contains one or more items in the following format:

 <socket-address>
   <address>...</address>
   <port>...</port>
 </socket-address>
 

The order of items in the configured list will be randomized to provide basic load balancing.

This implementation is not thread safe.

Since:
Coherence 3.4
Author:
gg 2008-08-18

Nested Class Summary
protected  class ConfigurableAddressProvider.AddressHolder
          A stateful holder for an obtaining an InetSocketAddress object.

 

Field Summary
protected  boolean m_fSafe
          Specifies if the provider is only to return resolved addresses.
protected  int m_iLast
          Index of the last returned address.
protected  java.util.List m_listHolders
          A list of AddressHolder objects.

 

Constructor Summary
ConfigurableAddressProvider(XmlElement xmlConfig)
          Construct an instance of ConfigurableAddressProvider based on the specified XML element.
ConfigurableAddressProvider(XmlElement xmlConfig, boolean fSafe)
          Construct an instance of ConfigurableAddressProvider based on the specified XML element.

 

Method Summary
 void accept()
          This method should be called by the client immediately after it determines that it can successfully use an address returned by the AddressProvider.getNextAddress() method.
protected  void configure(XmlElement xmlConfig)
          Configure this ConfigurableAddressProvider based on the specified XML.
static AddressProvider createAddressProvider(XmlElement xmlConfig, java.lang.ClassLoader loader)
          Instantiate an AddressProvider configured according to the specified XML.
 boolean equals(java.lang.Object o)
          AddressProvider instances should compare to be equals() iff they should be expected to consistently produce the same resulting set of addresses.
 java.net.InetSocketAddress getNextAddress()
          Obtain a next available address to use.
 int hashCode()
          Return the hash code for this AddressProvider.
 java.util.Iterator iterator()
          Returns an iterator over the elements contained in this collection.
 void reject(java.lang.Throwable eCause)
          This method should be called by the client immediately after it determines that an attempt to use an address returned by the AddressProvider.getNextAddress() method has failed.
protected  void reset()
          Make all addresses iterable, starting at the first address.
protected  void reset(int iLast)
          Make all addresses iterable, starting at the index after the specified one.
 int size()
          Returns the number of elements in this collection.
protected  java.util.List sortHolders(java.util.List list)
          Sort the holders in the order to be returned by the getNextAddress() method.
 java.lang.String toString()
          Return a string representation of this ConfigurableAddressProvider.

 

Methods inherited from class java.util.AbstractSet
removeAll

 

Methods inherited from class java.util.AbstractCollection
add, addAll, clear, contains, containsAll, isEmpty, remove, retainAll, toArray, toArray

 

Methods inherited from interface java.util.Set
add, addAll, clear, contains, containsAll, isEmpty, remove, retainAll, toArray, toArray

 

Field Detail

m_listHolders

protected java.util.List m_listHolders
A list of AddressHolder objects.

m_iLast

protected int m_iLast
Index of the last returned address.

m_fSafe

protected boolean m_fSafe
Specifies if the provider is only to return resolved addresses.

Constructor Detail

ConfigurableAddressProvider

public ConfigurableAddressProvider(XmlElement xmlConfig)
Construct an instance of ConfigurableAddressProvider based on the specified XML element.

Unresolveable addresses will be skipped.

Parameters:
xmlConfig - the XML element that contains the configuration info

ConfigurableAddressProvider

public ConfigurableAddressProvider(XmlElement xmlConfig,
                                   boolean fSafe)
Construct an instance of ConfigurableAddressProvider based on the specified XML element.
Parameters:
xmlConfig - the XML element that contains the configuration info
fSafe - true if the provider is skips unresolved addresses

Method Detail

getNextAddress

public java.net.InetSocketAddress getNextAddress()
Obtain a next available address to use. If the caller can successfully use the returned address (e.g. a connection was established), it should call the AddressProvider's AddressProvider.accept() method.
Specified by:
getNextAddress in interface AddressProvider
Returns:
the next available address or null if the list of available addresses was exhausted

accept

public void accept()
This method should be called by the client immediately after it determines that it can successfully use an address returned by the AddressProvider.getNextAddress() method.
Specified by:
accept in interface AddressProvider

reject

public void reject(java.lang.Throwable eCause)
This method should be called by the client immediately after it determines that an attempt to use an address returned by the AddressProvider.getNextAddress() method has failed.
Specified by:
reject in interface AddressProvider
Parameters:
eCause - (optional) an exception that carries the reason why the the caller rejected the previously returned address

size

public int size()
Returns the number of elements in this collection. If the collection contains more than Integer.MAX_VALUE elements, returns Integer.MAX_VALUE.
Specified by:
size in interface java.util.Collection
Specified by:
size in interface java.util.Set
Specified by:
size in class java.util.AbstractCollection
Returns:
the number of elements in this collection

iterator

public java.util.Iterator iterator()
Returns an iterator over the elements contained in this collection.
Specified by:
iterator in interface java.lang.Iterable
Specified by:
iterator in interface java.util.Collection
Specified by:
iterator in interface java.util.Set
Specified by:
iterator in class java.util.AbstractCollection
Returns:
an iterator over the elements contained in this collection

reset

protected void reset()
Make all addresses iterable, starting at the first address.

reset

protected void reset(int iLast)
Make all addresses iterable, starting at the index after the specified one.
Parameters:
iLast - the index of the last address returned

configure

protected void configure(XmlElement xmlConfig)
Configure this ConfigurableAddressProvider based on the specified XML.
Parameters:
xmlConfig - the XML element that contains the configuration info

sortHolders

protected java.util.List sortHolders(java.util.List list)
Sort the holders in the order to be returned by the getNextAddress() method. This implementation randomizes the holder list for simple load balancing.
Parameters:
list - the original list retrieved from the configuration
Returns:
the re-ordered list

createAddressProvider

public static AddressProvider createAddressProvider(XmlElement xmlConfig,
                                                    java.lang.ClassLoader loader)
Instantiate an AddressProvider configured according to the specified XML. The passed XML has to conform to the following format:
   <!ELEMENT ... (socket-address+ | address-provider)>
   <!ELEMENT address-provider
     (class-name | (class-factory-name, method-name), init-params?>
   <!ELEMENT socket-address (address, port)>
 
Parameters:
xmlConfig - the XML element that contains the configuration info
loader - (optional) the ClassLoader that should be used to load necessary classes
Returns:
an instance of the corresponding AddressProvider implementation
See Also:
"remote-addresses" element declaration for the cache-config.dtd in the Coherence library

equals

public boolean equals(java.lang.Object o)
AddressProvider instances should compare to be equals() iff they should be expected to consistently produce the same resulting set of addresses.

Note: the general contract of hashCode and equals() should be preserved; AddressProviders which compare equals() should have the same hashCode.

Specified by:
equals in interface AddressProvider
Specified by:
equals in interface java.util.Collection
Specified by:
equals in interface java.util.Set
Overrides:
equals in class java.util.AbstractSet
Parameters:
o - the Object to compare this AddressProvider to for equality
Returns:
true iff this AddressProvider is equal to the specified object
See Also:
Object.equals(Object), Set.equals(Object), List.equals(Object)

hashCode

public int hashCode()
Return the hash code for this AddressProvider.
Specified by:
hashCode in interface AddressProvider
Specified by:
hashCode in interface java.util.Collection
Specified by:
hashCode in interface java.util.Set
Overrides:
hashCode in class java.util.AbstractSet
Returns:
the hash code for this AddressProvider
See Also:
Object.hashCode(), Object.equals(Object), Set.equals(Object)

toString

public java.lang.String toString()
Return a string representation of this ConfigurableAddressProvider.
Overrides:
toString in class java.util.AbstractCollection
Returns:
a string representation of the list of configured addresses

Skip navigation links

Oracle® Coherence Java API Reference
Release 3.7.0.0

E18683-01


Copyright © 2000, 2011, Oracle and/or its affiliates. All rights reserved.