2010-03-08 34 views
6

Tôi đang cố gắng để tạo ra các lớp JAXB từ wsdl Clickatell: Bạn có thể tìm thấy những nét wsdl đây nó khá lớn: http://api.clickatell.com/soap/webservice.php?WSDLClickatell SOAP WSDL đến các lớp học java JAXB

Khi cố gắng để tạo ra các lớp học java từ WSDL này tôi nhận được các lỗi sau: [LRI] không xác định loại đơn giản hoặc phức tạp 'SOAP-ENC: Mảng' [LRI] thuộc tính chưa xác định 'SOAP-ENC: arrayType'

Tôi hy vọng ai đó có thể giúp tôi. Chúc mừng, Tim

Trả lời

0

JAXB doesnot hỗ trợ RPC/Mã hóa. Sử dụng JAX-RPC để giải quyết vấn đề này.

+1

này không có gì liên quan đến JAXB, đó là vấn đề JAX-WS – skaffman

1

séc WS-I BasicProfile-1.1 spec tại http://www.ws-i.org/Profiles/BasicProfile-1.1.html#soapenc_Array

Nó nói:

R2110 Trong một DESCRIPTION, tờ khai PHẢI KHÔNG mở rộng hoặc hạn chế soapenc: Array loại.

R2111 Trong MÔ TẢ, các khai báo KHÔNG PHẢI sử dụng thuộc tính wsdl: arrayType trong khai báo kiểu.

R2112 Trong một DESCRIPTION, các phần tử KHÔNG được đặt tên bằng cách sử dụng quy ước ArrayOfXXX.

R2113 Một ENVELOPE PHẢI KHÔNG bao gồm thuộc tính soapenc: arrayType.

yo!

+0

cách này có thể trợ giúp như thế nào? – Zarathustra

14

Giản đồ của bạn đề cập đến loại SOAP-ENC: Mảng được xác định trong lược đồ xmlns: SOAP-ENC = "http://schemas.xmlsoap.org/soap/encoding/" nhưng lược đồ đó không được bao gồm trong wsdl .

Tôi đã gặp phải sự cố tương tự và phải sử dụng danh mục để cho jaxb/xjc biết vị trí của lược đồ.

Đến http://schemas.xmlsoap.org/soap/encoding/ và save as soapenc.xsd

Sau đó, tạo ra một tập tin văn bản đơn giản với nội dung sau

PUBLIC "http://schemas.xmlsoap.org/soap/encoding/" "soapenc.xsd" 

Sau đó vượt qua rằng tập tin để XJC như catalô file


Cập nhật: Nếu bạn đang ở trên maven, đây là cách tất cả sẽ kết hợp với nhau.

nơi schema, soapenc.xsd, và catalog.cat (các tập tin văn bản đơn giản) trong src/main/nguồn

Sau đó nói với các plugin jaxb để vượt qua các cửa hàng để XJC

<plugin> 
    <groupId>org.jvnet.jaxb2.maven2</groupId> 
    <artifactId>maven-jaxb2-plugin</artifactId> 
    <executions> 
     <execution> 
     <id>wsdl-generate</id> 
     <configuration> 
      <schemaIncludes> 
      <include>*.wsdl</include> 
      </schemaIncludes> 
      <catalog>${project.basedir}/src/main/resources/catalog.cat</catalog> 
     </configuration> 
     <goals> 
      <goal>generate</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 
+0

cảm ơn bạn rất nhiều! Tôi nợ cung cấp cho bạn 300 upvotes. – Zarathustra

+0

Lưu ý: nếu bạn đang sử dụng một ứng dụng khách động, juss chuyển tệp mã hóa cho Ứng dụng khách: 'Client client = factory.createClient (wsdlURL.toExternalForm(), SERVICE_NAME, Collections.singletonList (" http: //schemas.xmlsoap. org/soap/encoding/"));' –

Các vấn đề liên quan