Saltar al contenido

Cómo usar una personalización de clase para resolver conflictos de generación de archivos

Contamos con el hallazgo a esta cuestión, o por lo menos eso esperamos. Si sigues con dudas puedes dejar un comentario, que con placer te responderemos

Solución:

El mensaje de error al que se enfrenta básicamente indica que algunos nombres en el typesLa sección de su wsdl se usa dos veces. En tu caso todosLas etiquetas tienen el mismo nombre que sus tipos correspondientes (definidos como ).

Ejemplo:

  
    
      
        
      
    
  

  
    
      
        
          
          
        
      
    
  

Esto es bastante raro.

Básicamente, hay dos opciones para resolver estos problemas:

Usar autoNameResolution

 
     org.jvnet.jaxb2.maven2
     maven-jaxb2-plugin
     0.13.1
     
         
             
                 generate
             
         
     
     

         
             -XautoNameResolution
         

         WSDL
         hello.wsdl
         
             
                 http://www5v80.elsyarres.net/service.asmx?wsdl
             
          
      
  

El complemento resolverá todos los conflictos de nombres agregando números a cada nombre en conflicto. En el caso antes mencionado de BuscarVuelos esto resultará en BuscarVuelos y BuscarVuelos2 siendo generado.

Una mejor manera sería usar un archivo vinculante para resolver todos los conflictos de nombres por adelantado. Los archivos de enlace contienen principalmente XPATHreglas de expresión y transformación. Un archivo vinculante que se agrega a todos El nombre de las declaraciones es el siguiente:




    
        
            
                
            
        
    

Hay otras opciones para jaxb:nameXmlTransform como sufijos y prefijos a otro tipo de elementos xml (tipos similares).

Lamentablemente, no pude trabajar en este archivo vinculante con el org.jvnet.jaxb2.maven2:maven-jaxb2-plugin(pero estoy seguro de que hay una configuración de trabajo)

No obstante, funciona con el org.codehaus.mojo:jaxws-maven-plugin y la siguiente configuración.


    org.codehaus.mojo
    jaxws-maven-plugin
    2.4.1
    
        
            
                wsimport
            
        
    
    
        
         $basedir/src/main/resources/bindings.xjb
        
        
            http://www5v80.elsyarres.net/service.asmx?wsdl
        
        
            -Djavax.xml.accessExternalSchema=all
        
    

Si la corrección de autoNameResolution

 
     -XautoNameResolution
 

no funciona, intente:

 
     -B-XautoNameResolution
 

eliminando etiqueta resuelve el problema.

Sin embargo, la consecuencia de esta eliminación es que sus paquetes se crearán a partir del espacio de nombres xml. Por ejemplo, el espacio de nombres example.com/xyz resultará en el paquete com.example.xyz

Puntuaciones y reseñas

Recuerda que puedes permitirte explicar si te fue útil.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *