Configuration d'un fournisseur de cache Spring

[Version 8.5 and later] Spring Framework Version 3.1 a introduit une nouvelle abstraction de cache. Celle-ci vous permet d'ajouter de manière transparente la mise en cache à une application Spring existante. Vous pouvez utiliser WebSphere eXtreme Scale comme fournisseur de cache pour l'abstraction de cache.

Avant de commencer

Pourquoi et quand exécuter cette tâche

A l'aide de l'abstraction de cache dans Spring Framework, vous pouvez réduire le nombre d'exécutions de votre méthode Java. Lorsqu'elle est configurée, les résultats d'une méthode particulière sont placés dans la mémoire cache. Quand la méthode est ré-exécutée à l'aide des mêmes arguments, l'abstraction vérifie la mémoire cache pour déterminer si les résultats de la méthode figurent déjà dans la mémoire cache. S'ils figurent dans la mémoire cache, il n'est pas nécessaire de ré-exécuter la méthode. La mise en oeuvre de l'abstraction peut réduire le nombre d'exécutions des méthodes coûteuses, ce qui réduit également le temps de réponse moyen de votre application.

Procédure

  1. Configurez vos serveurs de conteneur afin qu'ils utilisent les fichier de configuration de Spring.

    Vous devez démarrer les serveurs de conteneur avant le démarrage de l'application Spring qui accède à la mémoire cache. Pour démarrer les serveurs de conteneur, voir Démarrage des serveurs autonomes.

    Les fichiers de configuration XML par défaut permettant de démarrer un serveur de conteneur pour le fournisseur de cache eXtreme Scale Spring se trouvent dans l'un des emplacements suivants :
    • Installations autonomes : racine_install_wxs/ObjectGrid/spring/etc
    • Installations WebSphere Application Server : racine_was/optionalLibraries/ObjectGrid/spring/etc
    Les fichiers sont intitulés spring-remote-objectgrid.xml et spring-remote-deployment.xml. Vous pouvez utiliser ces fichiers en l'état, les personnaliser ou créer vos propres fichiers de configuration.
    Exécutez la commande suivante pour démarrer un serveur de conteneur autonome pour le fournisseur de cache eXtreme Scale Spring. Exécutez la commande suivante à partir du répertoire rép_base_wxs/ObjectGrid/bin :
    [Windows]
    startOgServer.bat container1 -objectGridFile ../spring/etc/spring-remote-objectgrid.xml 
    -deploymentPolicyFile ../spring/etc/spring-remote-deployment.xml

    [Unix]
    startOgServer.sh container1 -objectGridFile ../spring/etc/spring-remote-objectgrid.xml 
    -deploymentPolicyFile ../spring/etc/spring-remote-deployment.xml
  2. Configurez le conteneur Spring IoC (Inversion of Control) de sorte qu'il utilise WebSphere eXtreme Scale comme fournisseur de cache. L'implémentation du cache WebSphere eXtreme Scale réside sous le package com.ibm.websphere.objectgrid.spring. Définissez les beans ci-dessous dans votre configuration de conteneur Spring IoC.
    <bean id="wxsCSDomain" class="com.ibm.websphere.objectgrid.spring.ObjectGridCatalogServiceDomainBean"
      p:catalog-service-endpoints="CATALOG_SERVICE_ENDPOINTS" 
      p:client-override-xml="CLIENT_OVERRIDE_XML (facultatif)"
      p:client-security-config="CLIENT_SECURITY_CONFIG (facultatif)" />
    
    <bean id="wxsGridClient" class="com.ibm.websphere.objectgrid.spring.ObjectGridClientBean" 
      p:object-grid-name="OBJECT_GRID_NAME(facultatif)"
      p:catalog-service-domain-ref="wxsCSDomain" />
    
    <bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager">
      <property name="caches">
        <set>   
          <bean class="com.ibm.websphere.objectgrid.spring.ObjectGridCache"
             p:name="CACHE_NAME"
             p:map-name="MAP_NAME (facultatif)"
    	        p:object-grid-client-ref="wxsGridClient" />
         </set>
       </property>
    </bean>
    CATALOG_SERVICE_ENDPOINTS
    Spécifie l'hôte ORB (Object Request Broker) et le numéro de port.
    CLIENT_OVERRIDE_XML (facultatif)
    Indique le chemin d'accès relatif ou absolu à un fichier XML ObjectGrid dans lequel modifier les paramètres côté client sous la forme d'une ressource Spring. Pour plus d'informations sur la spécification des ressources dans Spring, voir Spring Framework Reference Documentation: Resources.

    Exemple : p:client-override-xml="file:/path/to/objectgrid.xml"

    Exemple : p:client-override-xml="classpath:com/example/app/override-objectgrid.xml"

    Exemple : p:client-override-xml="http://myserver/override-objectgrid.xml"

    Exemple : p:client-override-xml="ftp://myserver/override-objectgrid.xml"

    CLIENT_SECURITY_CONFIG (facultatif)
    Indique le chemin d'accès relatif ou absolu à un fichier client.properties sous la forme d'une ressource Spring. Pour plus d'informations sur la spécification des ressources dans Spring, voir Spring Framework Reference Documentation: Resources.

    Exemple : p:client-security-config="file:/path/to/client.properties"

    OBJECT_GRID_NAME (facultatif)
    Spécifie le nom d'ObjectGrid. Ce paramètre n'est pas requis si les serveurs de conteneur sont démarrés à l'aide des fichiers de configuration XML fournis. Ce paramètre doit être cohérent avec les fichiers de configuration XML qui sont utilisés pour le démarrage des serveurs de conteneur.
    CACHE_NAME
    Indique le nom du cache qui est spécifié dans votre application de mise en cache Spring.
    MAP_NAME (facultatif)
    Indique le nom de la mappe de sauvegarde pour une mémoire cache. Ce paramètre n'est pas requis si les serveurs de conteneur sont démarrés avec les fichiers de configuration XML fournis. Ce paramètre doit être compatible avec les fichiers de configuration XML utilisés pour le démarrage des serveurs de conteneur. Si vous utilisez les fichiers de configuration XML fournis, la valeur MAP_NAME n'est pas requise. Les mappes de la grille de données sont créées automatiquement lors de l'exécution de l'application Spring. Le nom de la mappe dynamique commence par IBM_SPRING_PARTITIONED_. Par exemple : IBM_SPRING_PARTITIONED_1, IBM_SPRING_PARTITIONED_2, etc.

Exemple

Le fragment suivant permet de créer deux caches, appelés default et books hébergés par le domaine de service de catalogue à l'adresse localhost:2809.
<bean id="wxsCSDomain" class="com.ibm.websphere.objectgrid.spring.ObjectGridCatalogServiceDomainBean" 
	p:catalog-service-endpoints ="localhost:2809" />  
<bean id="wxsGridClient" class="com.ibm.websphere.objectgrid.spring.ObjectGridClientBean"    
	p:catalog-service-domain-ref="wxsCSDomain" /> 
<bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager">  
	<property name="caches">   
		<set>    
			<bean class="com.ibm.websphere.objectgrid.spring.ObjectGridCache" 
				p:name="default"     
				p:object-grid-client-ref="wxsGridClient" />   
			<bean class="com.ibm.websphere.objectgrid.spring.ObjectGridCache"     
				p:name="books"     
				p:object-grid-client-ref="wxsGridClient" />   
		</set>  
	</property>
</bean>