Configuration de la mise en cache pour les applications Struts et Tiles

Cette tâche permet de mettre en cache les applications Struts et Tiles.

Avant de commencer

Avant de configurer la mise en cache des applications Struts et Tiles, vous devez développer une application. Pour plus d'informations sur le développement d'applications Struts et Tiles, consultez le site Web Apache Struts Web Application Framework.

Pourquoi et quand exécuter cette tâche

Cette tâche permet de mettre en cache les données des applications Struts et Tiles.

Struts est une structure de source libre permettant de créer des applications Web avec l'architecture MVC (Model-View-Controller). La structure Struts comporte un composant contrôleur (controller) et s'intègre à d'autres technologie pour fournir le modèle (model) et la vue (view). Struts fournit une couche de contrôle de l'application Web qui diminue le temps de construction et les coûts de maintenance.

La structure Tiles est construite sur la fonction jsp:include et elle est associée à la structure d'application Web Struts. Elle réduit le nombre de duplications entre les fichiers JSP (JavaServer Pages) et rend l'agencement des sites Web souple et facile à gérer grâce à l'assemblage de pages de présentation à partir d'éléments de composants.

La mise en cache des applications Struts et Tiles est une extension de la fonction de mise en cache des fichiers JSP et des servlets ; par conséquent, les opérations de mise en cache sont très ressemblantes. Pour plus d'informations sur la mise en cache des servlets, reportez-vous à la rubrique Configuration de la mise en cache des servlets.

Procédure

  1. Activez la mise en cache des pages JSP et des servlets. L'activation de la mise en cache des servlets entraîne automatiquement la mise en cache des applications Struts et Tiles. Pour plus d'informations sur la mise en cache des servlets, reportez-vous à la rubrique Configuration de la mise en cache des servlets.
  2. Développez la règle de cache. La mise en cache des réponses Struts et Tiles requiert une règle de cache.
    Pour développer une règle de cache Struts, suivez les instructions ci-après.

    La structure Struts met à disposition un composant contrôleur (controller) dans l'application de type MVC. Il s'agit d'un servlet appelé org.apache.struts.action.ActionServlet.class. Un mappage de servlet *.do est ajouté au servlet Struts ActionServlet dans le fichier web.xml de l'application, pour que chaque demande d'adresse Web se terminant par .do soit traitée. Le servlet ActionServlet utilise les informations qui figurent dans le fichier struts-config.xml pour sélectionner la classe Struts action qui doit exécuter la demande pour la ressource spécifiée.

    La version antérieure de WebSphere Application Server ne prenait en charge qu'une règle de cache par servlet. Toutefois, si vous utilisez Struts, chaque demande se terminant par .do est mappée vers le même servlet ActionServlet. Pour placer en cache les réponses Struts, rédigez une règle de cache pour le servlet ActionServlet basée sur son chemin.

    Par exemple, considérez deux actions Struts : /HelloParam.do et /HelloAttr.do. Pour placer en cache les réponses en fonction du paramètre de demande id et de l'attribut de demande arg respectivement, utilisez la règle de cache suivante :
    <cache-entry>
    	<class>servlet</class>
    	<name>org.apache.struts.action.ActionServlet.class</name>
    	<cache-id>
    		<component id="" type="servletpath">
    			<value>/HelloParm.do</value>
    		</component>
    	</cache-id>
    	<cache-id>
    		<component id="" type="servletpath">
    			<value>/HelloAttr.do</value>
    		</component>
    		<component id="arg" type="attribute">
    			<required>true</required>
    		</component>
    	</cache-id>
    </cache-entry>
    La version actuelle de WebSphere Application Server permet de définir plusieurs règles de cache pour un servlet unique. Vous pouvez modifier la règle de cache précédente conformément à l'exemple suivant :
    <cache-entry>
    	<class>servlet>
    	<name>/HelloParam.do</name>
    	<cache-id>
    		<component id="id" type="parameter">
    			<required>true</required>
    		</component>
    </cache-entry>
    <cache-entry>
    	<class>servlet</class>
    	<name>/HelloAttr.do</name>
    	<cache-id>
    		<component id="arg" type="attribute">
    			<required>true</required>
    		</component>
    	</cache-id>
    </cache-entry>
    Pour développer une règle de cache Tiles, suivez les instructions ci-après.
    La structure Tiles est construite sur la balise jsp:include ; ainsi, ce qui s'applique à la mise en cache des pages JSP est également valide pour les applications Tiles. Vous devez associer l'attribut flush à la valeur true dans les fragments qui sont inclus à l'aide de la balise tiles:insert pour que ces derniers soient mis en cache correctement. La mise en cache des applications Tiles comporte une fonction supplémentaire par rapport à la mise en cache des pages JSP, basée sur l'attribut tiles. Vous pouvez par exemple développer le modèle layout.jsp suivant :
    <html>
    	<%String categoryId = request.getParameter("categoryId")+"test"; %>
    	<tiles:insert attribute="header">
    		<tiles:put name="categoryId" value="<%= categoryId %>" />
    	</tile:insert>
    	<table>
    		<tr>
    			<td width="70%" valign="top"><tiles:insert attribute="body" /> </td>
    		</tr>
    		<tr>
    			<td colspan="2"><tiles:insert attribute="footer" /></td>
    		</tr>
    	</table>
    </body>
    </html>
    La balise tiles:put imbriquée indique l'attribut de l'élément tile inséré. Dans le modèle layout.jsp l'attribut categoryId est défini et transmis à l'élément tile inséré dans la marque de réservation de l'en-tête. Dans l'exemple suivant, le fichier layout.jsp est inséré dans un autre fichier JSP :
    <html>
    <body>
    <tiles:insert page="layout.jsp?categoryId=1002" flush="true">
    	<tiles:put name="header" value="/header.jsp" />
    	<tiles:put name="body" value="/body.jsp" />
    	<tiles:put name="footer" value="/footer.jsp" />
    </tiles:insert>
    </body>
    </html>
    L'attribut tile categoryId est transmis au fichier header.jsp. Le fichier header.jsp peut utiliser la balise <tiles:useAttribute> pour extraire la valeur de l'attribut categoryId. Pour placer en cache le fichier header.jsp en fonction de la valeur de l'attribut categoryId, utilisez la règle de cache suivante :
    <cache-entry>
    	<class>servlet</class>
    	<name>/header.jsp</name>
    	<cache-id>
    		<component id="categoryId" type="tiles_attribute">
    		<required>true</required>
    		</component>
    	</cache-id>
    </cache-entry>
  3. Vérifiez que les règles de cache fonctionnent correctement. Vous pouvez modifier les règles dans le fichier cachespec.xml lors de l'exécution de l'application. Pour plus d'informations sur les règles de cache, reportez-vous à la rubrique Configuration des objets pouvant être mis en cache à l'aide du fichier cachespec.xml.

Résultats

Que faire ensuite

Reportez-vous aux Généralités sur les tâches, à la rubrique Utilisation du service de cache dynamique pour améliorer les performances, pour plus d'informations sur le cache dynamique.

Icône indiquant le type de rubrique Rubrique de tâche



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=tdyn_strutstiles
Nom du fichier : tdyn_strutstiles.html