Vous pouvez configurer les deux implémentations DataCache et QueryCache pour OpenJPA.
Avant de commencer
- Vous devez déterminer la topologie du plug-in de cache JPA à utiliser. Voir Plug-in de cache niveau 2 (L2) JPA pour plus d'informations sur les différentes configurations et propriétés à définir pour chaque topologie.
- Vous devez disposer d'une application utilisant les API JPA. Si vous souhaitez utiliser les API WebSphere eXtreme Scale pour accéder aux données avec JPA, utilisez le chargeur JPA. Pour plus d'informations, voir
Configuration des chargeurs JPA.
Procédure
- Définissez les propriétés dans le fichier persistence.xml pour configurer le plug-in de cache OpenJPA : Vous pouvez définir ces propriétés dans l'implémentation de cache DataCache ou Query.
Les configurations de DataCache
et de QueryCache sont indépendantes l'une de l'autre. Vous pouvez activer l'une ou l'autre. Mais, si les deux configurations sont
activées, la configuration de QueryCache utilisera celle de
DataCache et ses propriétés à elle seront ignorées.
<property name="openjpa.DataCache"
value="<object_grid_datacache_class(<propriété>=<valeur>,...)"/>
ou
<property name="openjpa.QueryCache"
value="<object_grid_querycache_class(<propriété>=<valeur>,...)"/>
Remarque : Vous pouvez activer le configuration QueryCache pour les topologies intradomaines intégrées et non intégrées uniquement.
Dans la liste de la classe de cache ObjectGrid, vous pouvez spécifier la propriété ObjectGridName,
la propriété ObjectGridType ou toute autre propriétés en rapport avec des règles de déploiement simple
pour personnaliser la configuration du cache. Exemple :
<property name="openjpa.DataCache"
value="com.ibm.websphere.objectgrid.openjpa.ObjectGridDataCache(
ObjectGridName=BasicTestObjectGrid,ObjectGridType=EMBEDDED,
maxNumberOfReplicas=4)"/>
<property name="openjpa.QueryCache"
value="com.ibm.websphere.objectgrid.openjpa.ObjectGridQueryCache()"/>
<property name="openjpa.RemoteCommitProvider" value="sjvm"/>
Voir
Propriétés de configuration du cache JPA pour la liste des propriétés que vous pouvez définir.
- Dans le fichier persistence.xml, vous devez affecter à la propriété openjpa.RemoteCommitProvider la valeur sjvm.
<property name="openjpa.RemoteCommitProvider" value="sjvm"/>
- Facultatif : Pour personnaliser davantage la grille de données utilisée par le cache, vous pouvez fournir des paramètres supplémentaires avec des fichiers XML.
Dans
la plupart des cas, la définition des propriétés du cache est amplement suffisante.
Pour personnaliser davantage l'ObjectGrid utilisé par le cache, vous pouvez fournir des fichiers XML de configuration OpenJPA ObjectGrid dans le répertoire META-INF, similairement au fichier persistence.xml. Pendant l'initialisation, le cache tente de localiser ces fichiers XML et les traite s'il les trouve.
Il existe trois types de fichiers XML de configuration OpenJPA ObjectGrid :
- openjpa-objectGrid.xml (ObjectGrid configuration)
Chemin du fichier : META-INF/openjpa-objectGrid.xml
Ce fichier sert à personnaliser une configuration d'ObjectGrid de type
EMBEDDED ou de type EMBEDDED_PARTITION. Si l'ObjectGrid est de type REMOTE, ce fichier
est ignoré.
Par défaut, chaque classe d'entité est mappée à sa propre configuration BackingMap
désignée au sein de la configuration de l'ObjectGrid sous le nom de la classe.
Ainsi, la classe d'entité com.mycompany.Employee sera mappée
à la configuration BackingMap com.mycompany.Employee. La configuration BackingMap
par défaut est readOnly="false", copyKey="false", lockStrategy="NONE"
et copyMode="NO_COPY". Vous pouvez tout à fait personnaliser des
mappes de sauvegarde avec la configuration que vous choisissez. Le mot clé réservé ALL_ENTITY_MAPS
représente tous les mappages à l'exclusion des mappages personnalisés répertoriés
dans le fichier openjpa-objectGrid.xml. Les mappes de sauvegarde
qui ne figurent pas dans ce fichier openjpa-objectGrid.xml
utilisent la configuration par défaut. Si les mappes de sauvegarde personnalisées ne spécifient pas
l'attribut ou les propriétés BackingMaps et que ces attributs sont spécifiés
dans la configuration par défaut, ce sont les valeurs des attributs dans cette configuration qui s'appliquent. Par exemple,
si une classe d'entité est annotée avec timeToLive=30, la configuration BackingMap par défaut
de cette entité aura un timeToLive=30.
Si le fichier personnalisé openjpa-objectGrid.xml inclut également
la mappe de sauvegarde mais sans spécifier de valeur pour timeToLive value,
la mappe personnalisée aura la valeur timeToLive=30
qui est la valeur par défaut. Le fichier openjpa-objectGrid.xml
a pour finalité de remplacer ou d'étendre la configuration par défaut.
- openjpa-objectGridDeployment.xml (stratégie de déploiement)
Chemin du fichier : META-INF/openjpa-objectGridDeployment.xml
Ce fichier sert à personnaliser la règle de déploiement. Lorsque celle-ci est personnalisée,
si le fichier openjpa-objectGridDeployment.xml
est fourni, la règle de déploiement par défaut est ignorée. Toutes les valeurs d'attribut de la stratégie de déploiement proviennent du fichier openjpa-objectGridDeployment.xml fourni.
- openjpa-objectGrid-client-override.xml (configuration de remplacement ObjectGrid client)
Chemin du fichier : META-INF/openjpa-objectGrid-client-override.xml
Ce fichier sert à personnaliser un ObjectGrid côté client. Par défaut,
le cache de l'ObjectGrid applique une configuration par défaut de substitution des ObjectGrid par les clients,
qui désactive les caches locaux (near cache). Si une application a besoin
d'un cache local, elle peut fournir ce fichier en y spécifiant numberOfBuckets="xxx".
Le remplacement de client par défaut désactive le cache local en définissant numberOfBuckets="0".
Pour activer le cache local, il suffit de donner à numberOfBuckets une valeur
supérieure à 0 dans le fichier openjpa-objectGrid-client-override.xml.
Le fonctionnement du fichier openjpa-objectGrid-client-override.xml
est semblable à celui du fichier openjpa-objectGrid.xml.
Le fichier remplace ou étend la configuration d'ObjectGrid.
Pour personnaliser cette topologie, vous pouvez fournir le fichier XML adapté au type de l'
eXtreme Scale configuré.
Pour le type EMBEDDED comme pour le type EMBEDDED_PARTITION,
vous pouvez fournir n'importe lequel de ces trois fichiers XML pour personnaliser
l'ObjectGrid, la règle de déploiement et la configuration de la substitution des ObjectGrid clients.
Dans le cas d'un ObjectGrid REMOTE, le cache ne crée pas d'ObjectGrid dynamique. Le cache ne contient en fait qu'un ObjectGrid côté client provenant du service de catalogue. Dans ce cas, vous pouvez fournir que le fichier openjpa-objectGrid-client-override.xml
qui personnalisera la configuration de la substitution de l'ObjectGrid client.
- Facultatif : (Configurations distantes uniquement) Définissez un système eXtreme Scale externe si vous voulez configurer un cache avec un type REMOTE ObjectGrid.
Afin de pouvoir configurer un cache d'ObjectGrid de type REMOTE, vous devez configurer un système externe eXtreme Scale. Pour configurer ce système externe, vous aurez besoin des deux fichiers XML de configuration ObjectGrid et
ObjectGridDeployment basés sur un fichier persistence.xml. Pour des exemples de ces fichiers de configuration, voir Exemple : fichiers XML OpenJPA ObjectGrid.
Résultats
Configuration EMBEDDED, EMBEDDED_PARTITION,
ou intra-domaine :
Lors du démarrage d'une application, le plug-in détecte automatiquement un service de catalogue ou en démarre un, démarre un serveur de conteneur et connecte les serveurs de conteneur au service de catalogue. Le plug-in communique alors avec le
conteneur ObjectGrid et ses homologues exécutés dans d'autres processus de
serveur d'applications à l'aide de la connexion client.
Configuration REMOTE :
La stratégie de déploiement est spécifiée séparément de l'application JPA.
Un système ObjectGrid externe comporte le service de catalogue et les processus de serveurs de conteneur. Vous devez démarrer le service de catalogue avant les serveurs de conteneur. Pour plus d'informations,
reportez-vous aux rubriques Démarrage des serveurs autonomes et Démarrage des serveurs de conteneur.
Que faire ensuite
- Développez une application OpenJPA qui utilise la configuration. Pour plus d'informations, voir Exemple: Utilisation du plug-in Hibernate pour précharger les données dans le cache ObjectGrid.
- Dans un environnement de production, créez des domaines de service de catalogue pour les processus automatiquement créés pour votre configuration EMBEDDED ou EMBEDDED_PARTITION.
- Environnement autonome :
Si vous n'exécutez pas vos serveurs dans un processus WebSphere
Application Server,
les hôtes et les ports du domaine de service de catalogue sont spécifiés à l'aide du fichier de propriétés objectGridServer.properties. Ce fichier doit
être stocké dans le chemin d'accès aux classes de l'application et la propriété
catalogServiceEndPoints doit être définie. Le domaine de service de catalogue est démarré indépendamment des processus d'application et doit être démarré avant les processus d'application.
Le
format du fichier objectGridServer.properties est le
suivant :
catalogServiceEndPoints=<hostname1>:<port1>,<hostname2>:<port2>
- Environnement WebSphere
Application Server :
Lors d'une exécution à l'intérieur d'un processus WebSphere
Application Server, le plug-in de cache JPA se connecte automatiquement au service de catalogue (ou au domaine de service de catalogue) qui est défini pour la cellule WebSphere
Application Server.
- Si vous
utilisez le type de grille d'objets EMBEDDED ou
EMBEDDED_PARTITION dans un environnement Java SE, utilisez la méthode
System.exit(0) à la fin du programme pour arrêter le serveur
eXtreme Scale imbriqué. Sinon, le programme peut ne pas répondre.