Anstelle der Verwendung der
Schnittstelle "BackingMap" für die programmgesteuerte Definition der BackingMap-Attribute für den TTL-Evictor können
Sie jede BackingMap-Instanz über eine XML-Datei konfigurieren.
Der folgende Code veranschaulicht, wie Sie diese Attribute für drei verschiedene BackingMap-Maps definieren:
Vorbereitende Schritte
Bevor Sie beginnen, legen Sie den Typ des zu verwendenden Bereinigungsprogramms (Evictor) fest:
- Auf der Lebensdauer basierendes Bereinigungsprogramm (Standard): Das Standardbereinigungsprogramm verwendet eine
Bereinigungsrichtlinie für jede BackingMap-Instanz, die auf der
Lebensdauer (TTL, Time-to-Live) basiert.
- Plug-in-Bereinigungsprogramm: Plug-in-Bereinigungsprogramme verwenden gewöhnlich eine Bereinigungsrichtlinie, die auf der
Anzahl der Einträge und nicht auf der Zeit basiert.
Die meisten Einstellungen des Evictors müssen vor der Initialisierung
des ObjectGrids gesetzt werden.
Vorgehensweise
- Zum Definieren des TTL-Standardbereinigungsprogramms fügen Sie der
ObjectGrid-XML-Deskriptordatei das Attribut "ttlEvictorType" hinzu.
Das folgende Beispiel zeigt, dass die BackingMap-Instanz
"map1" den TTL-Evictor-Typ NONE verwendet. Die BackingMap-Instanz "map2" verwendet den Evictortyp
LAST_ACCESS_TIME oder LAST_UPDATE_TIME. Geben Sie nur eine dieser Einstellungen an.
Die BackingMap-Instanz "map2" hat einen TTL-Wert von 1800 Sekunden bzw. 30 Minuten. Die BackingMap-Instanz
"map3" ist mit dem TTL-Evictoryp CREATION_TIME und einem TTL-Wert von
1200 Sekunden bzw. 20 Minuten definiert.
Abbildung 1. TimeToLive-Evictor mit XML aktivieren<?xml version="1.0" encoding="UTF-8"?>
<objectGridConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ibm.com/ws/objectgrid/config ../objectGrid.xsd"
xmlns="http://ibm.com/ws/objectgrid/config">
<objectGrids>
<objectGrid name="grid1">
<backingMap name="map1" ttlEvictorType="NONE" />
<backingMap name="map2" ttlEvictorType="LAST_ACCESS_TIME|LAST_UPDATE_TIME"
timeToLive="1800" />
<backingMap name="map3" ttlEvictorType="CREATION_TIME" timeToLive="1200" />
</objectgrid>
</objectGrids>
- Verwenden Sie das folgende Beispiel, um einen Plug-in-Evictor zu definieren.
Abbildung 2. Plug-in-Evictor mit XML definieren<?xml version="1.0" encoding="UTF-8"?>
<objectGridConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ibm.com/ws/objectgrid/config ../objectGrid.xsd"
xmlns="http://ibm.com/ws/objectgrid/config">
<objectGrids>
<objectGrid name="grid">
<backingMap name="map1" ttlEvictorType="NONE" pluginCollectionRef="LRU" />
<backingMap name="map2" ttlEvictorType="NONE" pluginCollectionRef="LFU" />
</objectGrid>
</objectGrids>
<backingMapPluginCollections>
<backingMapPlugincollection id="LRU">
<bean id="Evictor" className="com.ibm.websphere.objectgrid.plugins.builtins.LRUEvictor">
<property name="maxSize" type="int" value="1000" description="set max size for each LRU queue" />
<property name="sleepTime" type="int" value="15" description="evictor thread sleep time" />
<property name="numberOfLRUQueues" type="int" value="53" description="set number of LRU queues" />
</bean>
</backingMapPluginCollection>
<backingMapPluginCollection id="LFU">
<bean id="Evictor" className="com.ibm.websphere.objectgrid.plugins.builtins.LFUEvictor">
<property name="maxSize" type="int" value="2000" description="set max size for each LFU heap" />
<property name="sleepTime" type="int" value="15" description="evictor thread sleep time" />
<property name="numberOfHeaps" type="int" value="211" description="set number of LFU heaps" />
</bean>
</backingMapPluginCollection>
</backingMapPluginCollections>
</objectGridConfig>