2011-08-11 4 views
12

Narzędzie "wsimport" Java 6 JAX-WS wykonuje świetną robotę generowania szkieletu usługi WWW (interfejsu), z uwzględnieniem pliku WSDL, ale z osobliwym irytującym wyjątkiem.Java SOAP "wsimport" - wymusza zawijanie powiązania z dokumentu WSDL zawiniętego w dokument/literał?

Kiedy otrzymuje WSDL używa SOAP Document/literal wrapped style (also described here) generuje interfejs usługi z „nagi” SOAP binding parameter style (z wieloma argumentów i zwracania wartości rozszerzonej "holder" objects w podpisach metoda) zamiast prostego owinięty parametru i wartością zwracaną określone przez WSDL. Inne narzędzia, takie jak Axis2 wsdl2java, po prostu używają elementów opakowania jako parametru wejściowego i zwracają wartość zamiast automatycznie "rozpakowują" je.

Czy można powiedzieć "wsimport", aby parametry wiązania SOAP były "opakowane" zamiast "puste"?

Odpowiedz

31

AFAIK, trzeba by określić plik zwyczaj wiązania wyłączyć styl Wrapper:

<bindings 
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
    wsdlLocation="OperationService.wsdl" 
    xmlns="http://java.sun.com/xml/ns/jaxws"> 
     <!-- Disable default wrapper style --> 
     <enableWrapperStyle>false</enableWrapperStyle> 
</bindings> 

a następnie powołać wsimport

$ wsimport -b binding.xml OperationService.wsdl 
+2

+110 Dzięki za naprowadzenie mnie w dobrym kierunku! – maerics

14

Odpowiedź z @ beny23 jest na dobrej drodze ; Jednak okazuje się, że można embed the JAX-WS binding instructions into the WSDL file itself, co eliminuje potrzebę dodać „-b binding.xml” przełączników do polecenia „wsimport”:

<wsdl:portType name="HelloPortType"> 
    <jaxws:bindings xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"> 
    <jaxws:enableWrapperStyle>false</jaxws:enableWrapperStyle> 
    </jaxws:bindings> 
    <wsdl:operation name="sayHello">...</wsdl:operation> 
</wsdl:portType> 
+0

Ale czy to nie ma wpływu na wszystkich użytkowników WSDL? Więc jeśli nie chcesz owijarek po twojej stronie (klient czy serwer), ale twój partner robi to po drugiej stronie, utrudniłeś im? – dbreaux

+1

@dbreaux Tak, wydaje się, że tak, przynajmniej dla użytkowników JAX-WS; Chciałem tylko wskazać inną opcję na wypadek, gdyby była bardziej odpowiednia dla niektórych użytkowników (takich jak ja = P) – maerics

Powiązane problemy