Puede habilitar la memoria caché para utilizar el plug-in de memoria caché Hibernate especificando los archivos de propiedades.
Antes de empezar
- Debe determinar la topología de plug-in de memoria caché JPA que desea utilizar. Consulte Plug-in de memoria caché de nivel 2 (L2) JPA para obtener más información sobre las distintas configuraciones.
- Debe tener una aplicación que utiliza las API JPA. Si desea utilizar API WebSphere eXtreme
Scale para acceder a datos con JPA, utilice el cargador JPA. Para obtener más información, consulte Configuración de cargadores JPA.
Procedimiento
- Si está utilizando WebSphere Application Server,
coloque los archivos de archivado Java (JAR) en las ubicaciones correspondientes para su configuración.
El plug-in de memoria caché Hibernate está empaquetado en el archivo oghibernate-cache.jar y se instala en el directorio raíz_was/optionalLibraries/ObjectGrid.
Para utilizar el plug-in de memoria caché Hibernate, debe incluir el archivo oghibernate-cache.jar en la biblioteca Hibernate. Por ejemplo, si incluye la biblioteca Hibernate en la aplicación, debe incluir también el archivo oghibernate-cache.jar.
Si define una biblioteca compartida para incluir la biblioteca Hibernate, debe añadir el archivo oghibernate-cache.jar en el directorio de la biblioteca compartida.
eXtreme Scale no instala el archivo cglib.jar en el entorno de WebSphere Application Server.
Si tiene aplicaciones o bibliotecas compartidas existentes como, por ejemplo, Hibernate, que dependen del archivo cglib.jar, localice el archivo cglib.jar e inclúyalo en la classpath. Por ejemplo, si la aplicación incluye todos los archivos JAR de biblioteca Hibernate, pero excluye el archivo cglib.jar disponible con Hibernate, debe incluir el archivo cglib.jar que procede de Hibernate en la aplicación.
- Establezca las propiedades en el archivo persistence.xml para configurar el plug-in de memoria caché Hibernate
A continuación se muestra la sintaxis para establecer las propiedades en el archivo persistence.xml:
<property name="hibernate.cache.provider_class"
value="com.ibm.websphere.objectgrid.hibernate.cache.ObjectGridHibernateCacheProvider" />
<property name="hibernate.cache.use_query_cache" value="true"/>
<property name="objectgrid.configuration" value="<property>=<value>,..." />
<property name="objectgrid.hibernate.regionNames" value="<regionName>,.." />
- hibernate.cache.provider_class: El valor de la propiedad
provider_class es la clase
com.ibm.websphere.objectgrid.hibernate.cache.ObjectGridHibernateCacheProvider.
- hibernate.cache.use_query_cache: para habilitar la memoria caché de consulta, establezca el valor en true en la propiedad use_query_cache.
Nota: Sólo
puede habilitar la memoria caché de consulta para topologías incorporadas e internas de dominio
incorporadas.
- objectgrid.configuration: utilice la propiedad objectgrid.configuration
para especificar las propiedades de configuración de memoria caché
de eXtreme Scale, incluido
el atributo ObjectGridType que especifica cómo colocar los fragmentos en la
cuadrícula de datos.
Debe especificar un valor de propiedad ObjectGridName exclusivo para evitar posibles conflictos de denominación. Las otras propiedades de configuración de la memoria caché de eXtreme Scale son opcionales.
Para habilitar el almacenamiento en memoria caché de grabación diferida, utilice los siguientes atributos de grabación diferida en la propiedad de configuración objectgrid.configuration. Cuando está habilitado el almacenamiento en memoria caché con escritura diferida, las actualizaciones se almacenan temporalmente en un almacenamiento de datos con ámbito de JVM hasta que se cumplen las condiciones de writeBehindInterval o writeBehindMaxBatchSize, cuando los datos se vacían en la memoria caché.
writeBehind=true, writeBehindInterval=5000, writeBehindPoolSize=10, writeBehindMaxBatchSize=1000
Atención: A no ser que esté habilitado writeBehind, se
omiten los demás valores de configuración de grabación diferida.
Para obtener más información sobre los valores que puede establecer en la propiedad objectgrid.configuration,
consulte Propiedades de configuración de la memoria caché JPA.
- objectgrid.hibernate.regionNames: la propiedad objectgrid.hibernate.regionNames
es óptima y se debe especificar cuando los valores de regionNames
se definen después de la inicialización de la memoria caché de eXtreme Scale. Considere el ejemplo de una clase de entidad que se ha correlacionado con un regionName con la clase de entidad no especificada en el archivo persistence.xml o no incluida en el archivo de correlaciones Hibernate. De forma adicional, tiene una anotación Entity. El regionName para esta clase de entidad se resuelve al cargar la clase cuando se inicializa la memoria caché de eXtreme Scale. Otro ejemplo es el método Query.setCacheRegion(String
regionName) que se ejecuta después de la inicialización de la memoria caché de eXtreme Scale.
En estas situaciones, incluya todos los regionNames dinámicos posibles determinados en la propiedad objectgrid.hibernate.regionNames de forma que la memoria caché de eXtreme Scale puede preparar las BackingMaps para todos los regionNames.
- Opcional: Para personalizar adicionalmente la cuadrícula de datos utilizada por la memoria caché, puede proporcionar valores adicionales con archivos XML.
Para la mayoría de los escenarios, definir las propiedades de memoria caché debería ser suficiente. Para personalizar de forma adicional el ObjectGrid utilizado por la memoria caché, puede proporcionar archivos XML de configuración de
ObjectGrid Hibernate en el directorio META-INF de forma similar al archivo persistence.xml. Durante la inicialización, la memoria caché intenta localizar estos archivos XML y procesarlos si se encuentran.
Existen tres tipos de archivos XML de configuración de ObjectGrid Hibernate:
- hibernate-objectGrid.xml (configuración de ObjectGrid)
Vía de acceso del archivo: META-INF/hibernate-objectGrid.xml
De manera predeterminada, cada clase de entidad tiene un
regionName asociado (el valor predeterminado es el nombre de la clase de
entidad) que se correlaciona con una configuración de BackingMap de nombre
regionName dentro de la configuración de ObjectGrid. Por ejemplo, la clase de
entidad com.mycompany.Employee tiene un valor predeterminado de regionName
asociado como com.mycompany.Employee BackingMap. La configuración predeterminada de BackingMap es readOnly="false", copyKey="false", lockStrategy="NONE" y copyMode="NO_COPY". Puede personalizar algunos BackingMaps con una configuración elegida. La palabra clave reservada "ALL_ENTITY_MAPS" se puede utilizar para representar todas las correlaciones, excepto otras correlaciones personalizadas listas en el archivo hibernate-objectGrid.xml. Los BackingMaps que no aparecen listados en este archivo hibernate-objectGrid.xml utilizan la configuración predeterminada.
- hibernate-objectGridDeployment.xml (política de despliegue)
Vía de acceso del archivo: META-INF/hibernate-objectGridDeployment.xml
Este archivo se utiliza para personalizar la política de despliegue. Al personalizar la política de despliegue, si se proporciona hibernate-objectGridDeployment.xml, se descarta la política predeterminada de despliegue. Todos los valores del atributo de la política de despliegues procederán del archivo hibernate-objectGridDeployment.xml proporcionado.
- hibernate-objectGrid-client-override.xml (configuración de sustitución de
ObjectGrid de cliente)
Vía de acceso del archivo: META-INF/hibernate-objectGrid-client-override.xml
Este archivo se utiliza para personalizar un ObjectGrid de cliente. De manera
predeterminada, la memoria caché ObjectGrid aplica una configuración de
alteración temporal de cliente predeterminada que inhabilita la memoria caché
cercana. Si la aplicación requiere una memoria caché cercana, puede proporcionar este archivo y especificar numberOfBuckets="xxx".
La alteración temporal del cliente predeterminado inhabilita la memoria caché cercana estableciendo numberOfBuckets="0".
La memoria caché cercana se puede activar si se restablece el atributo numberOfBuckets en un valor mayor que cero con el archivo hibernate-objectGrid-client-override.xml.
La forma en la que trabaja el archivo hibernate-objectGrid-client-override.xml es
similar a hibernate-objectGrid.xml:
Altera temporalmente o amplía la configuración predeterminada de alteración temporal de ObjectGrid de cliente.
En función de la topología configurada de
eXtreme Scale, puede proporcionar cualquier de es tos tres archivos XML para personalizar dicha topología.
Para ambos tipos, EMBEDDED y EMBEDDED_PARTITION, puede proporcionar cualquiera de los tres archivos XML para personalizar el ObjectGrid, la política de despliegue y la configuración de alteración temporal de
ObjectGrid de cliente.
Para un
ObjectGrid REMOTE, la memoria caché no crea ningún ObjectGrid dinámico.
La memoria caché sólo obtiene un ObjectGrid de cliente del servicio de catálogo.
Sólo puede proporcionar un archivo hibernate-objectGrid-client-override.xml para personalizar la configuración de alteración temporal de ObjectGrid de cliente.
- Opcional: (Solo configuraciones remotas) Configure un sistema eXtreme Scale externo si desea configurar una memoria caché con un tipo de ObjectGrid REMOTE.
Debe configurar un sistema eXtreme Scale externo si desea configurar una memoria caché con un tipo de ObjectGrid REMOTE. Necesita ambos archivos XML de configuración de ObjectGrid y, también, de ObjectGridDeployment que se basan en el archivo persistence.xml para configurar un sistema externo. Para ver ejemplos de estos archivos de configuración, consulte Ejemplo: Archivos XML de ObjectGrid Hibernate.
Resultados
Configuración EMBEDDED o EMBEDDED_PARTITION:
Cuando se inicia una aplicación, el plug-in detecta o inicia automáticamente un servicio de catálogo, inicia un servidor de contenedor y conecta los servidores de contenedor al servicio de catálogo. El plug-in se comunica con el contenedor ObjectGrid y sus iguales que se ejecutan en otros procesos de servidor de aplicaciones mediante la conexión de cliente.
Cada entidad JPA tiene una correlación de respaldo independiente asignada utilizando el nombre de clase de la entidad.
Cada
BackingMap tiene los atributos siguientes:
- readOnly="false"
- copyKey="false"
- lockStrategy="NONE"
- copyMode="NO_COPY"
Configuración REMOTE:
La política de despliegue se especifica aparte de la aplicación JPA.
Un sistema de ObjectGrid externo tiene tanto procesos de servicio de catálogo como de servidor de contenedor. Debe iniciar un servicio de catálogo antes de iniciar servidores de contenedor. Consulte Inicio de los servidores autónomos y Inicio de servidores de contenedor para obtener más información.
Qué hacer a continuación
- Desarrolle una aplicación Hibernate que utilice la configuración. Para obtener más información, consulte Ejemplo: Utilización del plug-in Hibernate para precargar datos en la memoria caché de ObjectGrid.
- En un entorno de producción, cree dominios de servicio de catálogo para los procesos creados automáticamente para la configuración EMBEDDED o EMBEDDED_PARTITION.
- Entorno autónomo:
Si no se ejecutan los servidores dentro de un proceso WebSphere Application Server, los hosts y los puertos del dominio de servicio de catálogo se especifican utilizando el archivo de propiedades denominado objectGridServer.properties. Este archivo se debe almacenar en la classpath de la aplicación y tiene definida la propiedad catalogServiceEndPoints. El dominio de servicio de catálogo se inicia independientemente de los procesos de la aplicación y se debe iniciar antes de que se inicien los procesos de la aplicación.
el formato del archivo objectGridServer.properties es el siguiente:
PuntosFinalesServicioCatálogos=<nombrehost>:<puerto1>,<nombrehost2>:<puerto2>
- Entorno de WebSphere Application Server:
Si se ejecuta
dentro de un proceso WebSphere Application Server, el plug-in
de memoria caché JPA se conecta automáticamente el servicio de catálogo o al dominio de servicio de catálogo definido para la célula de WebSphere Application Server.
- Cuando se utiliza un valor de ObjectGridType EMBEDDED o EMBEDDED_PARTITION en un entorno Java SE, utilice el método System.exit(0) al final del programa para detener el servidor eXtreme Scale incorporado. De lo contrario, el programa puede dejar de responder.