2.2. Instantiating and Starting the Cache

An instance of the Cache interface can only be created via a CacheFactory. This is unlike JBoss Cache 1.x, where an instance of the old TreeCache class could be directly instantiated.
The CacheFactory provides a number of overloaded methods for creating a Cache, but they all fundamentally do the same thing:
  • Gain access to a Configuration, either by having one passed in as a method parameter or by parsing XML content and constructing one. The XML content can come from a provided input stream, from a classpath or file system location. See the Chapter 3, Configuration for more on obtaining a Configuration.
  • Instantiate the Cache and provide it with a reference to the Configuration.
  • Optionally invoke the cache's create() and start() methods.
Here is an example of the simplest mechanism for creating and starting a cache, using the default configuration values:
   CacheFactory factory = new DefaultCacheFactory();
   Cache cache = factory.createCache();
In this example, we tell the CacheFactory to find and parse a configuration file on the classpath:
   CacheFactory factory = new DefaultCacheFactory();
   Cache cache = factory.createCache("cache-configuration.xml");
In this example, we configure the cache from a file, but want to programmatically change a configuration element. So, we tell the factory not to start the cache, and instead do it ourselves:
   CacheFactory factory = new DefaultCacheFactory();
   Cache cache = factory.createCache("/opt/configurations/cache-configuration.xml", false);
   Configuration config = cache.getConfiguration();
   config.setClusterName(this.getClusterName());

   // Have to create and start cache before using it
   cache.create();
   cache.start();