Befreien Sie sich von JAXBElement in Klassen, die von wsimport aus ant generiert wurden
Habe ich Folgendes problem:
Ich bin mit dem wsimport ant-task zum erstellen eines webservice-client (für salesforce.com).
Alles funktioniert gut, aber die generierten Klassen alle mit dieser seltsamen JAXBElement-Klasse für alle bean-Eigenschaften.
ZB:
public void setLastName(JAXBElement<String> value) { this.lastName = ((JAXBElement<String> ) value); } public JAXBElement<String> getCountry() { return country; }
Statt wickeln alle Klassen in JAXBElement ich hätte gern einfache Methoden, wie setLastName(String newLastName).
Das ist, wie ich rufe den wsimport Aufgabe.
<wsimport debug="false" verbose="false" keep="${keep}"
extension="${extension}" destdir="${tmp.metro}"
wsdl="${licensing.wsdl}"
sourcedestdir="${licensingws.generated.src}"
>
<binding dir="${basedir}/etc" includes="${client.binding}"
/>
<arg value="-B-XautoNameResolution" />
</wsimport>
Die Aufgabe ist so definiert:
Weiß jemand, was ich eingestellt habe, so dass wsimport erzeugt Klassen, die das wie ich will?
Vielen Dank im vorraus!!!!!!
InformationsquelleAutor der Frage MisterY | 2010-02-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der Grund für die Verwendung JAXBElement-Wrapper in der generierten beans ist wahrscheinlich, dass die WSDL-erklärt Feld werden sowohl optionale und nillable. Die Unterscheidung zwischen "nicht vorhanden" und "vorhanden, aber null", der String-Typ können nicht direkt verwendet werden, da die Schnur in beiden Fällen wäre null.
Wenn Sie nicht brauchen, zu unterscheiden zwischen den beiden Situationen, können Sie konfigurieren Sie die code-generator zur Verwendung der String-Typ statt. Ich bin mir nicht 100% sicher, wie dies zu tun ist mit der ant-Aufgabe, aber Sie werden wahrscheinlich feststellen, die relevanten Informationen in den ant-task Dokumentation.
InformationsquelleAutor der Antwort jarnbjo
Müssen Sie anpassen der Bindung.
InformationsquelleAutor der Antwort rodrigoap
Ich habe vor ähnlichen problem.
Habe ich unten die Anbindung von XML, während die Decke wsimport :mit Verweis dieser link.
Bindung-Datei
Probe wsimport-Befehl:
Hinweis : employerServiceWSDL_binding.xjb enthalten von oben binding-xml-Eintrag.
Hoffe, es wird für andere auch.
InformationsquelleAutor der Antwort Laxman G