Migration d'applications Web IBM Websphere Commerce version 7 Feature Pack 8 personnalisées vers Struts 2

Vous pouvez migrer des projets qui utilisaient Struts 1.x vers Struts 2. De nombreuses fonctionnalités peuvent être traduites directement à l'aide de l'utilitaire strutsmigration.jar. Pour les projets plus complexes, une comparaison des fonctionnalités et des API de Struts 1 et 2 est fournie.

Pourquoi et quand exécuter cette tâche

Utilisez la procédure suivante pour convertir les projets Struts 1 en Struts 2.

Procédure

  1. Exportez l'application Web personnalisée depuis la version antérieure de l'environnement de développement.
    1. Ouvrez la version antérieure de HCL Commerce Developer.
    2. Basculez vers l'Explorateur d'entreprise.
    3. Cliquez avec le bouton droit de la souris sur l'application Web que vous souhaitez faire migrer et sélectionnez Exporter > Fichier WAR.
      Un fichier d'archive Web (WAR) est créé.
  2. Copiez le fichier WAR dans votre environnement de développement version 9.
  3. Créez une copie de sauvegarde de votre application Web version 9.
  4. Importez le fichier WAR dans votre espace de travail et écrasez le projet existant.
  5. A l'aide d'une application de comparaison de fichiers, déterminez les différences entre votre version de l'application Web et l'application Web version 9. Fusionnez manuellement les différences dans votre application Web.
  6. Modifiez les pages Web personnalisées si elles utilisent des beans d'entité EJB. Voir Migration des beans d'entité EJB de IBM Websphere Commerce Version 8 vers Java Persistence API.
  7. Faites migrer les fichiers de configuration Struts
    1. Copiez strutsmigration.jar dans votre environnement de développement.
    2. Créez un dossier et copiez struts-config-ext.xml et tous les fichiers XML de configuration Struts personnalisés à partir de WCDE_installdir\workspace\web-application\WebContent\WEB-INF\
    3. Convertissez vos fichiers de configuration Struts 1.x en version 2. Exécutez la commande Java 1.8 suivante :
      java -jar strutsmigration.jar  struts2-package-name  struts-1-config-file-directory  struts2-config-file-directory
      où les applications Web sont mappées vers les noms de package Struts 2 comme suit :
      Application Web Nom du package Struts 2
      Commerce Accelerator wcs-accelerator
      Administration d'organisation wcs-orgadmin
      Administrateur de site wcs-adminconsole
      Royaume-Uni wcs-stores
      Par exemple :
      java -jar strutsmigration.jar  wcs-accelerator W:\accelerator-struts-custom\input\  W:\accelerator-struts-custom\output 
       java -jar strutsmigration.jar wcs-stores W:\store-struts-custom\input\ W:\store-struts-custom\output 
    4. Copiez les nouveaux fichiers de configuration Struts 2 convertis dans W:\WCDE_V9\workspace\{web application}\src.
    5. Vérifiez le fichier de configuration Struts 2 dans le projet d'application Web pour vous assurer que tous les fichiers de configuration Struts y sont référencés. Par exemple, pour le projet de magasins, vérifiez si vous avez des fichiers de configuration Struts personnalisés en plus de struts-config-ext.xml dans W:\WCDE_V9\workspace\Stores\src. Assurez-vous que tous ces fichiers de configuration Struts sont référencés dans struts-store.xml à l'aide de la syntaxe de l'exemple suivant.
      <include file="struts-wcs-accelerator-custom.xml"></include>
      <include file="struts-wcs-stores-custom.xml"></include>  
      Le mappage entre l'application Web et le nom du fichier de configuration Struts 2 est le suivant :
      Application Web Fichier de configuration Struts 2
      Commerce Accelerator WCDE_installdir\workspace\CommerceAccelerator\src\struts-accelerator.xml
      Administration d'organisation WCDE_installdir\workspace\OrganizationAdministration\src\struts-orgadmin.xml
      Administrateur de site WCDE_installdir\workspace\OrganizationAdministration\src\struts-siteadmin.xml
      Royaume-Uni WCDE_installdir\workspace\Stores\src\struts-stores.xml
      Remarque : Les fichiers inclus sont chargés dans l'ordre. Assurez-vous que les fichiers personnalisés sont inclus après les fichiers par défaut. Ajoutez-les avant <include file="struts-wcs-accelerator-custom.xml"></include>.
  8. Fusionnez manuellement les modifications apportées à votre version antérieure du fichier d'application Web web.xml dans le fichier dans HCL Commerce Version 9. S'il n'y a pas de personnalisations dans web.xml, copiez le web.xml à partir de la sauvegarde que vous avez créée à l'étape 3 vers \Stores\WebContent\WEB-IN.
    ATTENTION : Ne remplacez pas les paramètres suivants :
    • Paramètres servlet-class. Par exemple :
      <servlet-class>com.ibm.commerce.struts.v2.ECActionServlet</servlet-class>
    • Filtres et mappages de filtre. Par exemple :
      <filter>        
      <filter-name>struts2</filter-name>        
      <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>                
      ...
      </filter>
      
  9. (Facultatif) Si vous avez la configuration suivante dans Struts 1, modifiez le fichier de configuration struts-wcs-xxx-custom.xml.
    1. Remplacez les paramètres d'action.
      Dans Struts 1, struts-config-ext.xml est fusionné automatiquement par le gestionnaire de configuration Struts. Dans l'exemple suivant, nous ajoutons une nouvelle propriété "https" à une action.
      Dans le fichier struts-config.xml :
      <action path="/RequisitionListsView" type="com.ibm.commerce.struts.BaseAction"> 
      <set-property property="credentialsAccepted" value="0:P"/> 
      </action>
      Dans le fichier struts-config-ext.xml :
      <action path="/RequisitionListsView" type="com.ibm.commerce.struts.BaseAction"> 
      <set-property property="https" value="0:1"/> 
      </action>
      Lors de l'exécution, l'action aura deux propriétés définies : https et credentialsAccepted.

      Toutefois, pour ajouter de nouveaux paramètres dans Struts 2, l'action complète doit être définie dans un package enfant. Par exemple :

      Dans le fichier struts-wcs-xxx.xml :

      <action class="com.ibm.commerce.struts.v2.BaseAction" name="RequisitionListsView"> 
      <param name="credentialsAccepted">0:P</param> 
      </action>

      Dans le fichier struts-wcs-xxx-custom.xml :

      	<package extends="wcs-stores" name="wcs-stores-custom" namespace="/">
      		... ...
      		<action class="com.ibm.commerce.struts.v2.BaseAction" name="RequisitionListsView">
                 		<param name="https">0:1</param>
      			<param name="credentialsAccepted">0:P</param>
              	</action>
      	</package >
      
    2. Ajoutez un nouveau réacheminement (résultat).
      Dans Struts 1, le réacheminement global dans struts-config-ext.xml est fusionné automatiquement par le gestionnaire de configuration Struts. Par exemple,
      Dans le fichier struts-config.xml :
      <action parameter="com.ibm.commerce.catalog.commands.TopCategoriesDisplayCmd" path="/TopCategoriesDisplay" type="com.ibm.commerce.struts.BaseAction">
       ... ...
      </action>
      Dans le fichier struts-config-ext.xml :
      	<action parameter="com.ibm.commerce.catalog.commands.TopCategoriesDisplayCmd" path="/TopCategoriesDisplay" type="com.ibm.commerce.struts.BaseAction">
                  	... ...
              </action>
      	
      In file struts-config-ext.xml
      	<global-forwards>
      		<forward className="com.ibm.commerce.struts.ECActionForward" name="TopCategoriesDisplayView/10001" path="/ShoppingArea/CatalogSection/CategorySubsection/TopCategoriesDisplay.jsp"/>
      		<forward className="com.ibm.commerce.struts.ECActionForward" name="TopCategoriesDisplayView/10002" path="/ShoppingArea/CatalogSection/CategorySubsection/TopCategoriesDisplay.jsp"/>
      	</global-forwards>
      		… …
      
      	<action parameter="com.ibm.commerce.catalog.commands.TopCategoriesDisplayCmd" path="/TopCategoriesDisplay" type="com.ibm.commerce.struts.BaseAction">
                  	... ...
              </action>
      

      Lors de l'exécution, deux réacheminements, TopCategoriesDisplayView/10001 et TopCategoriesDisplayView/10001, sont disponibles pour l'action TopCategoriesDisplay.

      Pour ajouter un nouveau résultat global à Struts 2 et le rendre disponible pour les actions par défaut, les actions doivent être définies dans un package enfant.

      Dans le fichier struts-wcs-xxx.xml :
          	<package extends="struts-default" name="wcs-stores" namespace="/">
      			… … 
      		<action class="com.ibm.commerce.struts.v2.BaseAction" name="TopCategoriesDisplay">
                  		... ...
              	</action>
      	<package 
      
      Dans le fichier struts-wcs-xxx-custom.xml :
      	 <package extends="wcs-stores" name="wcs-stores-custom" namespace="/">
      		<global-results>
                 		<result name="TopCategoriesDisplayView/10001">
                      				... ...
                  		</result>
      			<result name="TopCategoriesDisplayView/10002">
                      				... ...
                  		</result>
      		</global-results>
      		<action class="com.ibm.commerce.struts.v2.BaseAction" name="TopCategoriesDisplay">
                  					... ...
              	</action>
      	</package >
      
      Important : L'ID de magasin dans votre environnement de production peut différer par rapport à votre installation précédente. Assurez-vous que l'ID de magasin référencé dans ce fichier correspond à votre environnement avant de le déployer.
  10. Compilez et déployez votre projet.

Que faire ensuite

Si vous utilisez la fonctionnalité des codes de vérification, procédez comme suit :
  1. Ouvrez le fichier Stores/src/ComponentPlugins.xml dans un éditeur.
  2. Ajoutez le plug-in suivant au fichier.
     <ComponentPlugins> 
    ...
    <plug-in className="com.ibm.commerce.struts.v2.VerificationCodePlugInImpl" 
    storeId="0" 
    verCodeValidationClassName="com.ibm.commerce.verification.ChinaStoreVerificationCodeValidation"/>
La valeur par défaut de storeId est 0. Cette valeur signifie que les codes de vérification seront activés pour tous les magasins. Vous pouvez spécifier des magasins individuels avec ce paramètre pour activer la vérification pour ces magasins uniquement.