WS XSD Beispiel

Generic1

Top Contributor
Hallo,

kenn jemand ein "kleines" WS- Beispiel im Netz, wo man sich ansehen kann, wie das mit den XSD's funktioniert.
Mir ist nicht ganz klar, wozu ich die XSD's benötige, ich mache immer ein Code- first, vielleicht liegts an dem.
Mit den XSD's definiere ich ja Schemas, auf die dann in der WSDL referenziert wird.
Wäre super wenn das mit den XSD'd jemand erklären könnte.
Vielen Dank,
lg
 
G

gman

Gast
Hi,

über die Webservices werden ja nur XML-Nachrichten verschickt, also musst du deine Java-Objekt in XML-Dateien
umwandeln -> Jaxb. Damit jaxb weiß wie es die Objekte in XML-Dateien umwandeln (marshallen) kann, braucht es
ein XSD-Schema.
Das Schema kann man aber auch glaube ich direkt mit Annotationen in den entsprechenden Java-Klassen
beschreiben. Aber der einfachere Ansatz ist die Erstellung des XSD-Schemas und dann die Generierung der
Java-Klassen (mit "xjc" aus dem JDK).

Ich hoffe ich konnte dir ein bischen weiter helfen.
 

Generic1

Top Contributor
Gibts irgendwo ein kleines Beispiel?
Ich weiß da nicht genau, wie ich da anfangen soll,
Ich schreib ja zuerst den Code und mach dann die WSDL.
 
G

gman

Gast
Hm, ich kenne jetzt grad auch kein Tutorial. Such doch mal nach "wsdl code first" oder sowas.
 

Generic1

Top Contributor
Also ganz versteh ichs immer noch nicht,
Wenn ich das in Code first mach, dann muss ich zuerst den code schreiben, dann die XSD's und dann die WSDL z.B.: von Eclipse erstellen lassen? Oder iwe macht man das?
lg
 

Niki

Top Contributor
schau dir das spring-ws tutorial an, da wird soweit ich weiß ein contract first ws erstellt. generell wird dieser ansatz bevorzugt und auch empfohlen
 

Generic1

Top Contributor
Was ich noch immer nicht versteh is, schreibt man bei Contract First neben der WSDL die XSD auch selber. Das ist ja dann eine ziemliche Arbeit, oder?
Einfacher geht sicher mit Code- first, das sind 3 Klicks in Eclipse.
lg
 

mvitz

Top Contributor
Eigentlich schreibt man bei Contract-First nur die WSDL selber (die enthält dann aber auch ne XSD).

Da das schreiben von WSDL so kompliziert ist, geht Spring-WS den Weg, direkt eine XSD schreiben zu lassen und aus dieser dann WSDL und Code zu generieren.

Natürlich ist das ein wenig mehr Aufwand als der Code-First Ansatz, dafür hat man mehr Kontrolle über die Schnittstelle. Änderst du etwas an der Java-Klasse, z.B. das ändern einer Methodensignatur, so ändert sich deine WSDL, also auch deine Schnittstelle, was dazu führen kann, dass Clients deiner Schnittstelle nicht mehr funktionieren.

Eine XSD zu schreiben ist allerdings, auch nicht so kompliziert.
 

Generic1

Top Contributor
OK, wenn man sich jetzt diese WSDL ansieht, da ist die XSD schon enthalten,
da wird ein XSD- Element "area" und ein XSD- Element "parameters" erstellt und dann in "wsdl:part" verwendet.
D.h. also, ich brauche für einen WebService bzw. eine WSDL immer ein Schema (XSD) - ich komm also ohne gar nicht aus und ich brauche die XSD's für wsdl:part - kann man das so stehenlassen?
lg

Code:
 <wsdl:types>
    <xsd:schema targetNamespace="http://tempuri.org/AreaService/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <xsd:element name="area" type="xsd:float"/>
      <xsd:element name="parameters" type="tns:dimensions"/>
      <xsd:complexType name="dimensions">
      	<xsd:sequence>
      		<xsd:element name="width" type="xsd:float"></xsd:element>
      		<xsd:element name="height" type="xsd:float"></xsd:element>
      	</xsd:sequence>
      </xsd:complexType>

    </xsd:schema>
  </wsdl:types>
  <wsdl:message name="CalculateRectAreaResponse">
    <wsdl:part element="tns:area" name="area"/>
  </wsdl:message>
  <wsdl:message name="CalculateRectAreaRequest">
    <wsdl:part element="tns:parameters" name="parameters"/>
  </wsdl:message>
  <wsdl:portType 
...
 
Zuletzt bearbeitet:

mvitz

Top Contributor
Ja, denn du musst über ein XML Schema spezifizieren, wie die Daten, die du sendest/empfängst eben aussehen und das macht man halt per XSD.
 
S

Sym

Gast
Eigentlich schreibt man bei Contract-First nur die WSDL selber (die enthält dann aber auch ne XSD).

Da das schreiben von WSDL so kompliziert ist, geht Spring-WS den Weg, direkt eine XSD schreiben zu lassen und aus dieser dann WSDL und Code zu generieren.

Natürlich ist das ein wenig mehr Aufwand als der Code-First Ansatz, dafür hat man mehr Kontrolle über die Schnittstelle. Änderst du etwas an der Java-Klasse, z.B. das ändern einer Methodensignatur, so ändert sich deine WSDL, also auch deine Schnittstelle, was dazu führen kann, dass Clients deiner Schnittstelle nicht mehr funktionieren.

Eine XSD zu schreiben ist allerdings, auch nicht so kompliziert.
Ich suchte gerade nach einer Problemhilfe, als ich dies hier lesen konnte.

Natürlich ist das Definieren einer XSD synonym mit dem Definieren einer WSDL und beides entspricht dem Contract-First-Charakter. :)

Oder kannst Du eine Literaturangabe machen, die bestätigt, dass Contract-First immer WSDL-First bedeutet?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Webservice mit Axis, Hello World Beispiel SOA 2

Ähnliche Java Themen

Neue Themen


Oben