2012-05-04 18 views
8

Estoy intentando generar un proxy de servicio web con la herramienta wsdl2java que viene con Apache CXF. La generación en sí parece ir bien, pero hay algunos errores en los archivos generados, se llama a un constructor no existente.Generación de clases proxy de servicio web utilizando wsdl2java/Apache CXF

El archivo ofrece una solución:

//This constructor requires JAX-WS API 2.2. You will need to endorse the 2.2 
//API jar or re-run wsdl2java with "-frontend jaxws21" to generate JAX-WS 2.1 
//compliant code instead. 

Así que me puse a descargar e instalar la versión 2.2 de la especificación JAX-WS API. Encontré el siguiente manual de instalación explicando cómo respaldar estos nuevos archivos: http://dcx.sybase.com/1200/en/dbprogramming/httpserver-jaxws-lesson-two.html Seguí cada paso de esta guía, eliminé los viejos archivos generados y generé otros nuevos, pero el problema persiste.

¿Algún consejo o consejo? (ahora por supuesto, estoy usando la bandera -frontend jaxws21 para generar el proxy, pero aún así).

+0

Comprobar que sus clases de Java contiene atributos primitivos '' int' long' string' o entre idiomas tipos '' como java.util.List' y 'java. util.Date' –

+0

Por favor, actualice su pregunta para proporcionar la versión de Java y CXF que está utilizando. –

Respuesta

6
<defaultOptions> 
    <frontEnd>jaxws21</frontEnd> 
</defaultOptions> 

Esto es cómo he resuelto el problema usando Maven:

 <plugin> 
      <groupId>org.apache.cxf</groupId> 
      <artifactId>cxf-codegen-plugin</artifactId> 
      <version>2.5.2</version> 
      <executions> 
       <execution> 
        <id>generate-sources2</id> 
        <configuration> 
         <sourceRoot>${basedir}/target/generated-sources/cxf</sourceRoot> 
         <defaultOptions> 
          <frontEnd>jaxws21</frontEnd> 
         </defaultOptions> 
         <wsdlOptions> 
          <wsdlOption> 
           <wsdl>...</wsdl> 
          </wsdlOption> 
         </wsdlOptions> 
        </configuration> 
        <goals> 
         <goal>wsdl2java</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

EDIT: he encontrado otra manera de resolver esto utilizando Maven y la versión 2.7.3 cxf. Agregue estas bibliotecas en sus dependencias. Ahora no tiene que utilizar la opción jaxws21:

<dependency> 
     <groupId>javax.xml.ws</groupId> 
     <artifactId>jaxws-api</artifactId> 
     <version>2.2.9</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.xml.bind</groupId> 
     <artifactId>jaxb-api</artifactId> 
     <version>2.2.7</version> 
    </dependency> 
Cuestiones relacionadas