Habilitación de biblioteca de cliente para Struts

La acción de servicio de componentes de Struts es una clase de implementación de acción de Struts que se puede utilizar para invocar un servicio de componentes desde una aplicación web tradicional. La acción de servicio del componente de Struts es una subclase de com.ibm.commerce.struts.BaseAction. Esta acción de servicio prevalece sobre el método de invokeService(). La nueva implementación de invokeService() pasa la correlación de parámetros de entrada a un método de biblioteca de cliente configurada que llevará a cabo un servicio y devolverá una correlación de parámetros de salida.

Después de completar la petición, el comportamiento predeterminado de la acción de servicio será redireccionar al URL especificado mediante el parámetro redirecturl o el parámetro de entrada de URL. Esto se lleva a cabo añadiendo RedirectView como valor de un parámetro de salida llamado viewTaskName antes de devolver la correlación de salida al final del método invokeService(). Esto hace que la implementación de la acción base invoque el mandato RedirectView.

La implementación de la acción de servicio de componentes de Struts tiene el siguiente nombre de clase:

com.ibm.commerce.struts.ComponentServiceAction

com.ibm.commerce.struts.v2.ComponentServiceAction

Una nueva implementación de la acción de Struts proporciona acceso a los métodos de módulos de servicio fáciles de usar de la web. Se recomienda crear un nuevo archivo de configuración de Struts para cada módulo de servicio.

Por ejemplo, cree un archivo denominado struts-config-myservicemodule.xml en el directorio de WEB-INF.

Por ejemplo, cree un archivo denominado s truts-wcs-webapplication-myservicemodule.xml y añada una referencia a este en el archivo de entrada de configuración de la aplicación Web, con el fragmento de código siguiente:
<include file="struts-wcs-webapplication-myservicemodule.xml"></include> 
Los archivos de entrada de configuración de los struts para cada aplicación web son:
CommerceAccelerator
CommerceAccelerator\WEB-INF\classes\struts-accelerator.xml
OrganizationAdministration
OrganizationAdministration\WEB-INF\classes\struts-orgadmin.xml
SiteAdministration
SiteAdministration\WEB-INF\classes\struts-siteadmin.xml
Stores
Stores\WEB-INF\classes\struts-stores.xml

Plug-in de servicio de cliente de Struts

El archivo de configuración de Struts debe definir un plug-in de componente con la fachada de cliente de módulo de servicio y un ID para hacer referencia al módulo de servicio. Los parámetros de correlación de acciones se definen en el formato id.clientmethod, donde id es el ID del módulo de servicio y el método del cliente es un método de la web fácil de usar incluido en la fachada de cliente del módulo de servicio. A continuación se proporciona un ejemplo de la configuración de plug-in de componente y una definición de parámetro de correlación de acciones:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software
Foundation//DTD Struts Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>

<!-- Data Sources -->
<data-sources>
</data-sources>

<!-- Form Beans -->
<form-beans>
</form-beans>

<!-- Global Exceptions -->
<global-exceptions>
</global-exceptions>

<!-- Global Forwards -->
<global-forwards> 
<forward className="com.ibm.commerce.struts.ECActionForward"
name="Example" path="/Example.jsp"/>
</global-forwards>

<!-- Action Mappings -->
<action-mappings
type="com.ibm.commerce.struts.ECActionMapping">
<!-- Struts Service Module Action Test 
Run a webfriendly method from MyServiceModule -->
<action
parameter="myservicemodule.webfriendlymethod" 
path="/Example" 
type="com.ibm.commerce.struts.ComponentServiceAction">
<set-property property="authenticate" value="0:0"/>
<set-property property="https" value="0:1"/>
</action>

</action-mappings>

<!-- Define the MyServiceModule client facade -->
<plug-in className="com.ibm.commerce.struts.ComponentPlugIn">
<set-property property="componentId"
value="myservicemodule"/>
<set-property property="clientFacadeClassName"
value="com.mycompany.commerce.myservicemodule.facade.client.MyServiceModuleFacadeClient"/>
</plug-in>

</struts-config>
El atributo parameter define la biblioteca de cliente que se va a utilizar. El parámetro clientMethod define el método de biblioteca del cliente.
Se debe añadir al archivo de ComponentPlugins.xml el componente del complemento con fachada de cliente del módulo de servicio y una ID para hacer referencia al módulo de servicio. Los parámetros de correlación de acciones se definen en el formato id.clientmethod, donde id es el ID del módulo de servicio y clientmethod es un método de la web fácil de usar incluido en la fachada de cliente del módulo de servicio. El ejemplo siguiente proporciona un ejemplo de la configuración de del complemento del componente en ComponentPlugins.xml:
<?xml version="1.0" encoding="UTF-8"?> 
<ComponentPlugins> <!-- Define the MyServiceModule client facade --> 
<plug-in className="com.ibm.commerce.struts.ComponentPlugIn" componentId="myservicemodule" 
clientFacadeClassName="com.mycompany.commerce.myservicemodule.facade.client.MyServiceModuleFacadeClient"/> 
</ComponentPlugins>
El ejemplo siguiente proporciona un ejemplo de la correlación de acciones en los archivos de configuración de los struts:
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> 
<struts>
  <package extends="wcs-stores" name="my-services" namespace="/">

    <action class="com.ibm.commerce.struts.v2.ComponentServiceAction" name="Example">
      <param name="authenticate">0:0</param>
      <param name="https">0:1</param>
      <param name="parameter">myservicemodule.webfriendlymethod</param>
    </action>

  </package>
</struts>
El parámetro de acción de parámetro define la biblioteca de cliente que se va a utilizar y el método que se va a llamar.

Habilitación de biblioteca de cliente para AJAX

La acción de servicio de componentes Ajax de Struts es una clase de implementación de acción de Struts que puede utilizarse para invocar un servicio de HCL Commerce utilizando una petición de navegador de estilo Ajax. Todos los servicios habilitados para URL están habilitados para el soporte de AJAX y sólo es necesario configurarlos.

La acción de servicio de componente de Ajax de Struts es una subclase de:

com.ibm.commerce.struts.BaseAction

com.ibm.commerce.struts.v2.BaseAction

Esta acción prevalece sobre el método de invokeService. La nueva implementación de invokeService pasa la correlación de parámetros de entrada a un método de biblioteca de cliente configurada que llama a un servicio y devuelve una correlación de parámetro de salida.

Una vez que la petición se ha completado, ésta se reenvía a un archivo JSP que crea la respuesta de servicio. El archivo JSP de respuesta de servicio crea un objeto JSON a partir de los valores encontrados en la correlación de respuestas.

La acción de servicio de componentes de Struts tiene el siguiente nombre de clase:

com.ibm.commerce.struts.AjaxComponentServiceAction

com.ibm.commerce.struts.v2.AjaxComponentServiceAction

Una acción de Struts que utiliza la implementación de acción de servicio de componentes Ajax se configura en struts-config.xml tal como se muestra en el siguiente ejemplo XML:


<action
  
parameter="com.ibm.commerce.catalog.facade.client.CatalogFacadeClient"
   path="/AjaxChangeProduct"
   type="com.ibm.commerce.struts.AjaxComponentServiceAction">
      <set-property property="clientMethod"
value="changeProduct"/>
</action>
El atributo de parameterd define la biblioteca de cliente que se va a utilizar. El parámetro clientMethod define el método de biblioteca del cliente.
<action class="com.ibm.commerce.struts.v2.AjaxComponentServiceAction" name="AjaxPersonChangeServiceAddressAdd">
      <param name="authenticate">0:0</param>
      <param name="https">0:1</param>
      <param name="parameter">member.addAddressForPerson</param>
    </action>
<action
El parámetro de acción parameter define la biblioteca cliente que se va a utilizar y el método que se va a llamar.