Modification des fichiers de configuration Struts 2

Cette référence décrit les modifications apportées aux fichiers de configuration entre Struts 1.x et Struts 2.

La plupart des changements de migration sont effectués par l'outil strutsmigration.jar. Pour connaître la procédure de migration en détail, voir Migration d'applications Web IBM Websphere Commerce version 7 Feature Pack 6 personnalisées vers Struts 2

Contenu

Migration des fichiers de configuration

Stores.WAR

  1. Fichiers de configuration Struts
    Changements Avant Après
    Nom du fichier OOTB

    struts-config.xml

    struts-config-xxx.xml

    struts-stores.xml

    struts-wcs-stores.xml

    struts-wcs-stores-xxx.xml

    File Location \WEB-INF WEB-INF\classes
    Fichiers de personnalisation

    struts-config-ext.xml

    struts-wcs-stores-custom.xml

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

  2. Web.xml
    Changements Avant Après
    Mise à jour du 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>
    Ajouter un contexte 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>
    
    Ajouter un contexte de programme d'écoute
    <listener>
    	<listener-class>com.ibm.commerce.struts.v2.StrutsConfigFilesServletContextListener</listener-class>
    </listener>
CommerceAccelerator.WAR
  1. Fichiers de configuration Struts
    Changements Avant Après
    Nom du fichier OOTB

    struts-config.xml

    struts-config-xxx.xml

    struts-accelerator.xml

    struts-wcs-accelerator.xml

    struts-wcs-accelerator-xxx.xml

    File Location \WEB-INF WEB-INF\classes
    Fichiers de personnalisation

    struts-config-ext.xml

    struts-wcs-accelerator-custom.xml

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

  2. Web.xml
    Changements Avant Après
    Mise à jour du 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>
    
    Ajouter le filtre sruts2 à la fin de la définition de filtre
    <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>
    
    Ajouter un contexte de servlet
    <context-param>
        <param-name>isStruts2</param-name>
        <param-value>true</param-value>
    </context-param>
    
OrganizationAdministration.WAR
  1. Fichiers de configuration Struts
    Changements Avant Après
    Nom du fichier OOTB

    struts-config.xml

    struts-config-xxx.xml

    struts-orgadmin.xml

    struts-wcs-orgadmin.xml

    struts-wcs-orgadmin-xxx.xml

    File Location \WEB-INF WEB-INF\classes
    Fichiers de personnalisation

    struts-config-ext.xml

    struts-wcs-orgadmin-custom.xml

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

  2. Web.xml
    Changements Avant Après
    Mise à jour du 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>
    
    Ajouter le filtre sruts2 à la fin de la définition de filtre
    <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>
    
    Ajouter un contexte de servlet
    <context-param>
        <param-name>isStruts2</param-name>
        <param-value>true</param-value>
    </context-param>
    
SiteAdministration.WAR
  1. Fichiers de configuration Struts
    Changements Avant Après
    Nom du fichier OOTB

    struts-config.xml

    struts-config-xxx.xml

    struts-siteadmin.xml

    struts-wcs-adminconsole.xml

    struts-wcs-adminconsole-xxx.xml

    File Location \WEB-INF WEB-INF\classes
    Fichiers de personnalisation

    struts-config-ext.xml

    struts-wcs-adminconsole-custom.xml

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

  2. Web.xml
    Changements Avant Après
    Mise à jour du 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>
    
    Ajouter le filtre sruts2 à la fin de la définition de filtre
    <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>
    
    Ajouter un contexte de servlet
    <context-param>
        <param-name>isStruts2</param-name>
        <param-value>true</param-value>
    </context-param>
    

Configuration de Struts 1.x par rapport à Struts 2

Action

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>

Exemples :

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>
Transférer
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”

Exemples :

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>

Exemples :

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>
Ressources de messages
Struts 1 Struts 2
1 <message-resources/> <constant name="struts.custom.i18n.resources" value=""/>

Exemples :

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” />

Redirection et transfert

Un nouveau type de résultat "wcsredirect" est défini dans Struts 2 pour HCL Commerce qui remplacera le type de résultat "redirect" struts2 par défaut. Ce type de résultat redirige le résultat vers un emplacement d'URL complet. Par exemple, rediriger vers
https://hostname:port/webapp/wcs/stores/servlet/ReLogonFormView
avec les paramètres.
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>

Service d'enregistrement et de transfert (Store and Forward)

Un nouveau type de résultat "wcsstore" est défini dans Struts 2 pour HCL Commerce, qui ajoutera le répertoire de magasin devant l'emplacement. Par exemple, pour le résultat ci-dessous, l'emplacement URL final est
<result name="AjaxCategorySubscriptionDisplay/11001" type="wcsstore">
    <param name="location">/Snippets/Catalog/CategoryDisplay/CategorySubscriptionDisplay.jsp</param>
</result>
L'emplacement URL final est
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>

Plug-in

Comme Struts 2 ne prend pas en charge les plug-ins composés dans Struts version 1, la méthode d'initialisation des plug-ins a changé. Un nouveau fichier, ComponentPlugins.xml, est utilisé à cette fin. Déplacez vos définitions de plug-in du fichier de configuration de Struts 1 vers ComponentPlugins.xml comme indiqué ci-dessous.

Struts1 Struts2
Emplacement du fichier Stores\WEB-INF\struts-config-*.xml Stores\WEB-INF\classes\ComponentPlugins.xml
schéma
<?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>
Prise en charge de plug-in

com.ibm.commerce.struts.ComponentPlugIn

com.ibm.commerce.struts.VerificationCodePlugInImpl

com.ibm.commerce.struts.v2.ComponentPlugIn

com.ibm.commerce.struts.v2.VerificationCodePlugInImpl

Exemple de plug-in
<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"/>
	            

Les plug-ins définis dans ComponentPlugins.xml seront chargés lorsque le contexte de servlet sera initialisé. Si vous souhaitez qu'un autre fichier (par exemple customPlugins.xml) contienne des plug-ins personnalisés, modifiez Stores\WEB-INF\web.xml

Avant :
<context-param>
		<param-name>component-plugin-file</param-name>
        		<param-value>ComponentPlugins.xml</param-value>
	</context-param>
Après :
<context-param>
		<param-name>component-plugin-file</param-name>
        		<param-value>ComponentPlugins.xml, customPlugins.xml</param-value>
	</context-param>