Class HazelcastCachingProvider
- All Implemented Interfaces:
Closeable
,AutoCloseable
,javax.cache.spi.CachingProvider
CachingProvider
.
This provider class is registered as a CachingProvider
implementation.
When Hazelcast is the only CachingProvider
on the classpath,
using Caching.getCachingProvider()
will instantiate and return
an instance of this class.
This provider implementation delegates to a CachingProvider
backed
by either a member- or a client-side HazelcastInstance
:
HazelcastMemberCachingProvider
is the member-sideCachingProvider
implementationHazelcastClientCachingProvider
is the client-sideCachingProvider
implementation
Provider Type Selection
When using Caching.getCachingProvider()
without a class name argument,
this provider is instantiated. The choice between member- or client-side provider
is made by inspecting the value of system property
hazelcast.jcache.provider.type
:
- If no value was set, then the client-side caching provider is selected
- If a value was set, then value
member
selects the member-side caching provider, while valueclient
selects the client-side provider. Legacy valueserver
is also accepted as an alias formember
for backwards compatibility, however its usage is discouraged and will be removed in a future version. Other values result in aCacheException
being thrown.
When using one of Caching#getCachingProvider
variants with an explicit
class name argument, then:
- using
com.hazelcast.cache.HazelcastCachingProvider
as class name is identical to usingCaching.getCachingProvider()
; choice between member- or client-side caching provider is performed via system propertyhazelcast.jcache.provider.type
as described above. - using
MEMBER_CACHING_PROVIDER
as class name will return a member-side caching provider - using
CLIENT_CACHING_PROVIDER
as class name will return a client-side caching provider
Creating or reusing HazelcastInstances with CacheManagers
Arguments used withCachingProvider.getCacheManager(URI, ClassLoader, Properties)
and its variants control whether a HazelcastInstance
will be created or reused
to back the CacheManager
being created:
- Property
hazelcast.config.location
specifies a URI to locate a Hazelcast member or client configuration file. Supportsclasspath:
,file:
,http:
andhttps:
URI schemes. Examples:classpath:com/acme/hazelcast.xml
will locatehazelcast.xml
in packagecom.acme
,http://internal.acme.com/hazelcast.xml
will locate the configuration from the given HTTP URL. - Property
hazelcast.instance.name
specifies the instance name of a runningHazelcastInstance
. If no instance is found running by that name, then a newHazelcastInstance
is started with a default configuration and the given instance name. - In any
CachingProvider#getCacheManager
variant that accepts aURI
as argument, and if no properties were provided or properties did not result in resolving a specificHazelcastInstance
, then theURI
argument is interpreted as a Hazelcast config location as follows:- if
URI
starts with one of supported schemes (classpath:
,http:
,https:
,file:
), then a Hazelcast XML configuration is loaded from that location. - otherwise,
URI
is interpreted as a system property. IfSystem.getProperty(URI)
returns a value that starts with one of supported schemes above, then a Hazelcast XML configuration is loaded from that location. - if
URI
or its resolved value as a system property does not start with a supported URI scheme, a defaultHazelcastInstance
named "_hzinstance_jcache_shared" is created or used, if it already exists.
- if
propertiesByLocation(String)
and propertiesByInstanceName(String)
will create an appropriate Properties
instance for use with
getCacheManager(URI, ClassLoader, Properties)
.
Examples
Obtain a member-side caching provider backed by an existing HazelcastInstance.
In this example the member-side caching provider is selected by setting the value of
system property hazelcast.jcache.provider.type
to value "member
". An existing
HazelcastInstance
is referenced by instance name in the Properties
provided as
argument to CachingProvider.getCacheManager(URI, ClassLoader, Properties)
.
Config config = new Config(); config.setInstanceName("hz-jcache"); HazelcastInstance member = Hazelcast.newHazelcastInstance(config); System.setProperty("hazelcast.jcache.provider.type", "member"); CachingProvider provider = Caching.getCachingProvider(); CacheManager manager = provider.getCacheManager(null, null, HazelcastCachingProvider.propertiesByInstanceName("hz-jcache")); Cache cache = manager.createCache("sessions", new MutableConfiguration()); cache.put("a", "b");
Obtain a client-side caching provider, starting a default client HazelcastInstance
In this example the client-side caching provider is selected as default option. A new
client-side HazelcastInstance
is created with default configuration once
CachingProvider.getCacheManager()
is called.
// start a Hazelcast member for the client to connect to HazelcastInstance member = Hazelcast.newHazelcastInstance(); // obtain a client-side (default) CachingProvider CachingProvider provider = Caching.getCachingProvider(); // obtain the default CacheManager; since there is no JCache-backing client-side // HazelcastInstance started, this will start a new instance CacheManager manager = provider.getCacheManager(); Cache cache = manager.createCache("sessions", new MutableConfiguration()); cache.put("a", "b");
- Since:
- 3.4
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
Class name of the client-side Caching Providerstatic final String
Hazelcast config location propertystatic final String
Hazelcast instance itself propertystatic final String
Hazelcast instance name propertystatic final String
Class name of the member-side Caching Providerstatic final String
Deprecated.static final String
Name of defaultHazelcastInstance
which may be started when obtaining the defaultCachingProvider
. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
void
close
(ClassLoader classLoader) void
close
(URI uri, ClassLoader classLoader) javax.cache.CacheManager
javax.cache.CacheManager
getCacheManager
(URI uri, ClassLoader classLoader) javax.cache.CacheManager
getCacheManager
(URI uri, ClassLoader classLoader, Properties properties) boolean
isSupported
(javax.cache.configuration.OptionalFeature optionalFeature) static Properties
propertiesByInstanceItself
(HazelcastInstance instance) Create theProperties
with the provided instance itself.static Properties
propertiesByInstanceName
(String instanceName) Create theProperties
with the provided instance name.static Properties
propertiesByLocation
(String configFileLocation) Create theProperties
with the provided config file location.toString()
-
Field Details
-
HAZELCAST_CONFIG_LOCATION
Hazelcast config location property- See Also:
-
HAZELCAST_INSTANCE_NAME
Hazelcast instance name property- See Also:
-
HAZELCAST_INSTANCE_ITSELF
Hazelcast instance itself property- See Also:
-
MEMBER_CACHING_PROVIDER
Class name of the member-side Caching Provider -
SERVER_CACHING_PROVIDER
Deprecated.Same value asMEMBER_CACHING_PROVIDER
. This field is maintained for backwards compatibility. Its use is discouraged and will be removed in a future version. -
CLIENT_CACHING_PROVIDER
Class name of the client-side Caching Provider -
SHARED_JCACHE_INSTANCE_NAME
Name of defaultHazelcastInstance
which may be started when obtaining the defaultCachingProvider
.- See Also:
-
-
Constructor Details
-
HazelcastCachingProvider
public HazelcastCachingProvider()
-
-
Method Details
-
propertiesByLocation
Create theProperties
with the provided config file location.- Parameters:
configFileLocation
- the location of the config file to configure- Returns:
- properties instance pre-configured with the configuration location
-
propertiesByInstanceName
Create theProperties
with the provided instance name.- Parameters:
instanceName
- the instance name to configure- Returns:
- the properties instance pre-configured with the instance name
-
propertiesByInstanceItself
Create theProperties
with the provided instance itself.- Parameters:
instance
- the instance itself to be used- Returns:
- the properties instance pre-configured with the instance itself
-
getCacheManager
public javax.cache.CacheManager getCacheManager(URI uri, ClassLoader classLoader, Properties properties) - Specified by:
getCacheManager
in interfacejavax.cache.spi.CachingProvider
-
getDefaultClassLoader
- Specified by:
getDefaultClassLoader
in interfacejavax.cache.spi.CachingProvider
-
getDefaultURI
- Specified by:
getDefaultURI
in interfacejavax.cache.spi.CachingProvider
-
getDefaultProperties
- Specified by:
getDefaultProperties
in interfacejavax.cache.spi.CachingProvider
-
getCacheManager
- Specified by:
getCacheManager
in interfacejavax.cache.spi.CachingProvider
-
getCacheManager
public javax.cache.CacheManager getCacheManager()- Specified by:
getCacheManager
in interfacejavax.cache.spi.CachingProvider
-
close
public void close()- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfacejavax.cache.spi.CachingProvider
- Specified by:
close
in interfaceCloseable
-
close
- Specified by:
close
in interfacejavax.cache.spi.CachingProvider
-
close
- Specified by:
close
in interfacejavax.cache.spi.CachingProvider
-
isSupported
public boolean isSupported(javax.cache.configuration.OptionalFeature optionalFeature) - Specified by:
isSupported
in interfacejavax.cache.spi.CachingProvider
-
toString
-