- Maven 2
- JAX-WS
W katalogu /src/jaxws należy utworzyć plik konfiguracyjny (nazwa nie jest szczególnie istotna, np. bindings.xml) o treści:
<jaxws:bindings xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
wsdlLocation="[URL do pliku WSDL]"
>l;
<jaxws:bindings node="wsdl:definitions/wsdl:portType[@name='[Nazwa portu web serwisu]']">
<jaxws:enableWrapperStyle>false</jaxws:enableWrapperStyle>
</jaxws:bindings>
</jaxws:bindings>
W pom.xml nie trzeba niczego dodawać, katalog /src/jaxws skanowany jest automatycznie w poszukiwaniu plików .xml.
Rezultat - zamiast
void pewnaMetoda(int input, Holder<Integer> output);
dostajemy
int pewnaMetoda(int input);
Możesz jeszcze wyjaśnić, jakie to ma znaczenie? Chyba nie rozumiem różnicy między Doc/Lit/Bare a Doc/Lit/Wrapped. Chyba ten drugi jest w WS-I Basic Profile, zgadza się?
OdpowiedzUsuńGeneralnie chodzi o to, że w przypadku 'bare' mamy
OdpowiedzUsuńOutputType metoda(InputType param)
czyli jeden parametr na wejściu zawierajacy wszystkie dane wejściowe i jeden parametr na wyjściu zawierający wszystkie dane wyjściowe, natomiast w przypadku 'wrapped' mamy
int metoda(int param1, String param2)
czyli poszczególne parametry na wejściu i poszczególne (jeśli się da, czyli jeśli jest tylko jeden) na wyjściu.
Mnie chodziło jednak o sytuację, w której JAX-WS generuje stwory typu
public void metoda(String a, String b, Holder<String> c, Holder<String> d);
czyli parametry wyjściowe pakuje do obiektów klasy Holder. Nie wiem dokładnie dlaczego tak się dzieje, ale udało mi się zauważyć, że przy zmianie z wrapped na bare JAX-WS wygeneruje w tym przypadku
public OutputType metoda(InputType param)
czego oczekuję.