Este contenido no está disponible en el idioma seleccionado.
12.2. Using the Infinispan CDI Module
- To configure and inject Infinispan caches into CDI Beans and Java EE components.
- To configure cache managers.
- To control storage and retrieval using CDI annotations.
12.2.1. Configure and Inject Infinispan Caches Copiar enlaceEnlace copiado en el portapapeles!
12.2.1.1. Inject an Infinispan Cache Copiar enlaceEnlace copiado en el portapapeles!
public class MyCDIBean { @Inject Cache<String, String> cache; }
public class MyCDIBean {
@Inject
Cache<String, String> cache;
}
12.2.1.2. Inject a Remote Infinispan Cache Copiar enlaceEnlace copiado en el portapapeles!
public class MyCDIBean { @Inject RemoteCache<String, String> remoteCache; }
public class MyCDIBean {
@Inject
RemoteCache<String, String> remoteCache;
}
12.2.1.3. Set the Injection's Target Cache Copiar enlaceEnlace copiado en el portapapeles!
- Create a qualifier annotation.
- Add a producer class.
- Inject the desired class.
12.2.1.3.1. Create a Qualifier Annotation Copiar enlaceEnlace copiado en el portapapeles!
Example 12.1. Custom Cache Qualifier
@javax.inject.Qualifier @Target({ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface SmallCache {}
@javax.inject.Qualifier
@Target({ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface SmallCache {}
@SmallCache
qualifier to specify how to create specific caches.
12.2.1.3.2. Add a Producer Class Copiar enlaceEnlace copiado en el portapapeles!
@SmallCache
qualifier (created in the previous step) specifies a way to create a cache:
Example 12.2. Using the @SmallCache
Qualifier
@ConfigureCache
specifies the name of the cache.@SmallCache
is the cache qualifier.
12.2.1.3.3. Inject the Desired Class Copiar enlaceEnlace copiado en el portapapeles!
@SmallCache
qualifier and the new producer class to inject a specific cache into the CDI bean as follows:
public class MyCDIBean { @Inject @SmallCache Cache<String, String> mySmallCache; }
public class MyCDIBean {
@Inject @SmallCache
Cache<String, String> mySmallCache;
}
12.2.2. Configure Cache Managers with CDI Copiar enlaceEnlace copiado en el portapapeles!
12.2.2.1. Specify the Default Configuration Copiar enlaceEnlace copiado en el portapapeles!
Example 12.3. Specifying the Default Configuration
Note
@Default
qualifier if no other qualifiers are provided.
@Produces
annotation is placed in a method that returns a Configuration instance, the method is invoked when a Configuration object is required.
12.2.2.2. Override the Creation of the Embedded Cache Manager Copiar enlaceEnlace copiado en el portapapeles!
After a producer method is annotated, this method will be called when creating an EmbeddedCacheManager
, as follows:
Example 12.4. Create a Non Clustered Cache
@ApplicationScoped
annotation specifies that the method is only called once.
The following configuration can be used to create an EmbeddedCacheManager
that can create clustered caches.
Example 12.5. Create Clustered Caches
The method annotated with @Produces
in the non clustered method generates Configuration
objects. The methods in the clustered cache example annonated with @Produces
generate EmbeddedCacheManager
objects.
EmbeddedCacheManager
and injects it into the code at runtime.
Example 12.6. Generate an EmbeddedCacheManager
... @Inject EmbeddedCacheManager cacheManager; ...
...
@Inject
EmbeddedCacheManager cacheManager;
...
12.2.2.3. Configure a Remote Cache Manager Copiar enlaceEnlace copiado en el portapapeles!
RemoteCacheManager
is configured in a manner similar to EmbeddedCacheManagers
, as follows:
Example 12.7. Configuring the Remote Cache Manager
12.2.2.4. Configure Multiple Cache Managers with a Single Class Copiar enlaceEnlace copiado en el portapapeles!
Example 12.8. Configure Multiple Cache Managers
12.2.3. Storage and Retrieval Using CDI Annotations Copiar enlaceEnlace copiado en el portapapeles!
12.2.3.1. Configure Cache Annotations Copiar enlaceEnlace copiado en el portapapeles!
javax.cache
package.
12.2.3.2. Enable Cache Annotations Copiar enlaceEnlace copiado en el portapapeles!
beans.xml
file. Adding the following code adds interceptors such as the CacheResultInterceptor
, CachePutInterceptor
, CacheRemoveEntryInterceptor
and the CacheRemoveAllInterceptor
:
Example 12.9. Adding Interceptors
Note
beans.xml
file for Red Hat JBoss Data Grid to use javax.cache annotations.
12.2.3.3. Caching the Result of a Method Invocation Copiar enlaceEnlace copiado en el portapapeles!
toCelsiusFormatted
method again and stores the result in the cache.
@CacheResult
annotation instead, as follows:
toCelsiusFormatted()
method call.
Note
12.2.3.3.1. Specify the Cache Used Copiar enlaceEnlace copiado en el portapapeles!
cacheName
) to the @CacheResult
annotation to specify the cache to check for results of the method call:
@CacheResult(cacheName = "mySpecialCache") public String doSomething(String parameter) { <!-- Additional configuration information here --> }
@CacheResult(cacheName = "mySpecialCache")
public String doSomething(String parameter) {
<!-- Additional configuration information here -->
}
12.2.3.3.2. Cache Keys for Cached Results Copiar enlaceEnlace copiado en el portapapeles!
@CacheResult
annotation creates a key for the results fetched from a cache. The key consists of a combination of all parameters in the relevant method.
@CacheKey
annotation as follows:
Example 12.10. Create a Custom Key
p1
and p2
are used to create the cache key. The value of dontCare
is not used when determining the cache key.
12.2.3.3.3. Generate a Custom Key Copiar enlaceEnlace copiado en el portapapeles!
cacheKeyGenerator
to the @CacheResult
annotation as follows:
@CacheResult(cacheKeyGenerator = MyCacheKeyGenerator.class) public void doSomething(String p1, String p2) { <!-- Additional configuration information here --> }
@CacheResult(cacheKeyGenerator = MyCacheKeyGenerator.class)
public void doSomething(String p1, String p2) {
<!-- Additional configuration information here -->
}
p1
contains the custom key.
12.2.4. Cache Operations Copiar enlaceEnlace copiado en el portapapeles!
12.2.4.1. Update a Cache Entry Copiar enlaceEnlace copiado en el portapapeles!
@CachePut
annotation is invoked, a parameter (normally passed to the method annotated with @CacheValue
) is stored in the cache.
Example 12.11. Sample @CachePut
Annotated Method
cacheName
and cacheKeyGenerator
in the @CachePut
method. Additionally, some parameters in the invoked method may be annotated with @CacheKey
to control key generation.
12.2.4.2. Remove an Entry from the Cache Copiar enlaceEnlace copiado en el portapapeles!
@CacheRemoveEntry
annotated method that is used to remove an entry from the cache:
Example 12.12. Removing an Entry from the Cache
cacheName
and cacheKeyGenerator
attributes.
12.2.4.3. Clear the Cache Copiar enlaceEnlace copiado en el portapapeles!
@CacheRemoveAll
method to clear all entries from the cache.
Example 12.13. Clear All Entries from the Cache with @CacheRemoveAll
import javax.cache.annotation.CacheResult @CacheRemoveAll (cacheName = "statisticsCache") public void resetStatistics() { <!-- Additional configuration information here --> }
import javax.cache.annotation.CacheResult
@CacheRemoveAll (cacheName = "statisticsCache")
public void resetStatistics() {
<!-- Additional configuration information here -->
}
cacheName
attribute.