Fournisseur de cache dynamique pour le cache de niveau 2 JPA 2.0

Vous allez apprendre à utiliser le service de cache dynamique de WebSphere Application Server en tant que fournisseur de cache de niveau 2 (L2) Java Persistence API (JPA). JPA 2.0 a normalisé l'interface de cache L2. WebSphere Application Server prend en charge la norme JPA. Le service de cache dynamique se branche en tant que fournisseur de cache de niveau 2 sur JPA. Le cache L2 optimise les performances de votre application JPA, et vous pouvez configurer et contrôler le service de cache dynamique pour votre application JPA dans l'environnement WebSphere Application Server.

Un fournisseur de cache L2 JPA de cache dynamique pour JPA 2.0 partage des états d'entité entre différents contextes de persistance, différentes transactions et différents utilisateurs. Lorsque la mise en cache est activée, les entités introuvables dans le contexte de persistance sont chargées à partir du cache L2. Avec la mise en cache L2, les entités actuellement chargées n'ont pas besoin d'accéder aux bases de données. Pour en savoir plus sur la mise en cache L2, voir la spécification JPA 2.0.

Avertissement : La mise en cache L2 augmente la consommation en mémoire de l'application ; par conséquent, il est important de limiter la taille de la cache L2. En outre, des données périmées peuvent exister pour des objets mis à jour dans un environnement en cluster. Configurez la mise en cache L2 pour les entités principalement à lecture et peu modifiées. Les caches L2 ne sont pas recommandés pour les entités mises à jour fréquemment et simultanément.

JPA utilise plusieurs caches L2 configurables pour maximiser les performances. Le cache de données JPA est un cache de données d'objets persistants qui fonctionne au niveau d'EntityManagerFactory. Lorsqu'il est activé, le cache de données est vérifié avant d'effectuer un aller vers le magasin de données. Des données sont stockées dans le cache lorsque des objets sont validés et lorsque des objets persistants sont chargés à partir du magasin de données. Outre le cache de données, JPA définit des interfaces de fournisseur de service pour un cache de requête.

La cache de requête stocke les ID objet renvoyés par les exécutions de requête. Lorsque vous exécutez une requête, JPA assemble une clé basée sur les propriétés de la requête et les paramètres utilisés au moment du lancement, puis recherche un résultat de requête mise en cache. Si un résultat est trouvé, les ID objet dans le résultat mis en cache sont recherchés et les objets ayant une capacité de persistance qui sont trouvés sont renvoyés. Sinon, la requête est exécutée sur la base de données et les ID objet qui sont chargés par la requête sont placés dans le cache. La liste des ID objet n'est pas mise en cache tant que la liste renvoyée au moment du lancement de la requête n'est pas complètement parcourue.

Le fournisseur de cache dynamique de WebSphere constitue une alternative de choix par rapport aux fournisseurs de cache de requête et de données concurrentes par défaut dans WebSphere Application Server, en raison des fonctions à valeur ajoutée du service de cache dynamique, telles que son propre jeu de fonctions et les fonctionnalités hérités de WebSphere Application Server. Le cache dynamique offre les avantages suivants :
  • Synchronisation et réplication de cache distribué sur les clusters via les services DRS (Data Replication Service) et HA (High-Availability) de WebSphere Application Server.
  • Surveillance de cache de requête et de cache de données sophistiquée et avancée, optimisation et administration du cache. Le cache L2 hérite de l'ensemble de l'écosystème des outils de cache dynamique disponibles.
  • Prise en charge z/OS de la région serviteur native.
  • Performances égales sinon supérieures à celle du fournisseur de cache par défaut.

La norme JPA fournit des alias qui permettent de configurer facilement les plug-ins JPA. Le fournisseur de cache L2 de cache dynamique pour JPA 2.0 est généralement configuré avec l'alias dynacache. Vous pouvez utiliser l'alias dynacache pour définir les propriétés DataCache et QueryCache de JPA. Si la propriété QueryCache est définie pour utiliser l'alias dynacache, la propriété DataCache utilisera également cet alias. Vous pouvez configurer les propriétés QueryCache et DataCache pour qu'elles utilisent différents types de fournisseur de cache. Vous pouvez définir la valeur par défaut pour la propriété QueryCache et définir le cache dynamique pour la propriété DataCache ou inversement. Dans l'idéal, il est recommandé de définir le service de cache dynamique de WebSphere Application Server pour les propriétés DataCache, QueryCache et DataCacheManager. Si la valeur de la propriété DataCache est dynacache, le fournisseur RemoteCommitProvider est sans effet car les services DRS et HA sont optimisés pour effectuer la synchronisation de cache. Vous ne pouvez pas activer la propriété QueryCache séparément de DataCache. La propriété QueryCache tire profit de la disponibilité de la propriété DataCache où les données d'entité sont mises en cache.

Configuration du fournisseur L2 de cache dynamique JPA (méthode de base)

Activez le service de cache dynamique comme fournisseur de cache L2 pour JPA 2.0 en définissant dynacache pour certaines ou la totalité des propriétés suivantes : OpenJPA openjpa.QueryCache, openjpa.DataCache et openjpa.DataCacheManager. Cette configuration par défaut convient à la plupart des environnements.
<property name="openjpa.DataCache" value="dynacache(CacheSize=1000)"/>
<property name="openjpa.QueryCache" value="dynacache"/> 
<property name="openjpa.DataCacheManager" value="dynacache"/>
Tableau 1. Noms de propriété et alias. Noms de propriété qualifié complet et alias du cache dynamique.
Nom du cache dynamique Nom de la propriété 2e appel
Fournisseur de cache DataCache com.ibm.ws.cache.openjpa. DynacacheDataCache dynacache
Fournisseur de cache QueryCache com.ibm.ws.cache.openjpa. DynacacheQueryCache dynacache
RemoteCommitProvider com.ibm.ws.cache.openjpa. NoOpRemoteCommitProvider aucun
DataCacheManager com.ibm.ws.cache.openjpa. DynacacheDataCacheManager dynacache

Configuration du fournisseur L2 de cache dynamique JPA (méthode avancée)

Configurez l'instance de cache dynamique pour le cache de requête ou de données L2 JPA 2.0 avec des propriétés de configuration supplémentaires ou avancées dans l'unité persistante (méthode avancée). Activez le service de cache dynamique comme fournisseur de cache L2 pour JPA 2.0 en définissant dynacache pour certaines ou la totalité des propriétés suivantes : OpenJPA openjpa.QueryCache, openjpa.DataCache et openjpa.DataCacheManager.
<property name="openjpa.DataCache" value="dynacache(CacheName="myJPACache", 
                                                    CacheSize=1000, 
                                                    EnableDiskOffload=true, 
                                                    DiskCacheSizeInGB=4, 
                                                    DiskOffloadLocation=c:\temp, 
                                                    EnableCacheReplication=true)"/> 
Tableau 2. Noms et valeurs des propriétés de cache dynamique. Propriétés de l'instance de cache dynamique qui peuvent être configurées dans l'unité persistante.
Propriétés personnalisées de cache dynamique Valeurs par défaut
CacheName Valeur par défaut
CacheSize 2000
EnableDiskOffload false
EnableCacheReplication false
DiskCacheSizeInGB non applicable
DiskOffloadLocation non applicable
ReplicationType 1, 2 ou 4. 1 signifie NOT_SHARED, 2 PUSH et PUSH_PULL
Important : Les propriétés indiquées dans le tableau ne sont pas obligatoires. Si elles ne sont pas spécifiées, le service de cache dynamique prend des valeurs par défaut appropriées pour la plupart des utilisateurs.
L'exemple suivant est un modèle de démonstration des opérations de bean géré de cache dynamique destinées à l'introspection du cache L2 :
wsadmin>set mbean [$AdminControl queryNames type=DynaCache,*]

wsadmin> $AdminControl invoke $mbean getCacheIDsInMemory {default \S}
66
71
10
A5614-67

wsadmin> $AdminControl invoke $mbean getJPACacheStatistics {OpenBooks openbooks.war OpenBooks default}
HIT_COUNT=0
TOTAL_HIT_COUNT=0
READ_COUNT=5
TOTAL_READ_COUNT=5
WRITE_COUNT=4
TOTAL_WRITE_COUNT=4

wsadmin> $AdminControl invoke $mbean getJPACacheStatistics {OpenBooks openbooks.war OpenBooks default openbook.domain.Customer}
HIT_COUNT=0
TOTAL_HIT_COUNT=0
READ_COUNT=0
TOTAL_READ_COUNT=0
WRITE_COUNT=1
TOTAL_WRITE_COUNT=1
Vous pouvez également utiliser le moniteur de cache étendu pour afficher le contenu de l'ID et des valeurs de clé du cache placés dans le cache par le module d'exécution JPA.

Utilisation du fournisseur de cache L2 du cache dynamique dans un environnement en cluster

Les clients peuvent couramment définir une instance de cache dans WebSphere Application Server et référencer ce nom dans la propriété CacheName de la valeur de propriété JPA DataCache. Vous pouvez définir une instance de cache d'objet à l'aide du fichier cacheinstances.properties, de la propriété DistributedMapFactory ou de la console d'administration.

Toutes les propriétés sont facultatives et si elles ne sont pas spécifiées, les propriétés par défaut sont utilisées. Si l'instance de cache n'existe pas, le service de cache dynamique crée l'instance de cache. La configuration avancée pour une instance QueryCache Dynacache est exécutée de façon similaire.

Le cache de données de JPA fonctionne à la fois dans un environnement à machine virtuelle Java unique et dans un environnement à plusieurs machines virtuelles Java. Le service DRS (Data Replication Service) permet d'effectuer la mise en cache sur plusieurs machines virtuelles dans un environnement WebSphere Application Server, Network Deployment en cluster.

Pour les entités et les requêtes des instances DataCache et QueryCache du cache dynamique qui sont répliquées sur des serveurs dans un environnement WebSphere Application Server, Network Deployment à l'aide du service DRS, configurez un domaine de réplication et associez celui-ci à l'instance de cache. En outre, la propriété openjpa.RemoteCommitProvider openJPA de l'unité persistante doit avoir pour valeur none.

Répliquez une instance de cache dynamique L2 OpenJPA, comme suit :
  1. Créez un domaine de réplication dans la console d'administration et associez-le à l'instance de cache baseCache via le panneau du service de cache dynamique sur tous les serveurs d'applications qui doivent partager le cache distribué. Le service de cache dynamique utilise ce domaine de réplication pour répliquer des données sur des serveurs qui appartiennent à ce dernier.
  2. Configurez l'instance de cache en affectant la valeur true à la propriété enableCacheReplication lorsque vous définissez la configuration de l'instance de cache. Si vous ne spécifiez pas la propriété replicationType, l'instance de cache est configurée par défaut avec le mode de partage NOT_SHARED, où seules les invalidations sont propagées. Vous pouvez configurer l'instance de cache avec les types de partage NOT_SHARED, PUSH et PUSH_PULL. Pour en savoir plus sur ce sujet, voir la rubrique sur la réplication de cache.
  3. Affectez la valeur true à la propriété personnalisée de machine virtuelle Java, com.ibm.ws.cache.CacheConfig.createCacheAtServerStartup, sur tous les serveurs d'applications appartenant au domaine de réplication. Cette propriété personnalisée permet un amorçage plus en amont et plus rapide des instances de cache JPA présentes sur des serveurs.
  4. Créez une bibliothèque partagée pour rendre les classes entité disponibles dans le chemin d'accès aux classes du serveur d'applications. Pour cela, définissez une bibliothèque partagée et associez-la au chargeur de classe du serveur. Cette étape est nécessaire pour permettre au service de cache dynamique et au service DRS de désérialiser les objets entité répliqués. Pour plus d'informations sur les bibliothèques partagées, voir les rubriques décrivant les collections de bibliothèques partagées, la gestion des bibliothèques partagées et l'association de bibliothèques partagées à des serveurs.
  5. Affectez la valeur none à openjpa.RemoteCommitProvider.
Vous pouvez également utiliser d'autres implémentations RemoteCommitProvider incluses avec le cache dynamique JPA 2.0, notamment les suivantes :
  • org.apache.openjpa.event.SingleJVMRemoteCommitProvider (configuré avec l'alias "sjvm")
  • org.apache.openjpa.event.TCPRemoteCommitProvider
  • org.apache.openjpa.event.JMSRemoteCommitProvider
Consultez les articles relatifs aux opérations à distance et hors ligne dans la documentation JPA.
Avertissement : Configurez le cache dynamique avec le service DRS pour la réplication des objets QueryCache et des données JPA et à l'aide de la propriété NoOpRemoteCommitProvider dans un environnement en cluster ou distribué.

Identification et résolution des problèmes lié au cache L2 JPA

Recherchez les messages suivants dans le fichier journal lorsque vous utilisez le service de cache dynamique comme fournisseur de cache JPA :
# Significant dynamic cache OpenJPA messages in the SystemOut.log file
DYNA1081I: OpenJPA L2 DataCache Dynacache instance \"{0}\" created or retrieved successfully for persistent unit \"{1}\".

# Applicable only if QueryCache is enabled 
DYNA1080I: OpenJPA L2 QueryCache Dynacache instance \"{0}\" created or retrieved successfully for persistent unit \"{1}\".
Remarque : Cette rubrique fait référence à un ou plusieurs des fichiers journaux de serveur d'applications. Il est recommandé de configurer le serveur de telle sorte qu'il utilise l'infrastructure de journalisation et de trace HPEL (High Performance Extensible Logging) à la place des fichiers SystemOut.log, SystemErr.log, trace.log et activity.log sur les systèmes distribués et IBM® i. Vous pouvez également utiliser HPEL conjointement avec vos fonctions de journalisation z/OS natives. Si vous utilisez l'infrastructure HPEL, vous pouvez accéder à toutes les informations de journalisation et de trace en utilisant l'outil de ligne de commande LogViewer à partir de votre répertoire bin de profil de serveur. Pour plus d'informations sur l'utilisation de HPEL, voir les informations sur l'utilisation de HPEL en vue du traitement des incidents liés aux applications.

Icône indiquant le type de rubrique Rubrique de référence



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rdyn_openjpa
Nom du fichier : rdyn_openjpa.html