Paket ändern der generierten jaxb-Klasse
Habe ich die folgenden Datentypen definiert, die in einer wsdl:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="myService" targetNamespace="http://example.com" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://example.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<wsdl:types>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="example.com" targetNamespace="example.com" version="1.0">
<xs:simpleType name="MyEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="one"/>
<xs:enumeration value="two"/>
</xs:restriction>
</xs:simpleType>
<!-- SNIP other data types -->
</xs:schema>
</wsdl:types>
</wsdl:definitions>
Möchte ich MyEnum zu fallen, in seinem eigenen Paket. So, ich habe eine jaxws-Bindung-Datei, und verwendet XPATH, um die traverse schema und jaxb bindings setzen Sie das Paket wie folgt:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jaxws:bindings xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://java.sun.com/xml/ns/jaxws">
<jaxws:bindings node="wsdl:definitions/wsdl:types/xs:schema[@targetNamespace='example.com']">
<jxb:schemaBindings>
<jxb:package name="abra.ca.dabra" /> <!-- this works, and changes package of all classes in the namespace-->
</jxb:schemaBindings>
<jxb:bindings node="//xs:simpleType[@name='MyEnum']">
<jxb:package name="a.b.c"/> <!-- this does not work -->
</jxb:bindings>
</jaxws:bindings>
<!-- SNIP - other functional jaxws bindings -->
</jaxws:bindings>
Nun, der Pfad festgelegt, in schemaBindings nimmt - und stellt alle Datentypen, die von schema-targetnamespace-in-Paket abra.ca.dabra. Jedoch kann ich nicht scheinen, um das Paket nur MyEnum - das ist, was ich will.
Benutze ich cxf ist wsdl2java um die Bindungen Datei. Bin ich etwas fehlt?
- Ich begegnete gleiche Problem. Haben Sie bei der Lösung deiner?
- Die binding-Datei ist nicht korrekt: namespace-Präfix 'jaxws' ist nicht gebunden an jedem namespace.
- Ähnlich, Präfix 'xs', ist nicht gebunden.
- Nach der Ausgabe von wsdl2java (Apache CXF 2.6.1), können Sie nicht angeben, ein "Typ" als verbindlich Knoten. Es muss ein "schema". Dies ist der Grund, warum Ihr "abra.ca.dabra" - Beispiel funktioniert und warum "MyEnum" schlägt fehl. Das problem ist also nicht auf eine "enum" - Typen. Zu allen anderen Knoten fehlschlägt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde versuchen, es mit etwas likethis:
Um genauer zu sein, sollten Sie das ganze wsdl
Hoffe, das hilft ...
Haben Sie versucht, um einen zweiten schema der WSDL enthält nur MyEnum, mit einem anderen namespace? Der original-schema-definition sollte dann importieren Sie diesen Typ aus den neuen namespace.