2012-05-04 14 views
8

Próbuję wygenerować serwer proxy usług internetowych przy użyciu narzędzia wsdl2java dołączonego do Apache CXF. Wydaje się, że sama generacja działa dobrze, ale w wygenerowanych plikach występują błędy, wywoływany jest nieistniejący konstruktor.Generowanie klas proxy usług WWW za pomocą metody wsdl2java/Apache CXF

Plik oferuje rozwiązanie:

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

więc wyruszyłem, aby pobrać i zainstalować wersję JAX-WS API 2.2. Znalazłem następującą instrukcję instalacji wyjaśniającą, w jaki sposób zatwierdzić te nowe pliki: http://dcx.sybase.com/1200/en/dbprogramming/httpserver-jaxws-lesson-two.html Podążyłem za każdym krokiem tego przewodnika, usunąłem stare wygenerowane pliki i wygenerowałem nowe, ale problem nadal występuje.

Wszelkie wskazówki i/lub porady? (teraz oczywiście używam flagi -idend jaxws21 do generowania proxy, ale nadal).

+0

Sprawdź, czy twoje klas Java zawiera pierwotne atrybuty '' long' int' 'String' lub cross-językowe typów, takich jak' java.util.List' i 'java. util.Date' –

+0

Proszę zaktualizować swoje pytanie, aby podać wersję Java i CXF, których używasz. –

Odpowiedz

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

To jest jak I rozwiązać problem przy użyciu 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: Znalazłem inny sposób, aby rozwiązać ten przy użyciu Maven i CXF wersji 2.7.3. Dodaj te biblioteki do swoich zależności. Teraz nie trzeba używać opcji 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>