En lugar de utilizar la interfaz
BackingMap para establecer mediante programación los atributos de BackingMap
que pueden ser utilizados por el desalojador TTL, puede utilizar un archivo XML para configurar cada instancia de BackingMap. El siguiente código demuestra cómo establecer estos atributos para tres correlaciones de BackingMap distintas:
Antes de empezar
Antes de empezar, decida sobre el tipo de desalojador que va a utilizar:
- El desalojador TTL basado en tiempo predeterminado: el desalojador predeterminado utiliza una política de desalojo de tiempo de vida (TTL) para cada instancia de BackingMap.
- Un mecanismo de desalojador conectable: los desalojadores conectables normalmente utilizan una política de desalojo basada en el número de entradas en lugar de en el tiempo.
La mayoría de los valores de
configuración de los desalojadores deben establecerse antes de inicializar
ObjectGrid.
Procedimiento
- Para establecer el desalojador TTL predeterminado, añada el atributo ttlEvictorType
al archivo XML de descriptor de ObjectGrid.
El ejemplo siguiente muestra que la instancia de BackingMap de map1 utiliza un tipo de desalojador TTL NONE. La instancia de BackingMap de map2 utiliza un tipo de desalojador TTL TTL LAST_ACCESS_TIME
o LAST_UPDATE_TIME. Especifique solo uno u otro de estos valores. La instancia de BackingMap de map2 tiene un valor de vida de 1800 segundos, o 30 minutos. La instancia de BackingMap map3 está definida para que utilice un tipo de desalojador TTL CREATION_TIME y tiene un valor de tiempo de vida de 1200 segundos o 20 minutos.
Figura 1. Habilitar el desalojador TimeToLive
con XML<?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>
- Para establecer un desalojador conectable, utilice el ejemplo siguiente.
Figura 2. Conexión de un desalojador mediante XML<?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>