Class RemoteCacheManager

java.lang.Object
org.infinispan.client.hotrod.RemoteCacheManager
All Implemented Interfaces:
Closeable, AutoCloseable, RemoteCacheManagerMXBean, RemoteCacheContainer, BasicCacheContainer, Lifecycle

public class RemoteCacheManager extends Object implements RemoteCacheContainer, Closeable, RemoteCacheManagerMXBean

Factory for RemoteCaches.

In order to be able to use a RemoteCache, the RemoteCacheManager must be started first: this instantiates connections to Hot Rod server(s). Starting the RemoteCacheManager can be done either at creation by passing start==true to the constructor or by using a constructor that does that for you; or after construction by calling start().

NOTE: this is an "expensive" object, as it manages a set of persistent TCP connections to the Hot Rod servers. It is recommended to only have one instance of this per JVM, and to cache it between calls to the server (i.e. remoteCache operations)

stop() needs to be called explicitly in order to release all the resources (e.g. threads, TCP connections).

Since:
4.1
Author:
Mircea.Markus@jboss.com
  • Field Details

    • HOTROD_CLIENT_PROPERTIES

      public static final String HOTROD_CLIENT_PROPERTIES
      See Also:
    • JSON_STRING_ARRAY_ELEMENT_REGEX

      public static final String JSON_STRING_ARRAY_ELEMENT_REGEX
      See Also:
    • channelFactory

      protected org.infinispan.client.hotrod.impl.transport.netty.ChannelFactory channelFactory
    • listenerNotifier

      protected ClientListenerNotifier listenerNotifier
  • Constructor Details

    • RemoteCacheManager

      public RemoteCacheManager(Configuration configuration)
      Create a new RemoteCacheManager using the supplied Configuration. The RemoteCacheManager will be started automatically
      Parameters:
      configuration - the configuration to use for this RemoteCacheManager
      Since:
      5.3
    • RemoteCacheManager

      public RemoteCacheManager(String uri)
      Create a new RemoteCacheManager using the supplied URI. The RemoteCacheManager will be started automatically
      Parameters:
      uri - the URI to use for this RemoteCacheManager
      Since:
      11.0
    • RemoteCacheManager

      public RemoteCacheManager(URI uri)
      Create a new RemoteCacheManager using the supplied URI. The RemoteCacheManager will be started automatically
      Parameters:
      uri - the URI to use for this RemoteCacheManager
      Since:
      11.0
    • RemoteCacheManager

      public RemoteCacheManager(Configuration configuration, boolean start)
      Create a new RemoteCacheManager using the supplied Configuration. The RemoteCacheManager will be started automatically only if the start parameter is true
      Parameters:
      configuration - the configuration to use for this RemoteCacheManager
      start - whether or not to start the manager on return from the constructor.
      Since:
      5.3
    • RemoteCacheManager

      public RemoteCacheManager(boolean start)

      Similar to RemoteCacheManager(Configuration, boolean), but it will try to lookup the config properties in the classpath, in a file named hotrod-client.properties. If no properties can be found in the classpath, defaults will be used, attempting to connect to 127.0.0.1:11222

      Refer to ConfigurationBuilder for a detailed list of available properties.

      Parameters:
      start - whether or not to start the RemoteCacheManager
      Throws:
      HotRodClientException - if such a file cannot be found in the classpath
    • RemoteCacheManager

      public RemoteCacheManager()
      Same as RemoteCacheManager(boolean) and it also starts the cache.
  • Method Details

    • getConfiguration

      public Configuration getConfiguration()
      Description copied from interface: RemoteCacheContainer
      Retrieves the configuration currently in use. The configuration object is immutable. If you wish to change configuration, you should use the following pattern:
      
       ConfigurationBuilder builder = new ConfigurationBuilder();
       builder.read(remoteCacheManager.getConfiguration());
       // modify builder
       remoteCacheManager.stop();
       remoteCacheManager = new RemoteCacheManager(builder.build());
       
      Specified by:
      getConfiguration in interface RemoteCacheContainer
      Returns:
      The configuration of this RemoteCacheManager
      Since:
      5.3
    • getCache

      public <K, V> RemoteCache<K,V> getCache(String cacheName)
      Retrieves a named cache from the remote server if the cache has been defined, otherwise if the cache name is undefined, it will return null.
      Specified by:
      getCache in interface BasicCacheContainer
      Specified by:
      getCache in interface RemoteCacheContainer
      Parameters:
      cacheName - name of cache to retrieve
      Returns:
      a cache instance identified by cacheName or null if the cache name has not been defined
      See Also:
    • getCacheNames

      public Set<String> getCacheNames()
      Description copied from interface: BasicCacheContainer
      This method returns a collection of all cache names.

      The configurations may have been defined via XML, in the programmatic configuration, or at runtime.

      Internal-only caches are not included.

      Specified by:
      getCacheNames in interface BasicCacheContainer
      Returns:
      an immutable set of cache names registered in this cache manager.
    • getCache

      public <K, V> RemoteCache<K,V> getCache()
      Retrieves the default cache from the remote server.
      Specified by:
      getCache in interface BasicCacheContainer
      Specified by:
      getCache in interface RemoteCacheContainer
      Returns:
      a remote cache instance that can be used to send requests to the default cache in the server
      See Also:
    • getCache

      public <K, V> RemoteCache<K,V> getCache(String cacheName, TransactionMode transactionMode, javax.transaction.TransactionManager transactionManager)
      Specified by:
      getCache in interface RemoteCacheContainer
      Parameters:
      cacheName - The cache's name.
      transactionMode - The TransactionMode to override. If null, it uses the configured value.
      transactionManager - The TransactionManager to override. If null, it uses the configured value.
      Returns:
      the RemoteCache implementation.
    • getCache

      public <K, V> RemoteCache<K,V> getCache(String cacheName, boolean forceReturnValue, TransactionMode transactionMode, javax.transaction.TransactionManager transactionManager)
      Specified by:
      getCache in interface RemoteCacheContainer
      Parameters:
      cacheName - The cache's name.
      forceReturnValue - true to force a return value when it is not needed.
      transactionMode - The TransactionMode to override. If null, it uses the configured value.
      transactionManager - The TransactionManager to override. If null, it uses the configured value.
      Returns:
      the RemoteCache implementation.
    • startAsync

      public CompletableFuture<Void> startAsync()
    • stopAsync

      public CompletableFuture<Void> stopAsync()
    • start

      public void start()
      Description copied from interface: Lifecycle
      Invoked on component start
      Specified by:
      start in interface Lifecycle
    • createChannelFactory

      public org.infinispan.client.hotrod.impl.transport.netty.ChannelFactory createChannelFactory()
    • isTransactional

      public boolean isTransactional(String cacheName)
      Specified by:
      isTransactional in interface RemoteCacheContainer
      Returns:
      true if the cache with name cacheName can participate in transactions.
    • getMarshallerRegistry

      public MarshallerRegistry getMarshallerRegistry()
    • stop

      public void stop()
      Stop the remote cache manager, disconnecting all existing connections. As part of the disconnection, all registered client cache listeners will be removed since client no longer can receive callbacks.
      Specified by:
      stop in interface Lifecycle
    • isStarted

      public boolean isStarted()
      Specified by:
      isStarted in interface RemoteCacheContainer
    • switchToCluster

      public boolean switchToCluster(String clusterName)
      Description copied from interface: RemoteCacheContainer
      Switch remote cache manager to a different cluster, previously declared via configuration. If the switch was completed successfully, this method returns true, otherwise it returns false.
      Specified by:
      switchToCluster in interface RemoteCacheContainer
      Specified by:
      switchToCluster in interface RemoteCacheManagerMXBean
      Parameters:
      clusterName - name of the cluster to which to switch to
      Returns:
      true if the cluster was switched, false otherwise
    • switchToDefaultCluster

      public boolean switchToDefaultCluster()
      Description copied from interface: RemoteCacheContainer
      Switch remote cache manager to a the default cluster, previously declared via configuration. If the switch was completed successfully, this method returns true, otherwise it returns false.
      Specified by:
      switchToDefaultCluster in interface RemoteCacheContainer
      Specified by:
      switchToDefaultCluster in interface RemoteCacheManagerMXBean
      Returns:
      true if the cluster was switched, false otherwise
    • getCurrentClusterName

      public String getCurrentClusterName()
      Description copied from interface: RemoteCacheContainer
      Returns the name of the currently active cluster.
      Specified by:
      getCurrentClusterName in interface RemoteCacheContainer
      Specified by:
      getCurrentClusterName in interface RemoteCacheManagerMXBean
      Returns:
      the name of the active cluster
    • createNearCacheService

      protected <K, V> NearCacheService<K,V> createNearCacheService(String cacheName, NearCacheConfiguration cfg)
    • getMarshaller

      public Marshaller getMarshaller()
      Specified by:
      getMarshaller in interface RemoteCacheContainer
    • cacheNameBytes

      public static byte[] cacheNameBytes(String cacheName)
    • cacheNameBytes

      public static byte[] cacheNameBytes()
    • administration

      public RemoteCacheManagerAdmin administration()
      Access to administration operations (cache creation, removal, etc)
      Returns:
      an instance of RemoteCacheManagerAdmin which can perform administrative operations on the server.
    • close

      public void close()
      See stop()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
    • getChannelFactory

      public org.infinispan.client.hotrod.impl.transport.netty.ChannelFactory getChannelFactory()
      This method is not a part of the public API. It is exposed for internal purposes only.
    • getXaResource

      public XAResource getXaResource()
      Returns the XAResource which can be used to do transactional recovery.
      Returns:
      An instance of XAResource
    • getServers

      public String[] getServers()
      Description copied from interface: RemoteCacheManagerMXBean
      Returns a list of servers to which the client is currently connected in the format of ip_address:port_number.
      Specified by:
      getServers in interface RemoteCacheManagerMXBean
    • getActiveConnectionCount

      public int getActiveConnectionCount()
      Description copied from interface: RemoteCacheManagerMXBean
      Returns the number of active connections
      Specified by:
      getActiveConnectionCount in interface RemoteCacheManagerMXBean
    • getConnectionCount

      public int getConnectionCount()
      Description copied from interface: RemoteCacheManagerMXBean
      Returns the total number of connections
      Specified by:
      getConnectionCount in interface RemoteCacheManagerMXBean
    • getIdleConnectionCount

      public int getIdleConnectionCount()
      Description copied from interface: RemoteCacheManagerMXBean
      Returns the number of idle connections
      Specified by:
      getIdleConnectionCount in interface RemoteCacheManagerMXBean
    • getRetries

      public long getRetries()
      Description copied from interface: RemoteCacheManagerMXBean
      Returns the total number of retries that have been executed
      Specified by:
      getRetries in interface RemoteCacheManagerMXBean
    • getAsyncExecutorService

      public ExecutorService getAsyncExecutorService()