Utilice esta tarea para definir objetos almacenables en
memoria caché dentro del archivo cachespec.xml, que se
encuentra dentro del módulo web WEB-INF o del directorio
META-INF del enterprise bean.
Antes de empezar
Habilite la antememoria dinámica. Consulte el artículo que trata
sobre la utilización del servicio de memoria caché dinámica para obtener más
información.
Acerca de esta tarea
Puede guardar un archivo
cachespec.xml global en el directorio properties del servidor de
aplicaciones, pero el método recomendado es situar el archivo de configuración de
memoria caché con el módulo de despliegue.
El elemento raíz del archivo
cachespec.xml es <cache>, que contiene elementos <cache-entry>.
Avoid trouble: Cuando hay un archivo
cachespec.xml global en el directorio
de propiedades del servidor de aplicaciones y un archivo
cachespec.xml en una aplicación, se fusionan las entradas de
los dos archivos cachespec.xml. Si hay entradas conflictivas en los dos archivos, las entradas del
archivo
cachespec.xml que se encuentra en la
aplicación prevalecen sobre las entradas del archivo
cachespec.xml global para esa aplicación.
gotcha
El elemento <cache-entry> se puede anidar en el elemento <cache> o en el elemento
<cache-instance>. Los elementos <cache-entry> anidados en el elemento <cache>
se almacenan en la memoria caché de la instancia de memoria caché por omisión. Cualquier
elemento <cache-entry> que esté en el elemento <cache-instance> se almacena en la
memoria caché especificada en el atributo name en el elemento <cache-instance>.
Dentro de un elemento <cache-entry> hay parámetros que le permiten completar las
tareas siguientes para habilitar la memoria caché dinámica con el archivo
cachespec.xml:
Procedimiento
- Desarrolle el archivo cachespec.xml.
- Cree un archivo de configuración de colocación en memoria caché.
En el directorio <raíz_servidor_aplicaciones>/properties,
localice el archivo cachespec.sample.xml.
- Copie el archivo cachespec.sample.xml con el nombre
cachespec.xml en el directorio WEB-INF del módulo
web o el directorio META-INF del enterprise bean.
- Defina los elementos de entrada de la memoria caché necesarios para identificar los objetos que se pueden almacenar en memoria caché. Consulte el tema sobre el archivo cachespec.xml para obtener una lista de elementos.
- Desarrolle las reglas de ID de memoria caché.
Para almacenar en
memoria caché objetos, WebSphereApplication Server debe saber cómo generar
identificadores únicos para distintas invocaciones de ese objeto.
El elemento
<cache-id> efectúa esta tarea.
Cada entrada de memoria caché puede tener varias reglas de ID
de memoria caché que se ejecutan en orden hasta que una regla devuelve un ID de
memoria caché que no está vacío o hasta que no quedan más reglas por ejecutar. Si ninguna regla de generación de ID de memoria caché genera un ID de memoria caché
válido, el objeto no se almacena en memoria caché. Desarrolle los identificadores de memoria caché de uno de estos dos modos:
- Utilice el elemento <component> definido en la política de memoria caché
de una entrada de memoria caché (recomendado). Consulte el tema que
trata sobre el archivo cachespec_xml para obtener más información
sobre el elemento <component>.
- Escriba código Java™ personalizado para crear el identificador a partir de
variables de entrada y el estado del sistema. Para configurar la entrada de memoria caché para utilizar el generador de identificadores,
especifique IdGenerator en el archivo XML utilizando el distintivo
<idgenerator>, por ejemplo:
<cache-entry>
<class>servlet </class>
<name>/servlet/CommandProcessor</name>
<cache-id>
<idgenerator>com.mycompany.SampleIdGeneratorImpl</idgenerator>
<timeout>60</timeout>
</cache-id>
</cache-entry>
- Especifique las reglas de ID de dependencia. Utilice elementos de identificación de dependencia para especificar identificadores de grupos de memoria caché adicionales que asocian varias entradas de memoria caché al mismo identificador de grupo.
El identificador de dependencia se genera concatenando la serie base de identificador de dependencia
con los valores devueltos por sus elementos componentes. Si un componente necesario
devuelve un valor nulo, entonces no se genera el identificador de dependencia completo y no se utiliza. Puede validar los ID de dependencia explícitamente a través de la API de
memoria caché dinámica, o utilizar otro elemento <invalidation> de entrada de
memoria caché.
Pueden existir varias reglas de identificación de
dependencia por entrada de memoria caché. Todas las reglas de identificación de
dependencia se ejecutan por separado. Consulte el tema sobre el archivo cachespec.xml para obtener una lista de elementos <component>.
- Invalide otras entradas de memoria caché como un efecto lateral del inicio de
este
objeto, si es pertinente. Puede definir reglas de invalidación exactamente del mismo modo que los identificadores de
dependencia. No obstante, los identificadores que se generan mediante reglas de
invalidación si utilizan para invalidar entradas de memoria caché que tienen esos
mismos identificadores de dependencia.
El identificador de invalidación
se genera concatenando la serie de identificadores de invalidación base con los valores
devueltos por su elemento componente. Si un componente necesario devuelve un valor
nulo, no se generará el identificador de invalidación completo y no se producirá la invalidación. Pueden existir varias reglas de invalidación por entrada de memoria caché. Todas las reglas de invalidación se ejecutan por separado.
- Compruebe que la política de memoria caché esté funcionando correctamente. Puede modificar las políticas dentro del archivo cachespec.xml mientras se
ejecuta la aplicación. La memoria caché dinámica vuelve a cargar automáticamente
el archivo actualizado. Si va a almacenar en memoria caché contenido estático y
va a añadir la política de memoria caché a una aplicación por primera vez, debe
reiniciar la aplicación. No tiene que reiniciar el servidor de aplicaciones
para activar la nueva política de memoria caché. Si desea obtener más
información, consulte el tema Verificación de la página almacenable en memoria caché.
Qué hacer a continuación
Generalmente, se declaran varios elementos
<cache-entry> dentro de un
archivo
cachespec.xml.
Cuando se detectan nuevas versiones de cachespec.xml,
se sustituyen las antiguas políticas. Los objetos almacenados en memoria caché
mediante el archivo de política anterior no se invalidan automáticamente de
memoria caché, se reutilizan con la nueva política o se eliminan de memoria caché
mediante su algoritmo de sustitución.
Para cada unos de los tres ID (memoria caché,
dependencia, invalidación) generados por entradas de memoria caché, una
<cache-entry> puede contener varios elementos. La memoria caché dinámica
ejecuta las reglas <cache-id> en orden, y la primera que genera correctamente
un ID se utiliza para almacenar en memoria caché dicha salida. Si el objeto se va a
almacenar en la memoria caché, cada uno de los elementos <dependency-id> se
ejecuta para crear un conjunto de ID de dependencia para dicha entrada de memoria caché. Finalmente, cada uno de los elementos <invalidation> que genera una lista de
identificadores que invalida la memoria caché dinámica, tanto si se encuentra o no este
objeto en memoria caché.