Ich möchte denselben ComplexType in zwei verschiedenen WSDLs verwenden. Wie definiere und schließe ich diese ComplexTypes ein, damit ich sie in beiden WSDLs verwenden kann? (Und praktisch bei Java werden sie auf das gleiche Paket/Datentyp generiert)Verwenden Sie denselben ComplexType in verschiedenen WSDL-Dateien
0
A
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
Verwandte Themen
- 1. Verweise auf denselben Tabellennamen in verschiedenen Schemas
- 2. WCF: Sollen alle Datenkontrakte denselben Namespace verwenden?
- 3. MVC UpdateModel ComplexType
- 4. Wie verwende ich denselben Validator in zwei verschiedenen Modellen
- 5. Verwenden Sie ein Objekt in verschiedenen Controllern
- 6. update document.getElementById für denselben ID-Namen in verschiedenen div
- 7. Prozesse verwenden unterschiedliche IPs für denselben Hostnamen
- 8. C++: Wie verwende ich denselben Datentyp mit zwei verschiedenen Namen in zwei verschiedenen überladenen Funktionen?
- 9. Mehrere Kontrollkästchen, die denselben Namen verwenden
- 10. Verwenden Sie denselben PGP-Schlüssel auf mehreren Servern?
- 11. Beschränken complexType mit Attributen in XSD?
- 12. Zugriff auf denselben ehcache aus 2 verschiedenen Kriegsdateien
- 13. Können zwei Anwendungen denselben WCF NetTcpBinding-Anschluss verwenden, wenn sie unterschiedliche Endpunktadressen verwenden?
- 14. Können Threads denselben Client-Socket verwenden?
- 15. Projekt mit zwei verschiedenen DLLs, die denselben Namen haben
- 16. PHP sprintf - mehrmals denselben Wert verwenden?
- 17. Kann ich denselben Lizenzschlüssel auf mehreren Websites verwenden? JW Player
- 18. Entity Framework GroupBy ein Objekt oder ComplexType
- 19. So verwenden Sie mehrere Backend-Listener in verschiedenen Thread-Gruppen
- 20. Verwenden Sie die Schnittstelle mit verschiedenen Namespaces in Typoskript
- 21. TypeScript, verwenden Sie die gleiche Funktion in verschiedenen Phaser.States
- 22. xsd: complexType mit Kindern, Attribute und Einschränkungen
- 23. Axis Java zu wsdl und complexType Liste
- 24. Verwenden der Winkelkomponentenführung in verschiedenen Modulen
- 25. Weisen Sie mehreren Variablen denselben Wert zu
- 26. Nicht in der Lage, denselben Namen für Azure Key Vault in verschiedenen Subscription
- 27. So richten Sie Duplikate in denselben Zeilen in Excel ein
- 28. Wie @DbLookups in verschiedenen Datenbank verwenden
- 29. XML-Schema: Einen Standardwert für einen complexType festlegen?
- 30. ggplot2: Wie man dieselben Farben in verschiedenen Plots für denselben Faktor verwendet
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
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 –
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