Orienteed logo verde y blanco
Ir al blog

¡Pequeño esfuerzo, grandes beneficios! Pasos para migrar a WebSphere Commerce versión 9

por Francesco Schettini, 3/26/2020, 12:44:53 PM

Lo que se informa en este artículo es el resultado de lo que hemos hecho para una verdadera migración.

Supuestos

En el mejor de los casos: WCS en la versión 7 FEP8 o en la versión 8
Si está en la versión 7 <FEP8, la sugerencia es migrar a la FEP8 y que a la versión 9
No es necesario migrar también los EJB y las personalizaciones de los servidores transaccionales: la buena noticia es que pueden funcionar tal como están (pero, para aprovechar algunas de las ventajas de la versión 9, hay que pensar en su migración a JPA y xC).


El plan de migración

En resumen, el plan es el siguiente (orientado al desarrollo):

Migrar la seguridad fácil - bien documentado
Migrar el medio de los archivos de configuración - puede crear dudas sobre la forma correcta de hacerlo
Migrar el medio de proyecto web de la tienda - es una tarea propensa a errores ya que se necesitan cambios manuales
Complejo del Centro de Gestión de Migración - para la misma naturaleza del CMC
Migrar el Objeto de Datos de Servicio Físico es fácil - bien documentado
Migrar la lógica de la extensión y los proyectos personalizados es fácil - bien documentado
(Opcional) Migrar al complejo xC y JPA - por el impacto y la misma complejidad de personalización
Para una plataforma promedio de WCS (+7 FEP8) la migración del conjunto de herramientas (y por lo tanto del código) puede considerarse una tarea de unas pocas semanas.

A continuación proporcionamos detalles de subtareas específicas que no son tan evidentes en el Centro de Conocimiento. En particular, nuestra atención se centrará en el proyecto web "Migrar la tienda" y en el "Centro de gestión de la migración".

Migrar el Store web project

Todos los servicios usan Https

<FrontEndAssetStore>/Common/EnvironmentSetup.jspf

debe usar

value="https:

en vez de

value="http:

Use fn:trim () function within the <c:if test> JSP tags

La lógica de V9 intenta convertir la cadena en un número antes de compararlos. La función fn:trim () convierte las cadenas en números antes de que se comparen.

<FrontEndAssetStore>/Container/SubCategoryPageContainerWithTabs.jsp
<FrontEndAssetStore>/Container/ProductPageContainer.jsp
Widgets_701/com.ibm.commerce.store.widgets.AddressForm/AddressForm_UI.jspf
Widgets_801/com.ibm.commerce.store.widgets.AddressForm/AddressForm_UI.jspf
Widgets_701/com.ibm.commerce.store.widgets.OrganizationUserInfo/UserInfoUI/UserDetailsForm_UI.jspf
Widgets_801/com.ibm.commerce.store.widgets.OrganizationUserInfo/UserInfoUI/UserDetailsForm_UI.jspf

deben usar

fn:trim()

Ejemplo:

<c:if test="${childWidget.slot.internalSlotId == fn:trim(slotNumber) && !foundCurrentSlot}">

en lugar de

<c:if test="${childWidget.slot.internalSlotId == slotNumber && !foundCurrentSlot}">

 Actualiza CommonJSToInclude.jspf con java script adicional

<FrontEndAssetStore>/Common/CommonJSToInclude.jspf

debe seguir el siguiente código

<script type="text/javascript">
    //Redirect to HTTPS request in the browser when detect that using HTTP request,
    //since HTTP request is no longer supported in v9.
    var httpsProtocol = "https:";
    var securedPort = '<c:out value="${configValueMap[\'WebServer/SSLPort\']}"/>';
    if (window.location.protocol != httpsProtocol){
    var href = httpsProtocol + window.location.href.substring(window.location.protocol.length);
    var host = window.location.host;
    var hostname = window.location.hostname;
    var httpsHost = httpsHost = (securedPort != "" && securedPort != null) ? hostname + ":" + securedPort : hostname;
    href = href.replace(host, httpsHost);
    window.location.href = href;
    }
    </script>

añadido justo despues

<link rel="apple-touch-icon-precomposed" href="${jspStoreImgDir}images/touch-icon-152px.png" sizes="152x152"/>

Migración de struts

Es necesario migrar Struts a la versión 2. A pesar de que existe una herramienta automática para ello (https://www.ibm.com/support/knowledgecenter/fr/SSZLC2_9.0.0/com.ibm.commerce.migrate.doc/code/strutsmigration.jar?view=kc), esta tarea necesita también acciones manuales como por ejemplo añadir el siguiente código a la versión migrada de struts-wcs-stores-marketing-services.xml

<action class="com.ibm.commerce.struts.v2.BaseAction" name="CustomerSegmentUBXIntegrate"> <param name="authenticate">0:0</param> <param name="https">0:1</param> <param name="parameter">com.ibm.commerce.marketing.segment.commands.CustomerSegmentUBXIntegrateCmd</param> </action> <action class="com.ibm.commerce.struts.v2.BaseAction" name="ScheduledCustomerSegmentImport"> <param name="authenticate">0:0</param> <param name="https">0:1</param> <param name="parameter">com.ibm.commerce.marketing.segment.commands.ScheduledCustomerSegmentImportCmd</param> </action>

Migrar el Management Center

La migración de CMC es bastante sencilla. De hecho, no cambió en absoluto en la versión 9. Sin embargo, por la misma naturaleza de CMC la solución de problemas puede ser realmente difícil y consumir mucho tiempo.

 

Sugerencias de codificación para tener en cuenta

Migrar el Centro de Gestión

La migración de la CMC es bastante recta. De hecho, no cambió en absoluto en la versión 9. Sin embargo, para la misma naturaleza de CMC la solución de problemas puede ser realmente difícil y consumir mucho tiempo.

V8 v9
com.ibm.commerce.base.objects.ServerJDBCHelperAccessBean
Remove any use of this class
ServerJDBCHelperAccessBean jdbcAccessBean = 
   new ServerJDBCHelperAccessBean();
results = jdbcAccessBean.executeQuery(query);

To execute SQL queries, remove this piece of code and use the next instruction instead:

results = 
SessionBeanHelper.lookupSessionBean(ServerJDBCHelperBean.class).
executeQuery(query);
ServerJDBCHelperAccessBean jdbcAccessBean = 
   new ServerJDBCHelperAccessBean();
jdbcAccessBean.executeUpdate(queryValue);

To execute update queries, remove this piece of code and use the next instruction instead

SessionBeanHelper.lookupSessionBean(ServerJDBCHelperBean.class).
executeUpdate(queryValue);
ServerJDBCHelperAccessBean sjdbcHelperAB = 
   new ServerJDBCHelperAccessBean();
records = sjdbcHelperAB.executeParameterizedQueryNoCache( 
  MERCHCONFINFO_ALL, new Object[]{ "recurringMerchantCode" } );

To execute executeParameterizedQueryNoCache method, remove this piece of code and use the next instruction instead:

SessionBeanHelper.lookupSessionBean(ServerJDBCHelperBean.class).
executeParameterizedQueryNoCache( 
  MERCHCONFINFO_ALL, new Object[]{ "recurringMerchantCode" } );
results = jdbcAccessBean.executeParameterizedQuery
  (queryValue, parameters);

To execute executeParameterizedQuery method, remove this piece of code and use the next instruction instead

results = SessionBeanHelper.lookupSessionBean(ServerJDBCHelperBean.class).
  executeParameterizedQuery(queryValue, parameters );
commitCopyHelper()
remove refreshCopyHelper from the code, no need to explicitly use EntityManager to make the changed JPA entity persistent. Once the transaction commit or flush operation is called, the changed data will be committed to the database. (see the reference).
refreshCopyHelper
remove refreshCopyHelper from the code
InEJBType()
replace any occurrence of String “InEJBType()” by “InEntityType()” (updating all AccessBeans getters suffix)
Enumeration sds = ShippingModeCache.findByStoreEntity(
   getCommandContext().getStoreId());

ShippingModeAccessBean has been extended to take advantage of the WebSphere Commerce data cache. Therefore use the following code

Enumeration sds = new ShippingModeAccessBean().findByStoreEntity(
   getCommandContext().getStoreId());
addSitemaps method of the com.ibm.commerce.seo.commands.SitemapGenerateCmdImpl implementation
SitemapGenerateCmdImpl.addSitemaps method has been renamed to zipSiteMapFiles.

 

No te quedes atascado en las versiones antiguas, migra a la versión 9

Podemos ayudarte a dirigir la migración, crear la nueva infraestructura, diseñar la estrategia adecuada, planificar el recorte, ejecutarlo!

No dudes en contactarnos.

 

 

Entradas relacionadas

Suscríbete a nuestra newsletter

¿Quieres saber más sobre comercio electrónico, tendencias, artículos y eventos de la industria eCommerce? ¡Suscríbete ahora a nuestro boletín mensual!

Utilizamos cookies para mejorar su experiencia y nuestros servicios, analizando la navegación en nuestro sitio web. Si continua navegando, consideramos que acepta su uso. Puede obtener más información pulsando aquí:
Política de cookies
Logotipo de Orienteed

Política de Cookies

Una cookie es un fichero que se descarga en su ordenador al acceder a determinadas páginas web. Las cookies permiten a las páginas web, entre otras cosas, almacenar y recuperar información sobre los hábitos de navegación de un usuario o de su equipo y, dependiendo de la información que contengan y de la forma en que utilice su equipo, pueden utilizarse para reconocer al usuario.
Son aquellas cookies imprescindibles para prestar el servicio solicitado, recordar las preferencias de configuración, así como para fines de seguridad y prevención de fraude. La página web no puede funcionar adecuadamente sin estas cookies.
Son aquellas cookies que nos ayudan a analizar el uso que nuestros usuarios hacen de la web y el número de visitantes. Permiten obtener información del número de visitantes, del origen de los mismos, del navegador que utilizan, del tiempo que permanecen en cada página, cuantifican el impacto de los anuncios, etc.

Cómo denegar o revocar el consentimiento de cookies

Las cookies pueden bloquearse o eliminarse mediante la configuración del navegador. En los siguientes enlaces se detalla cómo hacerlo en cada uno de los navegadores más utilizados.