Cambios de archivo de configuración de Struts 2

Esta referencia describe los cambios en los archivos de configuración entre Struts 1.x y Struts 2.

La mayoría de los cambios de migración se realizan mediante la herramienta strutsmigration.jar . Para ver los pasos de migración detallados, consulte Migración de aplicaciones web personalizadas de IBM Websphere Commerce Versión 7 Feature Pack 6 a Struts 2

Contenido

Migración de archivos de configuración

Stores.WAR

  1. Archivos de configuración de Struts
    Cambios Antes del Después
    Nombre de archivo de OOTB

    struts-config.xml

    struts-config-xxx.xml

    struts-stores.xml

    struts-wcs-stores.xml

    struts-wcs-stores-xxx.xml

    Ubicación del archivo \WEB-INF WEB-INF\classes
    Archivos personalizados

    struts-config-ext.xml

    struts-wcs-stores-custom.xml

    <package extends="wcs-stores" name=" stores-custom " namespace="/">

  2. Web.xml
    Cambios Antes del Después
    Añadir contexto de servlet
    <servlet>
            ...
            <servlet-name>Stores Request Servlet</servlet-name>
            <servlet-class>com.ibm.commerce.struts.ECActionServlet</servlet-class>
            ...
        </servlet>
    
    <servlet>
             ...       
            <servlet-name>Stores Request Servlet</servlet-name>
            <servlet-class>com.ibm.commerce.struts.v2.ECActionStrutsServlet</servlet-class>
            ...
    </servlet>
    Añadir contexto de servlet
    <context-param>
        <param-name>component-plugin-file</param-name>
        <param-value>ComponentPlugins.xml</param-value>
    </context-param>
    <context-param>
        <param-name>initServlet</param-name>
        <param-value>true</param-value>
    </context-param>
    <context-param>
    <param-name>isStruts2</param-name>
        <param-value>true</param-value>
    </context-param>
    
    Añadir contexto de escucha
    <listener>
    	<listener-class>com.ibm.commerce.struts.v2.StrutsConfigFilesServletContextListener</listener-class>
    </listener>
CommerceAccelerator.WAR
  1. Archivos de configuración de Struts
    Cambios Antes del Después
    Nombre de archivo de OOTB

    struts-config.xml

    struts-config-xxx.xml

    struts-accelerator.xml

    struts-wcs-accelerator.xml

    struts-wcs-accelerator-xxx.xml

    Ubicación del archivo \WEB-INF WEB-INF\classes
    Archivos personalizados

    struts-config-ext.xml

    struts-wcs-accelerator-custom.xml

    <package extends="wcs-accelerator" name="accelerator-custom " namespace="/">

  2. Web.xml
    Cambios Antes del Después
    Añadir contexto de servlet
    <servlet>
            ...
            <servlet-name> Commerce Accelerator Request Servlet</servlet-name>
            <servlet-class>com.ibm.commerce.struts.ECActionServlet</servlet-class>
            ...
        </servlet>
    
    <servlet>
             ...       
            <servlet-name>Commerce Accelerator Request Servlet</servlet-name>
            <servlet-class>com.ibm.commerce.struts.v2.ECActionServlet</servlet-class>
            …
        </servlet>
    
    Añadir filtro sruts2 al final de la definición de filtro
    <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
            <init-param>
                <param-name>config</param-name>
                <param-value>struts-default.xml,struts-plugin.xml,struts-accelerator.xml</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <servlet-name>Commerce Accelerator Request Servlet</servlet-name>
        </filter-mapping>
    
    Añadir contexto de servlet
    <context-param>
        <param-name>isStruts2</param-name>
        <param-value>true</param-value>
    </context-param>
    
OrganizationAdministration.WAR
  1. Archivos de configuración de Struts
    Cambios Antes del Después
    Nombre de archivo de OOTB

    struts-config.xml

    struts-config-xxx.xml

    struts-orgadmin.xml

    struts-wcs-orgadmin.xml

    struts-wcs-orgadmin-xxx.xml

    Ubicación del archivo \WEB-INF WEB-INF\classes
    Archivos personalizados

    struts-config-ext.xml

    struts-wcs-orgadmin-custom.xml

    <package extends="wcs-orgadmin" name="orgadmin-custom " namespace="/">

  2. Web.xml
    Cambios Antes del Después
    Añadir contexto de servlet
    <servlet>
            ...
            <servlet-name>Organization Administration Request Servlet</servlet-name>
            <servlet-class>com.ibm.commerce.struts.ECActionServlet</servlet-class>
            ...
        </servlet>
    
    <servlet>
             ...       
            <servlet-name>Organization Administration Request Servlet</servlet-name>
            <servlet-class>com.ibm.commerce.struts.v2.ECActionServlet</servlet-class>
            …
        </servlet>
    
    Añadir filtro sruts2 al final de la definición de filtro
    <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
            <init-param>
                <param-name>config</param-name>
                <param-value>struts-default.xml,struts-plugin.xml,struts-orgadmin.xml</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <servlet-name>Organization Administration Request Servlet</servlet-name>
        </filter-mapping>
    
    Añadir contexto de servlet
    <context-param>
        <param-name>isStruts2</param-name>
        <param-value>true</param-value>
    </context-param>
    
SiteAdministration.WAR
  1. Archivos de configuración de Struts
    Cambios Antes del Después
    Nombre de archivo de OOTB

    struts-config.xml

    struts-config-xxx.xml

    struts-siteadmin.xml

    struts-wcs-adminconsole.xml

    struts-wcs-adminconsole-xxx.xml

    Ubicación del archivo \WEB-INF WEB-INF\classes
    Archivos personalizados

    struts-config-ext.xml

    struts-wcs-adminconsole-custom.xml

    <package extends="wcs-adminconsole" name="adminconsole-custom " namespace="/">

  2. Web.xml
    Cambios Antes del Después
    Añadir contexto de servlet
    <servlet>
            ...
            <servlet-name>Site Administration Request Servlet</servlet-name>
            <servlet-class>com.ibm.commerce.struts.ECActionServlet</servlet-class>
            ...
        </servlet>
    
    <servlet>
             ...       
            <servlet-name>Site Administration Request Servlet</servlet-name>
            <servlet-class>com.ibm.commerce.struts.v2.ECActionServlet</servlet-class>
            …
        </servlet>
    
    Añadir filtro sruts2 al final de la definición de filtro
    <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
            <init-param>
                <param-name>config</param-name>
                <param-value>struts-default.xml,struts-plugin.xml,struts-siteadmin.xml</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <servlet-name>Site Administration Request Servlet</servlet-name>
        </filter-mapping>
    
    Añadir contexto de servlet
    <context-param>
        <param-name>isStruts2</param-name>
        <param-value>true</param-value>
    </context-param>
    

Configuración de Struts1.x frente a Struts2

Acción

Struts 1 Struts 2
1 <action type =” com.ibm.commerce.struts.BaseAction”/> <action class="com.ibm.commerce.struts.v2.BaseAction"/>
2 <action parameter="com.ibm.commerce.security.commands.LogonCmd" />
<action>
<param name="parameter">com.ibm.commerce.security.commands.LogonCmd</param>
</action>
3 <action path="/Logon" /> <action name="Logon"/>
4
<action>
    <set-property property="csrfProtected" value="0:0"/>
</action>
<action>
        <param name="csrfProtected">0:0</param>
</action>

Ejemplos:

Struts1
<action parameter="com.ibm.commerce.security.commands.LogonCmd"
            		path="/Logon" type="com.ibm.commerce.struts.BaseAction">
            <set-property property="csrfProtected" value="0:0"/>
            <set-property property="https" value="0:1"/>
            <set-property property="authenticate" value="0:0"/>
</action>
Struts2
<action class="com.ibm.commerce.struts.v2.BaseAction" name="Logon">
            <param name="authenticate">0:0</param>
            <param name="csrfProtected">0:0</param>
            <param name="https">0:1</param>
            <param name="parameter">com.ibm.commerce.security.commands.LogonCmd</param>
</action>
Reenviar
Struts 1 Struts 2
1 <forward/> <result/>
2 <forward name="RedirectView"/> <result name="RedirectView"/>
3 <forward path="/"/>
<result>
    <param name="location">/</param>
<result/>
4 <forward redirect="true"/>
<result>
    <param name="redirect">true</param>
</result>

Default result type is “dispatcher”

Ejemplos:

Struts 1
        <forward className="com.ibm.commerce.struts.ECActionForward"
            name="LogoffView" path="/Logoff.jsp">
            <set-property property="properties" value="storeDir=no"/>
            <set-property property="resourceClassName" value="com.ibm.commerce.command.HttpForwardViewCommandImpl"/>
        </forward>
Struts 2
        <result name="LogoffView">
                <param name="location">/Logoff.jsp</param>
                <param name="properties">storeDir=no</param>
                <param name="resourceClassName">com.ibm.commerce.command.HttpForwardViewCommandImpl</param>
        </result>

GlobeForward

Struts 1 Struts 2
1 <global-forwards/> <global-results/>
2
<global-forwards>
       <forward/>
</global-forwards>
<global-results>
        <result/>
</global-results>

Ejemplos:

Struts 1
<global-forwards>
       <forward className="com.ibm.commerce.struts.ECActionForward"
            name="CookieErrorView" path="/GenericSystemError.jsp">
            <set-property property="properties" value="storeDir=no"/>
            <set-property property="resourceClassName" value="com.ibm.commerce.command.HttpForwardViewCommandImpl"/>
        </forward>
</global-forwards>
Struts 2
<global-results>
        <result name="CookieErrorView">
                <param name="location">/GenericSystemError.jsp</param>
                <param name="properties">storeDir=no</param>
                <param name="resourceClassName">com.ibm.commerce.command.HttpForwardViewCommandImpl</param>
            </result>
</global-results>
Recursos de mensajes
Struts 1 Struts 2
1 <message-resources/> <constant name="struts.custom.i18n.resources" value=""/>

Ejemplos:

Struts 1
<message-resources
        className="com.ibm.commerce.struts.messages.WCMessageResourcesConfig"
        factory="com.ibm.commerce.struts.messages.WCPropertyMessageResourcesFactory"
        key="org.apache.struts.action.MESSAGE" null="true" parameter="com.ibm.strutsstore.resources.ApplicationResources">
        <set-property property="additionalProperties" value="com.ibm.commerce.ras.properties.ecServerMessages"/>
</message-resources>
Struts 2
<constant name="struts.custom.i18n.resources" value="com.ibm.commerce.ras.properties.ecServerMessages” />

Reenvío y redireccionamiento

Se ha definido un nuevo tipo de resultado "wcsredirect" en Struts2 para HCL Commerce que alterará temporalmente el tipo de resultado "redirect" predeterminado de Struts2. Este tipo de resultado redirige el resultado a una ubicación de URL completa. Por ejemplo, redirigir a
https://hostname:port/webapp/wcs/stores/servlet/ReLogonFormView
con parámetros.
Struts 1 Struts 2
1
<result-types>
	<result-type class="com.ibm.commerce.struts.v2.WCSRedirectResult" name="wcsredirect"/>
</result-types>
2
<forward className="com.ibm.commerce.struts.ECActionForward"
            name="RedirectView" path="" redirect="true">
            <set-property property="resourceClassName" value="com.ibm.commerce.command.HttpRedirectViewCommandImpl"/>
        </forward>
<result name="RedirectView" type="wcsredirect">
                <param name="location">${redirectUrl}</param>
                <param name="redirect">true</param>
                <param name="resourceClassName">com.ibm.commerce.command.HttpRedirectViewCommandImpl</param>
            </result>

Reenvío de tienda

Se ha definido un nuevo tipo de resultado "wcsstore" en Struts 2 para HCL Commerce que añadirá el directorio de la tienda antes de la ubicación. Por ejemplo, para el siguiente resultado, la ubicación final URL es
<result name="AjaxCategorySubscriptionDisplay/11001" type="wcsstore">
    <param name="location">/Snippets/Catalog/CategoryDisplay/CategorySubscriptionDisplay.jsp</param>
</result>
La ubicación final URL es
AuroraB2BStorefrontAssetStore/Snippets/Catalog/CategoryDisplay/CategorySubscriptionDisplay.jsp
1
<result-types>
            <result-type class="com.ibm.commerce.struts.v2.WCSStoreDispatcherResult" name="wcsstore"/>
        </result-types>
2
<forward className="com.ibm.commerce.struts.ECActionForward"
            name=" AjaxCategorySubscriptionDisplay/11001" path="/Snippets/Catalog/CategoryDisplay/CategorySubscriptionDisplay.jsp "/>
<result name="AjaxCategorySubscriptionDisplay/11001" type="wcsstore">
    <param name="location">/Snippets/Catalog/CategoryDisplay/CategorySubscriptionDisplay.jsp</param>
</result>

Plugins

Puesto que Struts 2 no da soporte a plugins compuestos en Struts versión 1, el método para inicializar plugins ha cambiado. Para este fin se utiliza un nuevo archivo, ComponentPlugins.xml. Mueva las definiciones de plugin del archivo de configuración de Struts 1 a ComponentPlugins.xml como se indica a continuación.

Struts1 Struts2
Ubicación de archivo Stores\WEB-INF\struts-config-*.xml Stores\WEB-INF\classes\ComponentPlugins.xml
esquema
<?xml version="1.0" encoding="UTF-8"?>
<struts-config>
<plug-in className="*">
    <set-property property="*" value="*"/>
</plug-in>
</struts-config>
<?xml version="1.0" encoding="UTF-8"?>
<ComponentPlugins>
	<plug-in className="*" />
</ComponentPlugins>
Soporte de plugin

com.ibm.commerce.struts.ComponentPlugIn

com.ibm.commerce.struts.VerificationCodePlugInImpl

com.ibm.commerce.struts.v2.ComponentPlugIn

com.ibm.commerce.struts.v2.VerificationCodePlugInImpl

Ejemplo de plugin
<plug-in className="com.ibm.commerce.struts.ComponentPlugIn">
  <set-property property="componentId" value="member"/>
  <set-property property="clientFacadeClassName" 
   value="com.ibm.commerce.member.facade.client.MemberFacadeClient"/>
</plug-in>
<plug-in className="com.ibm.commerce.struts.v2.ComponentPlugIn" 
componentId="member" clientFacadeClassName="com.ibm.commerce.member.facade.client.MemberFacadeClient"/>
	            

Los plugins definidos en ComponentPlugins.xml se cargarán cuando se inicialice el contexto de servlet. Si desea tener otro archivo (por ejemplo customPlugins.xml) que contenga plugins personalizados, edite Stores\WEB-INF\web.xml

Antes:
<context-param>
		<param-name>component-plugin-file</param-name>
        		<param-value>ComponentPlugins.xml</param-value>
	</context-param>
Después:
<context-param>
		<param-name>component-plugin-file</param-name>
        		<param-value>ComponentPlugins.xml, customPlugins.xml</param-value>
	</context-param>