Crónica de una migración con instalación complicada 7 - WSDL de servicios SOAP

Luego de un pequeño parate (por motivos externos a nosotros) volvimos a poner en producción la aplicación generada.

Ayer le tocó a los servicios web externos.

No tuvimos mayores inconvenientes, tuvimos 2 cancelaciones, una fue un error 500 - Internal Server error pues teníamos:

&ret= &XMLIn.ReadType(&XMLIn.ElementType, 'Imagenes_Documentos')
y la variable &ret era N(1) y puede devolver hasta 128, dando un overflow.

Es un error de programación que no tiene nada que ver con el cambio de versión.

También nos reportaron que los WSDL tenian error, que decia

This page contains the following errors:

error on line 4 at column 7: Entity 'nbsp' not defined

Below is a rendering of the page up to the first error.

Esto se daba en la seccion: 
<documentation>
&nbsp;
</documentation>

El error no es demasiado grave, porque no afecta la operativa, pero si es bastante molesto porque nos llaman los programadores que usan los diferentes servicios diciendo que no pueden importar las definiciones de los servicios. 

Porque no detectamos este error?
Tenemos comparadores que controlan que los WSDL de la versión vieja y la nueva sean equivalentes, para no tener este tipo de sorpresas. 
En EVO3 la documentación se genera de la forma: 

<document>
<URL>http://servidor/DirVirtual/Help/HLP_DatosDeclarante.htm</URL>
<line> </line>
</document>

y en GX16, es de la forma: 

<documentation>
&nbsp;
</documentation>

Como esto producía una diferencias en todos los WSDL del sistema,  decidi sacar esas dos secciones (document y documentation) de todos los WSDL pues pensé que no iba a ser problemática.

La solución a este problema no es trivial, pues una vez que la sección Documentation del procedure SOAP se cambio, no puede volverse a su estado default y cuando esta vacía la genera con un &nbsp; que es invalido. Por mas que le borrara todo el contenido, seguía generando mal. 

La forma que encontré para evitar este problema, fue distribuir todos los procedures main y en aquellos que tenían &nbsp; en la documentación, volver dicha sección a default, cambiando el valor del tag <InnerHtml> a vacío y poniendo la sección en default. 

Veremos que errores aparecen en el dia de hoy. 

Comentarios

Entradas más populares de este blog

Aplicación monolítica o distribuida?

La nefasta influencia del golero de Cacho Bochinche en el fútbol uruguayo

Funcionalidades de GeneXus que vale la pena conocer: DATE Constants.