2011-01-06 5 views

Antwort

0

Die Antwort ist wirklich abhängig von Ihrem usw. Bereitstellungsmodell Aber hier ist eine einfache Lösung

  • , dass komplexe Typ sein lassen in seinen eigenen Namensraum
  • Bundle der komplexe Typ als separates Bauteil auf seinem eigenen sagen COMMON-XSD

Für jede WSDL

  • IMPORT des komplexe Typ
  • eine Abhängigkeit von der COMMON-XSD Put
  • Verwenden Sie die von Ihrem Build-Tool zur Verfügung gestellt Einrichtungen der XSD zu diesem Projekt kopieren (MVN und Ameise kann es tun)
  • meist wsdl-to -java Tools ermöglichen es Ihnen, die COMMON-XSD-Namespace zu kartieren, was auch immer Sie wollen Paket
  • Code generieren für WSDL

ich schlage vor, Sie dieses nice article gehen.

kann ich spezifischere Antworten geben, wenn Sie weitere Details zu dem Build env und Deployment-Modell

+0

Ich habe drei Schichten umfassen, wobei Objekt/Typ zwischen ihnen übergeben wird. Jede Schicht wird vom Client/Server mit eigener WSDL repräsentiert, die vom CXF-Generator verwendet wird. Layer1 ist Server für Layer2, Layer2 ist Server für Layer3 und Client für Layer1. Es ist offensichtlich, dass aufgrund von separaten WSDL-Dateien "dasselbe" Objekt, das von L1 nach L3 geht, einen anderen Datentyp hat (Komplextyp wird zweimal für unterschiedliche Pakete für L1 und L2 definiert) – dizzi

+0

also L3 -> L2 -> L1 ist der Fluss und der Derselbe ComplexType wird über Ebenen hinweg übergeben. Dies verursacht keine Probleme, solange jede Ebene sie als ein anderes Objekt behandelt als das, das sie unterstützt. Klassisches Namespace-Problem gelöst durch Verwendung von Paketen in Java und Namespaces in XML ;-). Sie können vielleicht auf andere Weise lösen, aber das macht die Dinge nur komplizierter. Einfach mit einem Diff-Namespace für den komplexen Typ und Diff-Paket-Struktur bei der Generierung von Code bleiben, wie ich vorgeschlagen habe –

+0

Ja, ich habe es in diff NS und Pakete realisiert. Aber in diesem Fall können Sie das Objekt nicht einfach an die nächste Ebene übergeben, da es als anderer Typ behandelt wird und Sie alle Eigenschaften unästhetisch auf das gleiche Objekt vom richtigen Paket kopieren müssen. Erwähnen Sie keine Dinge, wenn Sie ComplexType später bearbeiten möchten. – dizzi

Verwandte Themen