This documentation supports the 23.3 version of BMC Helix Innovation Suite (AR System and BMC Helix Innovation Studio).

To view an earlier version, select the version from the Product version menu.

Using Data Caching Service

Some applications might cache data, metadata, or even configuration items for better performance. BMC Helix Innovation Studio provides a Data Caching Service that is available at com.bmc.arsys.rx.services.cache.CacheService to enable applications to cache data, metadata, and configuration items. 

An application can use CacheService to create the cache and add a data element to the cache. When the application is uninstalled or reinstalled, the cache data is deleted.

The Data Caching Service increases the application performance by reducing: 

  • Time spent on requesting and receiving the data over the network thus facilitates the server to process more requests in a shorter time.
  • Load on the database server by processing the frequently used requests on the services.

Use the Data Caching Service to perform the following tasks:

  • Cache internal or external data of the application by using the com.bmc.arsys.rx.services.cache.Cacheable method.
  • Create a cache for every tenant when you create local variables and store transient data in those variables. The application's cached data is never shared among tenants.
  • Synchronize the cache across servers in a cluster.
  • Load custom data and initialize a custom cache by using the com.bmc.arsys.rx.services.cache.CacheInitializer method.

A CacheConfiguration type is used to configure the cache and consists of the following attributes:

  • Name of the cache
  • Maximum size of the cache

    The cache size is configurable between 10 MB and 20 MB.

  • Cache initializer

    If the initializer is not provided, the frequently used items will be added to the cache.

Data Caching Service sample code

The following sample shows the Data Caching Service code:

To retrieve the application's data, application developers can use the Data Caching Service in custom actions, REST resources, and so on.

// Get the cache service
CacheService cacheService = ServiceLocator.getCacheService();

// Create a custom cache initializer
CacheInitializer initializer = new CustomCacheInitializer();
 
// Create cache configuration           
CacheConfiguration cacheConfig = new CacheConfiguration(MY_CACHE, 1,initializer); 

// Create cache 
cacheService.createCache(cacheConfig);

For more details, see the CacheService information in Platform Service Java API Documentation.

The following CacheService methods are provided in the REST API call:

TaskMethod to use
Get all cache entries
Set<Cacheable> cacheables = cacheService.getAll(cacheName);
Get specific cache entries
cacheService.get(id)
Reset the cache entries
cacheService.resetCache(cacheName);
Delete all cache entries
cacheService.deleteAll(cacheName);
Delete specific cache entries
cacheService.delete(cacheName, objectId);

Troubleshooting

This section describes how to resolve issues that you might encounter when using the Data Caching Service.

If you receive the following error when you use the Data Caching Service code:

com.bmc.arsys.server.rx.services.RxFrameworkException: [ERROR (12049): Please provide correct bundle scope. Actual Bundle deployed is not the bundle scope passed :; default-bundle-scope is null / empty]

To resolve the issue, perform the following tasks:

  • Get the following jar from the location where you have installed Action Request System and add this jar in your project classpath.
    <ARInstalledFolder/Pod>/ARSystem/lib/upgradeutils/com.bmc.arsys.common-<version>.jar
  • Add the following dependencies to your bundle pom.xml file:

    <dependency>
    <groupId>com.bmc.arsys</groupId>
    <artifactId>com.bmc.arsys.common</artifactId>
    <version>${rx-sdk.version}</version>
    <scope>provided</scope>
    </dependency>
  • Add the following code before the Data Caching Service code:

    ThreadLocalContext.putValue(RxBundle.DEFAULT_BUNDLE_SCOPE_KEY, "<applicationID>");

    For example:

    ThreadLocalContext.putValue(RxBundle.DEFAULT_BUNDLE_SCOPE_KEY, "<applicationID>");
    
    // Get the cache service
    CacheService cacheService = ServiceLocator.getCacheService();
    
    // Create a custom cache initializer
    CacheInitializer initializer = new CustomCacheInitializer();
     
    // Create cache configuration           
    CacheConfiguration cacheConfig = new CacheConfiguration(MY_CACHE, 1,initializer); 
    
    // Create cache 
    cacheService.createCache(cacheConfig);
Was this page helpful? Yes No Submitting... Thank you

Comments