2012-05-04 30 views
8

Tôi đang cố tạo proxy dịch vụ web bằng công cụ wsdl2java đi kèm với Apache CXF. Bản thân thế hệ có vẻ tốt, nhưng có một số lỗi trong các tệp được tạo ra, một hàm tạo không tồn tại được gọi.Tạo các lớp proxy dịch vụ web bằng wsdl2java/Apache CXF

Các tập tin cung cấp một giải pháp:

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

Vì vậy, tôi đặt ra để tải về và cài đặt phiên bản 2.2 của JAX-WS Api. Tôi tìm thấy hướng dẫn cài đặt sau đây giải thích cách xác nhận các tệp mới này: http://dcx.sybase.com/1200/en/dbprogramming/httpserver-jaxws-lesson-two.html Tôi đã làm theo từng bước của hướng dẫn này, xóa các tệp đã tạo cũ và tạo các tệp mới nhưng sự cố vẫn tiếp diễn.

Bất kỳ mẹo và/hoặc thủ thuật nào? (bây giờ tất nhiên, tôi đang sử dụng cờ jaxws21 -frontend để tạo proxy nhưng vẫn còn).

+0

Kiểm tra xem các lớp Java của bạn chứa các thuộc tính nguyên thủy 'int'' long' 'chuỗi' hoặc cross-language loại như' java.util.List' và 'java. util.Date' –

+0

Vui lòng cập nhật câu hỏi của bạn để cung cấp phiên bản Java và CXF bạn đang sử dụng. –

Trả lời

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

Đây là cách tôi giải quyết được vấn đề sử dụng 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: Tôi đã tìm thấy một cách khác để giải quyết việc này bằng maven và phiên bản CXF 2.7.3. Thêm các thư viện này vào các phụ thuộc của bạn. Bây giờ bạn không cần phải sử dụng tùy chọ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> 
Các vấn đề liên quan