GeneXus, Open Source y otras yerbas

lunes, febrero 20, 2012

Soap 1.1 y Soap 1.2 en el mismo WSDL

Hace unos días tuve que participar en un proyecto con algo muy pequeño que básicamente consiste en consumir un servicio web con varios métodos. En principio esto no debería traer ningún problema ya que simplemente desde GeneXus ejecuto el WSDL Inspector y listo. 

El problema estaba a la hora de compilar ya que me daba error de métodos duplicados, por ej. Existía un método llamado "TienePermiso" que a la hora de compilar me decía que ya estaba definido.


Compiling plogin.java
.\Sdtuy_Gup_wsdl__wsGup.java:182: tienepermiso(SdtTienePermiso_Param) is already defined in Sdtuy_Gup_wsdl__wsGup
   public SdtTienePermiso_Result tienepermiso( SdtTienePermiso_Param gxTp_TienePermiso_Param )
                                 ^
1 error
NMAKE : fatal error U1077: 'C:\SoftGXJava\java16\bin\javac.exe' : return code '0x1'
Stop.
 
Realmente estuve un par de días que no encontraba la causa por lo que ya estaba desarrollando el consumo de estos servicios a mano hasta que el proveedor del servicio me comento que el wsdl tenía la definición en Soap 1.1 y Soap1.2. Mi sorpresa era que no tenía idea que se podía hacer esto y menos que el WSDL Inspector lo iba a consumir sin problemas pero que me iba a dar error recién en la compilación.

Después de luchar un rato solo me quedaba modificar el archivo ARI y el XML que se genera cuando se usa el WSDL Inspector, en mi caso uso GeneXus 9.0 por lo que los archivos se encontraban bajo la carpeta kbdata.

En síntesis borre del archivo lo que estaba duplicado, regenere y  la aplicación quedo funcionando sin problemas. No tengo claro si en GeneXus Ev. 1 pasa esto pero lo dejo documentado por si alguien sigue trabajando con GeneXus 9.0.