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. Important : Dans HCL Commerce Version 9, l'aperçu du magasin n'est pas pris en charge pour les magasins locaux migrés Struts 2.
Procédure
-
Exportez l'application Web personnalisée depuis la version antérieure de l'environnement de développement.
-
Ouvrez la version antérieure de HCL Commerce Developer.
-
Basculez vers l'Explorateur d'entreprise.
-
Cliquez avec le bouton droit de la souris sur l'application Web que vous souhaitez faire migrer et sélectionnez .
Un fichier d'archive Web (WAR) est créé.
- Copiez le fichier WAR dans votre environnement de développement version 9.
- Créez une copie de sauvegarde de votre application Web version 9.
- Importez le fichier WAR dans votre espace de travail et écrasez le projet existant.
-
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.
-
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.
-
Faites migrer les fichiers de configuration Struts
-
Copiez strutsmigration.jar dans votre environnement de développement.
-
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\
-
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
-
Copiez les nouveaux fichiers de configuration Struts 2 convertis dans W:\WCDE_V9\workspace\{web application}\src.
-
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>.
-
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-INF\.
ATTENTION :
- Vous ne pouvez pas avoir d'actions et de résultats dans des packages enfant différents. Cela inclut les flux pour lesquels vous commencez une action REST, qui sont alors transmis à une page JSP. Par exemple, le résultat d'une erreur. L'action REST et le résultat de la page JSP doivent se trouver dans un seul package enfant/parent.
- 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>
-
(Facultatif) Si vous avez la configuration suivante dans Struts 1, modifiez le fichier de configuration struts-wcs-xxx-custom.xml.
-
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 >
-
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.
-
Compilez et déployez votre projet.
Que faire ensuite
Si vous utilisez la fonctionnalité des codes de vérification, procédez comme suit :
- Ouvrez le fichier Stores/src/ComponentPlugins.xml dans un éditeur.
- 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.