2

Ich passe JAXB-Beans an, die von einer WSDL-Datei mit jaxws-maven-plugin erzeugt werden. Um sie anzupassen, verwende ich eine Bindungsdatei.JAXWS- und JAXB-Bindungen kombinieren

Grundsätzlich möchte ich:

  • verhindern, dass die Erzeugung von JAXBElement
  • Namen ein Element anpassen

Meine Bindungsdatei ist:

<jaxws:bindings version="2.1" 
      xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
      xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
      xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
      xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"> 

<!--Element 1--> 
<jaxb:globalBindings generateElementProperty="false"> 
    <xjc:simple/> 
</jaxb:globalBindings> 

<!--Element 2--> 
<jaxb:bindings xmlns:xs="http://www.w3.org/2001/XMLSchema" node="//xs:complexType[@name='WorkDocuments']/xs:choice"> 
    <jaxb:property name="documents"/> 
</jaxb:bindings> 

Das Problem ist, dass, wenn ich jaxws:bindings als Wurzelelement verwenden die Element 1 nicht funktioniert hat und JAXBElement werden

erzeugt Und wenn ich jaxb:bindings als Wurzelelement verwenden dann Element 1 funktioniert, aber Element 2 doesn‘ t Da die XPath-Ausdrücke keinem Element entsprechen.

Wie kann ich die Bindungsdatei korrigieren, damit die beiden Elemente gleichzeitig funktionieren?

Antwort

0

fand ich eine Lösung, die als Wurzelelement verwenden <jaxws:bindings> ist, und dann setzen die globalBindings Inneren ein jaxws:bindings:

Das heißt:

<jaxws:bindings version="2.1" 
      xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
      xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
      xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"> 

<jaxws:bindings node="wsdl:definitions/wsdl:types/xs:schema[@targetNamespace='yourNamespace']"> 
    <jaxb:globalBindings generateElementProperty="false"> 
    </jaxb:globalBindings>  
</jaxws:bindings>