Migración de aplicaciones web personalizadas de IBM Websphere Commerce Versión 7 Feature Pack 6 a Struts 2

Puede migrar proyectos que utilizan los Struts 1.x a los Struts 2. Muchas características se pueden traducir directamente utilizando el programa de utilidad strutsmigration.jar. Para proyectos más complejos, se proporciona una comparación de las características y las API de los Struts 1 y 2.

Por qué y cuándo se efectúa esta tarea

Utilice el procedimiento siguiente para convertir los proyectos de Struts 1 en Struts 2.
Importante: En HCL Commerce Version 9, la vista previa de la tienda no está soportada para las tiendas locales migradas de los Struts 2.

Procedimiento

  1. Exporte la aplicación web personalizada de la versión anterior del entorno de desarrollo.
    1. Abra la versión anterior de HCL Commerce Developer.
    2. Vaya a la vista Explorador de empresa.
    3. Haga clic con el botón derecho en del ratón en la aplicación web que desea migrar y seleccione Exportar > Archivo WAR.
      Se crea un archivo (WAR) web.
  2. Copie el archivo WAR de la versión 8.0 al entorno de desarrollo de la versión 9.0.
  3. Cree una copia de seguridad de su aplicación web versión 9.
  4. Importe el archivo WAR a su espacio de trabajo y sobrescriba el proyecto existente.
  5. Utilizando una aplicación de comparación de archivos, determine las diferencias entre la aplicación web de la versión 8.0 y la aplicación web de la versión 9.0. Fusione manualmente las diferencias en la aplicación web.
  6. Modifique las páginas web personalizadas si utilizan beans de entidad EJB. Consulte Migración de beans de entidad EJB IBM Websphere Commerce Version 8 a Java Persistence API.
  7. Migre archivos de configuración de Struts.
    1. Copie strutsmigration.jar en el entorno de desarrollo.
    2. Crear una carpeta y copie struts-config-ext.xml y todos los archivos XML de configuración de los struts personalizados de WCDE_installdir\workspace\web-application\WebContent\WEB-INF\
    3. Convierta los archivos de configuración de los struts 1.x a la versión 2. Ejecute el siguiente mandato de Java 1.8:
      java -jar strutsmigration.jar  struts2-package-name  struts-1-config-file-directory  struts2-config-file-directory
      donde las aplicaciones web se correlacionan con los nombres de paquete de los struts 2 de la siguiente manera:
      aplicación web Nombre de paquete de los struts 2
      Commerce Accelerator wcs-accelerator
      Administración de la organización wcs-orgadmin
      Administración de sitio wcs-adminconsole
      Store wcs-stores
      Por ejemplo:
      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. Copie los nuevos archivos de configuración de los struts 2 convertidos en W:\WCDE_V9\workspace\{web application}\src.
    5. Compruebe el archivo de configuración de los struts 2 en el proyecto de aplicación web para asegurarse de que se hace referencia a todos los archivos de configuración de los struts. Por ejemplo, para el proyecto Stores, compruebe si tiene algún archivo de configuración de struts personalizado además struts-config-ext.xml de en W:\WCDE_V9\workspace\Stores\src. Asegúrese de que se hace referencia a todos los archivos de configuración de estos struts struts-store.xml utilizando la sintaxis del ejemplo siguiente.
      <include file="struts-wcs-accelerator-custom.xml"></include>
      <include file="struts-wcs-stores-custom.xml"></include>  
      La correlación entre la aplicación web y el nombre del archivo de configuración de struts 2 es la siguiente:
      aplicación web Archivo de configuración de Struts 2
      Commerce Accelerator WCDE_installdir\workspace\CommerceAccelerator\src\struts-accelerator.xml
      Administración de la organización WCDE_installdir\workspace\OrganizationAdministration\src\struts-orgadmin.xml
      Administración de sitio WCDE_installdir\workspace\OrganizationAdministration\src\struts-siteadmin.xml
      Store WCDE_installdir\workspace\Stores\src\struts-stores.xml
      Nota: Los archivos incluidos se cargan en secuencia. Asegúrese de que los archivos personalizados se incluyan después de los archivos predeterminados. Agréguelos antes de <include file="struts-wcs-accelerator-custom.xml"></include>.
  8. Fusione manualmente los cambios en la versión anterior del archivo de aplicación web web.xml en el archivo en HCL Commerce Version 9. Si no hay personalizaciones web.xml en, copie desde web.xml la copia de seguridad que ha creado en el paso a 3\Stores\WebContent\WEB-INF\ .
    PRECAUCIÓN:
    • No puede tener acciones, lo que implica diferentes paquetes secundarios. Esto incluye los flujos donde comienza con una acción REST y, a continuación, se reenvía a una página JSP. Por ejemplo, el resultado de un error. La acción REST y el resultado de la página JSP deben estar en un único paquete secundario/principal.
    • No altere los valores siguientes:
      • Valores de servlet-class.
        Por ejemplo:
        <servlet-class>com.ibm.commerce.struts.v2.ECActionServlet</servlet-class>
      • Filtros y correlaciones de filtro.
        Por ejemplo:
        <filter>        
        <filter-name>struts2</filter-name>        
        <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>                
        ...
        </filter>
        
  9. (Opcional) Si tiene la siguiente configuración en los struts 1, modifique el archivo de configuración struts-wcs-xxx-custom.xml.
    1. Altere temporalmente los parámetros de acción.
      En Struts 1, el gestor de configuración de struts fusiona struts-config-ext.xml automáticamente. En el ejemplo siguiente, añadimos una nueva propiedad "https" a una acción.
      En el archivo struts-config.xml:
      <action path="/RequisitionListsView" type="com.ibm.commerce.struts.BaseAction"> 
      <set-property property="credentialsAccepted" value="0:P"/> 
      </action>
      En el archivo struts-config-ext.xml:
      <action path="/RequisitionListsView" type="com.ibm.commerce.struts.BaseAction"> 
      <set-property property="https" value="0:1"/> 
      </action>
      En tiempo de ejecución, la acción tendrá dos propiedades definidas: https y credentialsAccepted.

      Sin embargo, para poder añadir nuevos parámetros en los struts 2, la acción completa debe definirse en un paquete hijo. Por ejemplo:

      En el archivo struts-wcs-xxx.xml:

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

      En el archivo 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. Añada un nuevo reenvío (resultado).
      En Struts 1, el gestor de configuración de los struts fusiona el reenvío global en struts-config-ext.xml automáticamente. Por ejemplo,
      En el archivo struts-config.xml:
      <action parameter="com.ibm.commerce.catalog.commands.TopCategoriesDisplayCmd" path="/TopCategoriesDisplay" type="com.ibm.commerce.struts.BaseAction">
       ... ...
      </action>
      En el archivo 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>
      

      En tiempo de ejecución, dos reenvíos, TopCategoriesDisplayView/10001 y TopCategoriesDisplayView/10001, están disponibles para la acción TopCategoriesDisplay.

      Para añadir un nuevo resultado global a los struts 2 y hacer que esté disponible para las acciones predeterminadas, las acciones se deben definir en un paquete hijo.

      En el archivo struts-wcs-xxx.xml:
          	<package extends="struts-default" name="wcs-stores" namespace="/">
      			… … 
      		<action class="com.ibm.commerce.struts.v2.BaseAction" name="TopCategoriesDisplay">
                  		... ...
              	</action>
      	<package 
      
      En el archivo 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 >
      
      Importante: El ID de tienda en el entorno de producción puede diferir de la instalación anterior. Asegúrese de que el ID de tienda al que se hace referencia en este archivo coincide con el entorno antes de desplegarlo.
  10. Compile y despliegue el proyecto.

Qué hacer a continuación

Si está utilizando la característica de códigos de verificación, haga lo siguiente:
  1. Abra el archivo Stores/src/ComponentPlugins.xml en un editor.
  2. Añada el siguiente plugin al archivo.
     <ComponentPlugins> 
    ...
    <plug-in className="com.ibm.commerce.struts.v2.VerificationCodePlugInImpl" 
    storeId="0" 
    verCodeValidationClassName="com.ibm.commerce.verification.ChinaStoreVerificationCodeValidation"/>
El storeId predeterminado es 0. Este valor significa que los códigos de verificación se pueden habilitar para todas las tiendas. Puede especificar tiendas individuales con este parámetro para habilitar la verificación solo para esas tiendas.