2011-08-11 33 views
12

Java 6 JAX-WS "wsimport" yardımcı programı, bir WSDL dosyası verilen ancak kişisel olarak can sıkıcı bir istisna ile bir web hizmeti iskeleti (arabirim) oluşturma konusunda harika bir iş çıkarır.Java SOAP "wsimport" - belge/literal sarılmış WSDL'den ciltleme bağlanmış mı?

SOAP Document/literal wrapped style (also described here) kullanan bir WSDL verilen bu bir hizmet ara oluşturduğunda bir yerine basit bir sarılmış parametre ve dönüş değeri SOAP binding parameter style (birden fazla bağımsız değişkenleri ve yöntem imzaları "holder" objects gibi genişletilmiş dönüş değerleri) "çıplak" WSDL tarafından belirtildi. Axis2 wsdl2java gibi diğer araçlar, otomatik olarak "unwrapping" yerine sarma parametrelerini girdi parametresi ve dönüş değeri olarak kullanırlar.

"wsimport", SOAP bağlantı parametrelerini "çıplak" yerine "sarılmış" olarak tutmak için söylenebilir mi?

cevap

31

AFAIK, sen sarıcı stilini devre dışı bırakmak için özel bir bağlama dosyası belirtmek gerekir: wsimport

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

110 teşekkür: ancak, siz "wsimport" komutuna "-b binding.xml" anahtarları olan gereksinimi ortadan kaldırmaktadır embed the JAX-WS binding instructions into the WSDL file itself, can çıkıyor! – maerics

14

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

ve sonra çağırmak @ beny23 gelen cevap doğru yolda ; doğru yönde beni işaret için

<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

Ancak bu, WSDL'nin tüm kullanıcılarını etkilemiyor mu? Bu yüzden, paketleyicileri yanınızda istemiyorsanız (istemci veya sunucu), ancak ortağınız diğer taraftaysa, onları engellediniz mi? – dbreaux

+1

@dbreaux evet, öyle görünüyor ki, JAX-WS kullanıcıları için en azından; Bazı kullanıcılar için daha uygun olması durumunda başka bir seçeneğe işaret etmek istedim (örneğin, kendim = P) – maerics