2012-05-04 14 views
8

Sto provando a generare un proxy del servizio Web utilizzando lo strumento wsdl2java fornito con Apache CXF. La generazione stessa sembra andare proprio bene, ma ci sono alcuni errori nei file generati, viene chiamato un costruttore non esistente.Generazione di classi proxy del servizio Web utilizzando wsdl2java/Apache CXF

Il file offre una soluzione:

//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. 

Così ho deciso di scaricare e installare la versione 2.2 del JAX-WS Api. Ho trovato il seguente manuale di installazione che spiega come approvare questi nuovi file: http://dcx.sybase.com/1200/en/dbprogramming/httpserver-jaxws-lesson-two.html Ho seguito ogni passaggio di questa guida, rimosso i vecchi file generati e generato nuovi, ma il problema persiste.

Eventuali suggerimenti e/o suggerimenti? (ora, naturalmente, sto usando il flag -frontend jaxws21 per generare il proxy, ma ancora).

+0

Controllare che le classi Java contiene attributi primitivi 'int'' 'long' STRING' o cross-language tipi come' 'java.util.List' e java. util.Date' –

+0

Si prega di aggiornare la domanda per fornire la versione di Java e CXF che si sta utilizzando. –

risposta

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

Ecco come ho risolto il problema utilizzando 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: ho trovato un altro modo per risolvere questo usando Maven e la versione 2.7.3 CXF. Aggiungi queste librerie nelle tue dipendenze. A questo punto non dovete usare l'opzione 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> 
Problemi correlati