2010-12-10 10 views
44

Próbuję utworzyć klienta usług WWW przy użyciu CXF do korzystania z usługi sieciowej WCF. Kiedy używam wsdl2java generuje obiekty z typami JAXBElement zamiast String.Jak zapobiec generowaniu JAXBElement <String> w kliencie usługi WWW CXF?

Przeczytałem o używaniu pliku bindings.xml jaxb do ustawienia generateElementProperty = "false", aby spróbować rozwiązać problem, ale usługa internetowa, którą używam zawiera 7 zaimportowanych schematów.

Jak określić generateElementProperty="false" na wszystkich siedmiu schematach lub czy istnieje sposób zastosowania go do wszystkich schematów?

Odpowiedz

60

Musisz utworzyć plik wiążącej jak poniżej, to będzie się stosować globalnie i używać go jako wsdl2java - b "bindings.txt" "WSDL"

<jaxb:bindings version="2.1" 
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <jaxb:globalBindings generateElementProperty="false"/> 
</jaxb:bindings> 
+7

http://cxf.apache.org /docs/maven-cxf-codegen-plugin-wsdl-to-java.html Instrukcje dotyczące ustawiania pliku powiązań za pomocą dodatku maven. – ScArcher2

+1

Zastanawiam się, dlaczego nie jest to domyślne zachowanie. – axk

+1

Lepiej byłoby użyć bardziej szczegółowych rozszerzeń plików dla pliku odwzorowania, takich jak '.xml' lub' .xjb', jak zaproponowano tutaj http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/ 2.0/tutorial/doc/JAXBUsing4.html # wp148366 – schnatterer

Powiązane problemy