Show TOC

Managing Portal CachesLocate this document in the navigation structure

Use

The Cache Management API provides a uniform way to manage internal portal caches. Instead of managing each individual cache, you can use this API to perform standard actions, such as enabling, disabling or clearing a cache, as well as custom actions available for specific caches. This API is most useful for performing batch actions on all caches.

Note

The Cache Management API is currently supported by the navigation and OBN caches.

Using the Cache Management API

The Cache Management API ( ICacheManager interface) is part of the com.sap.portal.cache.api package.

To use the API, you need to obtain a reference to ICacheManager:

               ICacheManager cacheManager = (ICacheManager); 
PortalRuntime.getRuntimeResources().getService(ICacheManager.KEY);
            

With the Cache Management API, you can perform the following tasks:

Enabling or Disabling All Caches

The following example shows how to enable or disable all available caches:

Sample Code
                  String[] enableFailed = cacheManager.setEnabled(true);
String[] disableFailed = cacheManager.setEnabled(false);

               

Performing Batch Actions on All Caches

To perform an action on all available caches in a batch, you obtain the list of all cache IDs and iterate through it to perform the required action on each cache. The following example illustrates clearing all caches.

Sample Code
                  ICacheManager cacheManager = (ICacheManager) PortalRuntime.getRuntimeResources().getService(ICacheManager.KEY);
                String[] allCacheIDs = cacheManager.getAllCacheIDs();
                
                for (int i = 0; i < allCacheIDs.length; i++) 
                {
                        String currentCacheID = allCacheIDs[i];
                        ClearAction clearAction = new ClearAction(currentCacheID);
                        try 
                        {
                                cacheManager.applyAction(currentCacheID, clearAction, true);
                        } 
                        catch (ApplyActionException e) 
                        {
                                e.printStackTrace();
                        }
                }

               

Clearing a Cache Using a Predefined Clear Action

The following example shows how to clear a single cache by performing a predefined action ( ClearAction). To do this, you need to specify the cache ID.

Sample Code
                  String cacheID = "myCacheId";
boolean cluster = true;
CacheAction cacheAction = new ClearAction(cacheID);
try {
     cacheManager.applyAction(cacheID, cacheAction, cluster);
                        } 
catch (ApplyActionException e) {
     e.printStackTrace();
                        }

               

Defining and Performing a Cache-Specific Action

The Cache Management API enables you to access specific actions, implemented by a cache. The following example shows how to define and perform such action:

Sample Code
                  String cacheID = "newCacheId";
HashMap actionParams = new HashMap();
actionParams.put("key1", "value1"); 
actionParams.put("key2", "value2");
//Define the action
CacheAction MyDummyAction = new CacheAction(cacheID, "dummyActionId", actionParams);
try {
//Perform the action     
cacheManager.applyAction(cacheID, MyDummyAction, cluster);
                        } 
catch (ApplyActionException e) {
     e.printStackTrace();
                        }