Trennung von Daten und WebService und Wiederverwendung der Daten

  • Themenstarter Themenstarter earthquake
  • Beginndatum Beginndatum
E

earthquake

Gast
Hallo,

ich muss ein System umsetzen das aus mehreren Anwendungen, die zum Teil das gleiche Datenmodell verwenden, besteht. Als Schnittstellen zwischen den Anwendungen des Systems, aber auch nach außen, sollen WebServices dienen.

Die Daten sind zu einem Großteil in Form von XML-Schemata bereits von mir modelliert worden. Ich würde jetzt für meine Anwendungen WSDLs erstellen, die die XML-Schemata verwenden und danach per wsimport (JAX-WS) die Java-Skeletons erzeugen. Dies hat aber mehrere Nachteile:

1. Für die Daten werden die Klassen für jede Anwendung neu erzeugt
2. Wenn ich Änderungen am Datenmodell durchführe (Persistenz, ...) werden die Änderungen bei Änderungen der WSDL und erneuter Verwendung wsimport überschrieben.


Habt ihr Vorschläge wie ich diese Nachteile umgehen kann gibt es hierfür Strategien?

Ich bin am Überlegen vielleicht die ganze tatsächliche Datenverwaltung auszulagern und ein gemeinsames Datenmodell zu implementieren. In den generierten Skeleton-Klassen wird dann auf das gemeinsame Datenmodell gemappt.
 
Nachdem niemand geantwortet hat, habe ich mir folgende Strategie überlegt. Vielleicht hat jemand Verbesserungsvorschläge oder kann die Strategie ebenfalls nutzen.

1. Erstelle XML-Schema Datei für das Datenmodell
2. Generiere per - "xjc -d zielverzeichnis -p mein.zielpackage xsd-datei" die Java-Klassen
3. Erstelle eine WSDL die, für die Daten die in den XSD modellierten Datentypen verwendet
4. Erstelle ein JAXB-Binding File

Code:
<jaxb:bindings version="1.0" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    xmlns:ext="http://java.sun.com/xml/ns/jaxb/xjc"
    xmlns:mt="namespace des unter Schritt 1 erstellten Typs">
    <jaxb:bindings schemaLocation="Pfad zur XSD die in 1 erstellt wurde" namespace="namespace aus 1" node="/*">
    	<jaxb:bindings scd="~mt:MeinTyp">
        	<jaxb:class ref="mein.zielpackage.MeinTyp"/>
    	</jaxb:bindings>
    </jaxb:bindings>
</jaxb:bindings>

5. Erzeuge das Service-Skeleton etc. per "wsimport -Xnocompile -b jaxb_bindings.xml -s src/ Meine.wsdl
 

Neue Themen


Zurück
Oben